爆零,呵呵。
估分:(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])表示当前剩下积木种类的状态数,转移显然。
总结
以后再也不会死刚一题了。
简单的题先打先得分,这样才有保证啊。。。
有些题没有想象中那么简单的。。。