DP优化&博弈
\text\ By\text\ Myself
CF150E/P4292
长链剖分优化DP
二分答案,然后就有一个关于深度的DP,直接转移是
考虑每次先继承长儿子的DP值,然后再暴力合并轻儿子,因为每个点只会在第一条轻边的地方合并。
淀粉质+BFS+单调队列
代码写起来较复杂。
淀粉质后,BFS连通块根节点的每个子树,因为深度随BFS序只增不减,可以用单调队列来维护区间最大值。但是单调队列有个
于是将儿子按
P6773
https://www.luogu.com.cn/paste/4aie2q5n
key observation: 如果
考虑DP设
记
直接做是
具体的,以DP的第二维为下标,即深度。合并时维护对于
//sx的初值为0,sy的初值为g[v][dep[u]]
inline int merge(int x,int y,int l,int r,ll &sx,ll &sy){
if(!x&&!y) return 0;
if(!x){
sy=(sy+f[y])%mod;
f[y]=f[y]*sx%mod;
tag[y]=tag[y]*sx%mod;
return y;
}
if(!y){
sx=(sx+f[x])%mod;
f[x]=f[x]*sy%mod;
tag[x]=tag[x]*sy%mod;
return x;
}
if(l==r){
ll u=f[x],v=f[y];
sy=(sy+v)%mod;
f[x]=(f[x]*sy+f[y]*sx)%mod;
sx=(sx+u)%mod;
return x;
}
RI mid=l+r>>1;
down(x);down(y);
lc[x]=merge(lc[x],lc[y],l,mid,sx,sy);
rc[x]=merge(rc[x],rc[y],mid+1,r,sx,sy);
up(x);
return x;
}
AT_agc023_d
https://www.luogu.com.cn/paste/gb65z5c1
看起来很神仙的博弈题,不敢相信自己做出来了。
其实也不难,只要想到点上就可以秒掉。
从最外围的两个点开始考虑,假如只剩它们两个点
于是,
重复以上操作,直到
AT_arc137_c
经典博弈结论:
- 若一个状态
S 能到达x ,且对于x 能到达的任意y 都有S 能到达y ,那么S 为必胜状态。
证明:
若
若
显然对于
剩下的判断奇偶性即可。
\text\ By\text\ Emissary
AT_agc002_e
将
记
结论:
证明:如果
所以找到右上靠边界的点,判断其往右和往上的奇偶性。
P6189
拆分数经典求法。
考虑根号分治,对于
最后将二者合并即可。
\text\ By\text\ Oscar
P8290
喵喵题。
首先考虑暴力,枚举钦定的最小值
接着考虑优化掉
对于一段的答案,它是一个
CF1866I
随便手玩一下,发现每行除关键点最多有一个为
\text\ By\text\ tytyty
P4055
二分图博弈板子。
结论:先手必胜当且仅当起点为二分图最大匹配的必经点。
证明就不写了。
求必经点:
跑个最大匹配,首先不在可行解中的点肯定不是,然后发现可以被这些点代替的点也不是。
于是,在残余网络中从源点沿流量
\text\ By\text\ Mr.Avalan
CF708E
喵喵题。
首先左右的格子消失互不影响,设
设
但是,这题有一个关键性质:对称性。
设
其中第二个转移运用了对称性,于是:
然后随便前缀和优化一下即可。
理解
运用对称性来解题的想法太妙了!
\text\ By\text\ 0ccdreamer
P6144
首先,这题有个
因为
不同寻常地,按左端点升序排序,设
转移的话有三种情况:
发现可以用线段树简单维护。
AT_agc010_d
容易想到这题和奇偶性有关。
如果
否则先手不能让后手碰到以上情况,所以只能让所有数不会除以一个偶数,然后转换先后手。
这样的话每一次的最优操作是唯一的,照着上面的策略模拟即可,每次所有数至少除以
\text\ By\text\ RY
P7519
有一个显然的DP状态是设
考虑优化状态,因为要满足
理解
看到单增、单减,可以往差分那方面想。
\text\ By\text\ Diwanul
AT_agc010_f
最优策略下,棋子必然往