csp-s模拟95
近两场开始文件评测,感觉和平时真不太一样。
考试时间是多了$10min$,但处理文件、输入输出什么的杂事也是忙来忙去。这可能也最像真实的$csps$了,稍有疏忽可能都是致命伤。
T1、T2挂的对拍全打空了,最后$15$分钟回头想到我的T1写的式子中间量会爆$long$ $long$,当时就想着打高精了,结果还没弄出来。事后发现化简式子就可过。
这样下来三道题都只有暴力分了。
T1:
先考虑不向下取整。对于分子,可以等差数列求和。向下取整的话就再减去每个分子模$p$的和。这一部分实际上是若干个循环节(共$\frac{p}{gcd(p,q)}$个),每个循环节是一个等差数列。
T2:
贪心。设$a$为格式化前的容量,$b$为格式化后的容量。若只存在$a>b$的情况,我们按$a$增序排列一定最优(可用空闲容量一定不减,考虑先处理需求小的)。考虑此过程的逆过程,即:$a$从大到小地选取,并且每次格式化后容量减小,这其实和$a>b$的情况是一样的。所以$a>b$的话就以$b$降序排列。两者都有的情况,先做$a<b$使可用容量增多,再做$a>b$。
T3:
先考虑没有第一种人的情况。只要确认一个人真假顺推回来检查是否冲突即可。
难点在于第一种人的真假。突破口也在于第一种人。取值相同的第一种人是共生关系,取值不同则是互斥关系。根据这个我们可以枚举有多少人说了真话,这样可以直接确认第一种人的真假,再退回去即可得到全部的真假。这样$O(N^2)$。我们只关心每种情况下真假的人数,预处理每个第一种人为真/假时的真/假的人数,即可$O(1)$ $check$。