T1:
求$sum limits_{i=0}^p lfloor frac{iq}{p}
floor$的值。
发现从0枚举很鸡肋。
egin{array}{ll} 2ans &=& 2sum limits_{i=1}^p lfloor frac{iq}{p}
floor \ &=& sum limits_{i=1}^p lfloor frac{iq}{p}
floor + lfloor frac{(p-i)q}{p}
floor \ &=& (p+1)q - p + sum limits_{i=1}^p [p|iq] \ &=& (p+1)q - p + gcd(p,q) end{array}
时间复杂度$O(Tlogp)$。
T2:
考虑贪心。
格式化顺序一定是先更新增大的,再更新不变的,再更新减小的。
对于容量增大的硬盘,把格式化前容量小的在放在前面一定更优。
因为如果交换,答案一定不会更优。
对于容量减小的硬盘,可以看成逆过程,把格式化后容量大的放在前面。
排个序直接求。
时间复杂度$O(nlogn)$。
T3:
加号两侧状态相同,减号两侧状态不同。
加号合并,减号连边。
没有钱号时特判即可。
有钱号时,每个钱号代表一些点,合并$k$值相同的点。
分类讨论,判断即可。
时间复杂度$O(n)$。