模拟测试20191031

水题爆炸,$rp++$

$T1:简单计算$

化柿子就好了

$$sumlimits_{i=0}^{p} left lfloor frac{iq}{p} ight floor$$

$$=sumlimits_{i=0}^{left lfloor  frac {p}{2} ight floor} left lfloor frac{iq}{p} ight floor+left lfloor frac{(p-i)q}{p} ight floor$$

$$=q imes left lceil frac{p}{2} ight ceil - sumlimits_{i=0}^{left lfloor  frac{p}{2} ight floor} [iq mod p!=0]$$

$$=(q-1) imes left lceil frac {p}{2} ight ceil+ left lceil frac {gcd(p,q)}{2} ight ceil$$

 

$T2:格式化$

$1,$如果只有内存增大那么显然我们可以按照原内存从小到大排序然后直接扫一遍出答案

$2,$如果只有内存减小那么我们可以考虑按时间反向考虑,这样就转化成了上面的情况

然后我们发现这种情况应该按修改后的权值从大到小排序然后直接扫

所以我们综合两种算法,先让内存增大,再让内存减小

排序扫一遍就好了

 

$T3:真相$

如果只有'$+$''$-$'那么答案直接扫一遍就能出

考虑'$$$'的意义,他把'$+$''$-$'分成了许多段,而每一段在确定了一个位置之后对答案的贡献是确定的

我们让一个'$ $ $ $x$'代表一个区间

处理出来$x=[1,n]$时说真话的人数,就可以$O(1)$判断是否合法了

 

原文地址:https://www.cnblogs.com/mikufun-hzoi-cpp/p/11770848.html