摘要: 单调队列优化 做动态规划时常常会见到形如这样的转移方程:$f[i] = optimize\{g(j)|L[i] ≤ j using namespace std; const int N=1000000+5,M=2e5+5,inf=0x3f3f3f3f,P=19650827; int n,m,a[N] 阅读全文
posted @ 2019-08-21 21:51 委屈的咸鱼鱼鱼鱼 阅读(95) 评论(0) 推荐(0) 编辑
摘要: "[BZOJ2427]" "[luoguP2515]" 每个人都至多有一个依赖点 所以有可能成环 先tarjan缩点并处理出环的信息wei va 再将缩点后的图重新连接 将入度为0的点和0点连接 这样就构成了一颗树 由此做树形dp 只有父亲节点选了它的儿子才能选 所以在访问进去时先把wei[u]~m 阅读全文
posted @ 2019-08-21 21:51 委屈的咸鱼鱼鱼鱼 阅读(92) 评论(0) 推荐(0) 编辑
摘要: "[BZOJ1296]" "[luoguP4158]" 第一眼没看出来emmm... 所以就先想只有一条木板怎么做 即$f[i][j]$表示前$i$个格子刷$j$次最多能刷正确多少个格子 然后很容易就能想到n条木板就可以将其进行01背包来算最多能刷正确有多少个格子 因为每个格子最多刷一次 所以枚举$ 阅读全文
posted @ 2019-08-21 21:51 委屈的咸鱼鱼鱼鱼 阅读(206) 评论(0) 推荐(0) 编辑