2020.08.10【省选B组】模拟 总结
爆零,呵呵。
估分:\(30 + 30 + 0 + 0 = 60\)
考场:\(0 + 0 + 0 + 0 = 0\)
刚了一场比赛的\(T1\),最后\(T2\)这种一眼切的题没时间打了。
\(T1\)
刚开始想的是贪,然后打完+对拍,然后证伪。
后来想到树形\(DP\),没打完。
正解:
可以发现原图点相邻连边可以形成一颗树,考虑树形\(DP\)。
我们设\(f[i][0/1/2]\),\(0\)表示当前点与父亲所在的链还未覆盖的答案,\(1\)表示当前点覆盖但不涉及到父亲的答案,\(2\)表示当前点覆盖并且涉及到父亲与当前点这一条链的答案。
然后转移即可。对于根节点要特判。
\(T2\)
我们发现可以直接加完边再操作,毕竟那些没有加的边不会先询问。
这样就是个裸的倍增了。。。
存\(max,min\),向上跳时的答案,这个点的\(2^j\)的祖先向下跳的答案。
对于每次询问直接\(O(logn)\)求即可。
\(T3\)
这道题原来暴力可以\(DP\)转。
我们先得到最大的操作数(就是把\(S\)变成\(T\)后并做极限次三连)
我们可以设\(DP\):\(f[i][j][k]\)表示有\(i\)个还要\(1\)次才能成为\(T\),有\(j\)个要两次的有几个,\(k\)表示当前操作了\(k\)次。
然后转移方程式很简单,而答案就是\(∑f[0][0][i]\)。
而这个\(DP\)显然可以矩乘,多设一格求和即可。
\(T4\)
一句话:难想的暴力。
暴枚每种积木放哪一层,然后暴枚每种积木上方的积木种类。
然后流网络流来判断是否合法(符合暴枚以及积木能放完)。
最后用一个\(DP\)来求出当前积木塔移走的方案数。
设\(f[S]\)表示当前剩下积木种类的状态数,转移显然。
总结
以后再也不会死刚一题了。
简单的题先打先得分,这样才有保证啊。。。
有些题没有想象中那么简单的。。。