套路小总结

区间mex:

枚举mex,check区间

在区间内找一个长度为k的段,使段内最小值最大:

枚举这个最小值,让区间内比这个值大的为地方为1否则为0,线段树维护是否有长度不小于k的连续段

最大值最小,最小值最大

二分答案+check

双端队列优化01bfs

0从队头进队,1从队尾进队,如果一个点被访问过直接标记并不再进队

a -> b b -> c 问题

考虑可以建图,形似图论,也可以处理成每个位置有两个属性ab,要求相邻两位置至少有一个属性相同,并且连续三个位置某个属性不能一样

连边考虑对于一个位置(a,b) 连一条a->b的边, 相当于每一次选择 ,都是一种强制转换

每个位置选定一个值,值不重复,并且这个值可能同时是多个位置的备选项

二分图匹配

二维dp f i , j f_{i,j} fi,j 不满足可以二分 三分

考虑是否满足决策单调性,此时不关心值之间的单调性,只关心靠后的最小值永远不会被靠前的最大值替代,及靠前的较劣位置一定没用

线性dp总个数一定记为n,m个人,不关注每个人分到的具体个数只关心相对差距

可以考虑添加相同的一段人同时给”1“,然后具体的分配相当于是已经有的 k k k 个人每个人多同时多一个,这样相对不变

计数区间dp避免重复:

可以钦定分割的位置所选的区间为下属的第一个整体来避免重复

树形dp 子节点中至少有一个 1 类型点

f [ x ] [ o p ] = ∑ m i n ( f [ y ] [ 0 ] , f [ y ] [ 1 ] ) f[x][op]=\sum min(f[y][0],f[y][1]) f[x][op]=min(f[y][0],f[y][1])
v a l = m i n ( v a l , ( f [ y ] [ 1 ] − m i n ( f [ y ] [ 0 ] , f [ y ] [ 1 ] ) ) val=min(val,(f[y][1]-min(f[y][0],f[y][1])) val=min(val,(f[y][1]min(f[y][0],f[y][1]))
val 相当于是:最少要补上的差价
最后 f [ x ] [ o p ] + = v a l f[x][op]+=val f[x][op]+=val

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值