csp-s模拟95
T1:
\[ \begin{align}
& \sum _{i=0}^p \lfloor \frac{iq}{p} \rfloor \\
= & \sum_{i=0}^p \frac{iq-iq \% p}{p} \\
= & \frac{ q*\sum_{i=0}^p i - \sum_{i=0}^p iq \% p }{p} \\
= & \frac{(p+1)q}{2} - \frac{ \frac{p}{gcd(p,q)}*(p-gcd(p,q))*gcd(p,q) }{2p} \\
= & \frac{(p+1)q}{2} - \frac{ (p-gcd(p,q)) }{2} \\
\end{align} \]
T2:
设格式化前的容量为a,格式化后的容量为b
当a <= b时,贪心的将a从小到大排序依次格式化一定最优
当a > b时,考虑若原剩余容量为C,那么格式化一个硬盘i,就是:
\(if C \geq a_i C \to C-(a_i-b_i)\)
我们可以设\(C'=c-(a_i-b_i)\),那么式子就变为了:
\(if C'+(a_i-b_i) \geq a_i C'+(a_i-b_i) \to C'\)
移项:\(if C' \geq b_i C'+(a_i-b_i) \to C'\)
发现式子和a<=b时的一样,可以按b从大到小排序贪心
T3:
考试时一看题目,2-SAT!!!
然而并不能处理第一种话
又想到侦探推理,然而数据范围又这么大……
(我们钦定说第一种话的人是大佬 orz)
考虑实际上这个环是被大佬切成了好多段,每段中只需知道大佬的真假就可以推出所以人的真假
考虑枚举说真话的人的个数,然后check
发现复杂度是\(O(n^2)\)的,不行
考虑每次重推每个大佬其实挺蠢的,预处理每个大佬说真话/假话时控制的真话/假话的人就好了