2019.09.27考试报告

考试心态又炸了,就像达哥那套周任飞一样,T1调到手抖,T2暴力打错没时间拍,T3测试点分治把自己给分治懵了,最后只拿到了链的24分

T1

做过此类题的可以很容易想到差分,复杂度O(nq),显然是过不去的。

所以要优化差分,我们发现差分长这样:|

所以便可以分别维护两个差分,递推出当前点的差分,复杂度O(n^2)。

注意数组开2倍

T2

数据范围n<=30显然是道搜索题,加上记忆化可以拿到65分。

用hash存储状态即可。题解说状态数最大值是Fibonacci前n+1项和,然而我不会证。

T3

性质1:操作之间无交集

性质2:前后颜色一样的一定不反转,不一样的一定反转。

性质3: 对于一个操作的边集S,路径条数为奇数点个数/2,路径和为|S|。

首先用一个二元组(c1,c2)代表奇数点个数为c1,路径和为c2。

先考虑子树的合并:

设x为当前节点,y为x的儿子

设w0/1为子树中伸/不伸上来一条边的二元组。

初始化:

w0=(0,0),w1=(INF,INF);

w0=min(w0+f[y][0],w1+f[y][1]);

w1=min(w1+f[y][0],w0+f[y][1]);

然后考虑更新x的值

f[x][0]代表x头上不反转,1代表反转。

f[x][0]=min((w1.c1+1,w1.c2),w0);

f[x][1]=min((w1.c1,w1.c2+1),(w0.c1+1,w0.c2+1));

如果x头上的边是一定的,那就把不合法的赋值成INF即可

原文地址:https://www.cnblogs.com/AthosD/p/11601882.html