2020.08.07【省选B组】模拟 总结
今天比赛—————>暴力欢乐赛
估分:\(30 + 0 + 30 + 0 = 60\)
考场:\(30 + 0 + 30 + 0 = 60\)
人家暴力拿满\(rank1\)(* ̄︶ ̄)
其实人家打了我不会打的暴力(* ̄︶ ̄)
\(T1\)
很容易想到将询问分块,然后就可以快速求出每个询问的边集。
此时的问题就在于如何快速求答案。
我们考虑用\(Kosaraju\)算法来计算,由于每个点只会经过一次,所以可以笼统地认为一次求答案是\(n^2\)的。
但是\(O(T*n^2)\)的时间复杂度仍然会\(TLE\),所以我们考虑\(bitset\)优化(大雾
\(Kosaraju\)算法每个点只会遍历一次,所以我们用\(bitset\)来存储边集,并且在\(dfs\)时用\(bitset\)的自带枚举操作(跑得飞快)
于是乎,这道题就完美(嘿嘿嘿)地解决了。
\(T2\)
这道题我们先考虑树的情况。
可以将题意转化为原图能用链覆盖所有边且链不重的方案数。
如果链的长度为\(1\)代表这条边不为环上边,链的长度大于\(1\)表示在链的两个端点连一条边,成为一个环。
如此我们就可以\(DP\)转移:\(f[x]=h[du[x]]*∏f[son]\)
\(du[x]\)表示\(x\)的度数,\(h[du[x]]\)表示那些链可以相连也可以独立的方案数。
关键在于原图可以为仙人掌,如果环有重边答案为\(0\)。
仙人掌的话我们可以发现环的部分不能有链出现,所以我们把环都删去然后对于每棵树都跑\(DP\)乘起来即为答案。
\(T3\)
这道题嘛,感觉一开始的转化很巧,然后接下来的分类讨论也可以可以的。
对于求特征值为\(K\)的方案数,我们可以转化成求\(<=K\)的减去\(<K\)的
我们的问题就是要求特征值\(<=X\)的方案数。
我们发现,\(<=X\)的可以一视同仁,\(>X\)的同理。
所以问题转化成有\(X\)个\(0\)和\(n-X\)个\(1\),求最后为\(0\)的方案数。
发现如果存在有连续的(\(>=2\))\(0/1\),则最靠近中间数的连续数的值即为最终答案。
所以我们可以枚举最靠近中间数的位置,此时中间的数强制设为\(0,1,0,1...\)这样轮流交换(否则枚举的就不是最靠近的了),我们就知道剩下的数的个数,可以组合数处理答案。
要特判全部是\(0,1,0,1,0,1,0...\)的情况,这样结果也是\(0\)。
\(T4\)
总结
无语了,今天又是\(4\)道题,而且还是\(4\)道神仙题。。。
感觉还是要所有分都竟可能拿到吧,加油了只能(泪奔┭┮﹏┭┮)