水題爆炸,$rp++$算法
化柿子就行了spa
$$\sum\limits_{i=0}^{p} \left \lfloor \frac{iq}{p} \right \rfloor$$排序
$$=\sum\limits_{i=0}^{\left \lfloor \frac {p}{2} \right \rfloor} \left \lfloor \frac{iq}{p} \right \rfloor+\left \lfloor \frac{(p-i)q}{p} \right \rfloor$$內存
$$=q \times \left \lceil \frac{p}{2} \right \rceil - \sum\limits_{i=0}^{\left \lfloor \frac{p}{2} \right \rfloor} [iq \ mod \ p!=0]$$it
$$=(q-1)\times \left \lceil \frac {p}{2} \right \rceil+ \left \lceil \frac {gcd(p,q)}{2} \right \rceil$$gc
$1,$若是隻有內存增大那麼顯然咱們能夠按照原內存從小到大排序而後直接掃一遍出答案im
$2,$若是隻有內存減少那麼咱們能夠考慮按時間反向考慮,這樣就轉化成了上面的狀況時間
而後咱們發現這種狀況應該按修改後的權值從大到小排序而後直接掃time
因此咱們綜合兩種算法,先讓內存增大,再讓內存減少gcd
排序掃一遍就行了
若是隻有'$+$''$-$'那麼答案直接掃一遍就能出
考慮'$\$$'的意義,他把'$+$''$-$'分紅了許多段,而每一段在肯定了一個位置以後對答案的貢獻是肯定的
咱們讓一個'$ \$ $ $x$'表明一個區間
處理出來$x=[1,n]$時說真話的人數,就能夠$O(1)$判斷是否合法了