2 solutions

  • 1
    @ 2023-8-6 22:51:05

    首先变换一下波形的表达式:

    y=asin(πpxq)+bcos(πpxq)=a+b[aa+bsin(πpxq)+ba+bcos(πpxq)]=a+bsin(πpxq+θ)\begin{aligned} y=&a \sin(\frac {\pi px} {q}) + b \cos(\frac {\pi px} {q})\\ =&{\sqrt{a + b}}\big [\frac {a} {\sqrt{a + b}} \sin(\frac {\pi px} {q}) + \frac {b} {\sqrt{a + b}}\cos(\frac {\pi px} {q})\big ]\\ =&\sqrt{a+b} \sin(\frac {\pi px} {q} + \theta) \end{aligned}

    其中 θ=arccos(aa+b)\theta = \arccos (\frac {a} {\sqrt{a + b}}),根据题目的数据范围,只有 0, π4\frac \pi 4π2\frac \pi 2 三种取值。

    sin(πpxq+θ)\sin(\frac {\pi px} {q} + \theta) 的极值点满足 πpxq+θ=π2+kπ\frac {\pi px} {q} + \theta = \frac \pi 2 + k\pi ,其中 kZk \in \mathbf{Z};那么

    x=t+4kq4px= \dfrac {t + 4kq} {4p}

    是极值点,其中 t=(24θπ)t=(2-\frac {4\theta} \pi) 是整数。

    由于 xx 的取值是 [l,r][l, r] 范围内的整数,所以问题转化为求合适的 kk ,使得 t+4kq4p\frac {t + 4kq} {4p} 最接近 [l,r][l, r] 之间的整数;也就是求 kk 在一定范围内时, (t+4kq)(t + 4kq) 在模 4p4p 意义下的最小值和最大值。

    此时,问题已经转化成经典的 Min of Mod of Linear,可以用板子解决。

    Min of Mod of Linear - Library Checker

    Finding minimum residue of a linear function in O(log M) time - Codeforces

    参考实现:记录详情 - Hydro

    Information

    ID
    2
    Time
    1000~3000ms
    Memory
    512MiB
    Difficulty
    10
    Tags
    # Submissions
    8
    Accepted
    3
    Uploaded By