时间安排
7.30-8.00
审题+犯浑,迷迷糊糊地审了题
8.00
开始打代码
8.00-8.50
审题的时候感觉T3不就是个裸的状压,然后就开始猛上,把车写完以后发现我根本就不会把国王加进去
8.50-9.50
回头看T1,很显然的思路去算每个数的贡献,怎么算呢,我想到了一个方法,把这个数抛出去,然后剩下的随便选,乘上这个系数不就行了吗,但明显感觉是错的,如果一种方案同时出现两个1,那我其实只算了1个1的方案,时间复杂度还够枚举一个数量,又因为前面已经算过其中1个1的答案了,简单的容斥思想一下吧,加上刨去2个1的方案即可,不需要加二倍。然后就是想怎么求这个方案数,多重集组合数?可我推不出来…
想到这是dp专场,朝dp想,开始想如何dp,根据求什么设什么的原则,设一个dp数组表示
i
i
i随便分成
j
j
j份的方案数,以前貌似做过这个题吧(虽然我还是想了好久),要么补1,要么全加1,那方程式就推出来了
上机去写的时候,把本上的
j
−
i
j-i
j−i打成
j
−
1
j-1
j−1了(我说为什么我写了个跟递推求组合数一样的式子),样例过不去,调了一会儿改过来了,然后。。循环忘改了。。就越界了。。
9.50-10.30
T2是个树,那不显然树形dp?可我不会维护状态呀,所以直接暴力吧,那个30分不就二进制枚举一下就行了,至于具体怎么实现呢,我以1为根把树提起来,选几个点表示将这个点与它父亲的边断开(有点像七连做的辣椒的思想),然后它父亲就成了它这个子树的根,就可以划分成若干连通块了,然后要同时传递最大值最小值,果断pair类型函数,自己造小数据发现一点bug,循环又写错了…
10.30-11.20
T4瞎搞个最大流大暴力跑去吧…
11.20
我以为快交题了,结果到12.20
11.20-12.00
有始有终!回去磕T3,我还是不会dp呀,但我会写dfs然后打表!但我的表有点拉,过不去6,最多打到5吧,最后拿了20分跑路了
12.00-12.20
摆烂了
赛后反思
分清1和 i i i,Debug的时候不仅改表面的那个错,还要记得看限制条件有没有挂了…