做题好慢啊。
2日
P3354 [IOI2005]Riv 河流
树形背包 DP。
设
复杂度
3日
AcWing277 饼干
简单 DP。
先贪心地让怨气值大的在前,则分配饼干个数单调不增,设
简化状态,强制让最后一个人只得到 1 个,其他状态
接下来只要考虑最后有多少个人同样分到 1 个就行。
复杂度
P6564 [POI2007] 堆积木KLO
CDQ,BIT,LIS 等均可。
满足后两个条件时一定满足第一个条件,转化为二维偏序直接上 CDQ。
因为一个
P2175 小Z的游戏分队
每个人向不信任的人连边,形成若干个二分图。
以每个二分图两边人数差为权值,背包 DP 某个答案是否能出现。
4日
P1800 software
二分 + 背包 DP。
明显答案是单调的,考虑怎么判定合法。
在时间限制内,每个人固定了任务一的量,就能确定任务二的量,于是将一个人拆成 m 个物品。
背包 DP 出 n 个人完成任务一时最多能够完成的任务二的量即可。
U139384 异或和
FWT。
设
将选取最多的,转化为删去最少的使得异或和为零(前者)。
设所有数异或和为
那么只要处理前
丧心病狂的出题人 AzusaCat 竟然卡掉两个 log 的做法!!!
考虑优化 iFWT,因为每次只需要
每次只要
P3047 [USACO12FEB]Nearby Cows G
换根 DP。
先处理出
换根,每次将 u 的一个子树 v 贡献减去,分成两个独立的树,再由 u 转移到 v 即可。
换根 DP 的特点是能够快速地将子树分离、改变父子关系后合并
5日
P4161 [SCOI2009]游戏
数论,背包 DP。
容易发现一个排列可以看成几个环,而变换回来的步数是这些环的
问题转化成:n 拆成若干个数的和,这些数的
将
那么 DP 每个质数不同质数的情况下的方案数,转化成完全背包。
设
因为无法处理 1,而 1 不影响
P6280 [USACO20OPEN]Exercise G
和上题一样,只不过是求
每次 DP 时是一个新的素数,所以直接乘以上一个状态,
P4342 [IOI1998]Polygon
区间 DP。
题目唬人,但是容易看出来每次断成链后是个区间 DP,枚举断点后直接做,
然后就 80 分 qwq。因为有乘法,而每个数可能为负,负负得正。
于是同时维护最大值和最小值。
P4158 [SCOI2009]粉刷匠
简单 DP + 背包 DP。
问题在于如何分配粉刷次数,先对于每一行单独处理,将不同粉刷次数的答案化为物品。
设
然后对于
P1092 虫食算
搜索。
正解好像是高斯消元,不会。
从低位到高位开始搜,当三位中有两个确定时就可以推出第三个。
还有一个剪枝,每确定一列,就扫一遍后面没搜的列,看在进不进位的情况下是否都矛盾。
P3951 小凯的疑惑
数论。
打表,发现
证明:设无法表示出来的为 x。
当 x 最大时,
P5092 [USACO04OPEN]Cube Stacking
并查集。
在
P2894 [USACO08FEB]Hotel G
线段树。
维护每个区间的最长连续区间和左端开头、右端开头的最长连续区间。
二分最早的 r 使得
query 时直接左区间优先即可,
11日
P7076 动物园
贪心(?),CSP2020 T2。
将所有动物或起来,对于每一位,没有饲料或者有饲料并且已经购买,该位可以选或不选;有饲料且未购买,只能不选。
把每一位的答案乘一下,坑点是开了 unsigned long long 也见祖宗,需要特判
12日
P7077 函数调用
拓扑 DP,CSP2020 T3。
考场上写的线段树暴力,好歹也是个不小的数据结构啊怎么才给 30 分!其实是不错的题。
可以发现单点加值,整体乘值,所有操作形成若干个 DAG,只要求最终序列,于是方向转向图论。
设所有乘法之积为
接下来考虑单点加和其之后的变化。每个单点加的贡献是后面所有乘法之积。
那么先预处理每个点的及后面乘法的积
再在 DAG 里倒着 DP,
17日
P7078 贪吃蛇
博弈论+单调性优化,CSP2020 T4。
见博客题解。
20日
CF455D Serega and Fun
平衡树或者分块。
对于第一个操作可以用一棵 splay 轻松维护,称其为序列树。
因为值域
每次询问一个区间要求在某一棵 splay 里寻找区间内最靠左和最靠右的点,可以通过在序列树上查 rank 来二分,单次
S2OJ#41 新斯诺克
归并排序就够了。
可以让所有数减去 m,然后做前缀和,满足
二维偏序,可以做到
21日
S2OJ#42 方舟连接
区间 DP + 四边形不等式优化。
把路径看成一棵树,然后发现这是两两相邻子树合并,转化成一个序列就是区间 DP。
S2OJ#60 A Simple Math Problem VI
小数据裸完全背包。大数据特殊性质
22日
P4093 [HEOI2016/TJOI2016]序列
CDQ 分治。
设
CDQ 分治,左右分别按上边对应的属性排序;优先递归处理左区间。复杂度
26日
CF571D Campus
转化成树上问题 + 树状数组上二分技巧。
27日
GYM102331B Bitwise Xor
简单 DP + 01-trie。
2日
P3354 [IOI2005]Riv 河流
树形背包 DP。
设
复杂度
3日
AcWing277 饼干
简单 DP。
先贪心地让怨气值大的在前,则分配饼干个数单调不增,设
简化状态,强制让最后一个人只得到 1 个,其他状态
接下来只要考虑最后有多少个人同样分到 1 个就行。
复杂度
P6564 [POI2007] 堆积木KLO
CDQ,BIT,LIS 等均可。
满足后两个条件时一定满足第一个条件,转化为二维偏序直接上 CDQ。
因为一个
P2175 小Z的游戏分队
每个人向不信任的人连边,形成若干个二分图。
以每个二分图两边人数差为权值,背包 DP 某个答案是否能出现。
4日
P1800 software
二分 + 背包 DP。
明显答案是单调的,考虑怎么判定合法。
在时间限制内,每个人固定了任务一的量,就能确定任务二的量,于是将一个人拆成 m 个物品。
背包 DP 出 n 个人完成任务一时最多能够完成的任务二的量即可。
U139384 异或和
FWT。
设
将选取最多的,转化为删去最少的使得异或和为零(前者)。
设所有数异或和为
那么只要处理前
丧心病狂的出题人
考虑优化 iFWT,因为每次只需要
每次只要
P3047 [USACO12FEB]Nearby Cows G
换根 DP。
先处理出
换根,每次将 u 的一个子树 v 贡献减去,分成两个独立的树,再由 u 转移到 v 即可。
换根 DP 的特点是能够快速地将子树分离、改变父子关系后合并
5日
P4161 [SCOI2009]游戏
数论,背包 DP。
容易发现一个排列可以看成几个环,而变换回来的步数是这些环的
问题转化成:n 拆成若干个数的和,这些数的
将
那么 DP 每个质数不同质数的情况下的方案数,转化成完全背包。
设
因为无法处理 1,而 1 不影响
P6280 [USACO20OPEN]Exercise G
和上题一样,只不过是求
每次 DP 时是一个新的素数,所以直接乘以上一个状态,
P4342 [IOI1998]Polygon
区间 DP。
题目唬人,但是容易看出来每次断成链后是个区间 DP,枚举断点后直接做,
然后就 80 分 qwq。因为有乘法,而每个数可能为负,负负得正。
于是同时维护最大值和最小值。
P4158 [SCOI2009]粉刷匠
简单 DP + 背包 DP。
问题在于如何分配粉刷次数,先对于每一行单独处理,将不同粉刷次数的答案化为物品。
设
然后对于
P1092 虫食算
搜索。
正解好像是高斯消元,不会。
从低位到高位开始搜,当三位中有两个确定时就可以推出第三个。
还有一个剪枝,每确定一列,就扫一遍后面没搜的列,看在进不进位的情况下是否都矛盾。
P3951 小凯的疑惑
数论。
打表,发现
证明:设无法表示出来的为 x。
当 x 最大时,
P5092 [USACO04OPEN]Cube Stacking
并查集。
在
P2894 [USACO08FEB]Hotel G
线段树。
维护每个区间的最长连续区间和左端开头、右端开头的最长连续区间。
二分最早的 r 使得
query 时直接左区间优先即可,
11日
P7076 动物园
贪心(?),CSP2020 T2。
将所有动物或起来,对于每一位,没有饲料或者有饲料并且已经购买,该位可以选或不选;有饲料且未购买,只能不选。
把每一位的答案乘一下,坑点是开了 unsigned long long 也见祖宗,需要特判
12日
P7077 函数调用
拓扑 DP,CSP2020 T3。
考场上写的线段树暴力,好歹也是个不小的数据结构啊怎么才给 30 分!其实是不错的题。
可以发现单点加值,整体乘值,所有操作形成若干个 DAG,只要求最终序列,于是方向转向图论。
设所有乘法之积为
接下来考虑单点加和其之后的变化。每个单点加的贡献是后面所有乘法之积。
那么先预处理每个点的及后面乘法的积
再在 DAG 里倒着 DP,
17日
P7078 贪吃蛇
博弈论+单调性优化,CSP2020 T4。
见博客题解。
20日
CF455D Serega and Fun
平衡树或者分块。
对于第一个操作可以用一棵 splay 轻松维护,称其为序列树。
因为值域
每次询问一个区间要求在某一棵 splay 里寻找区间内最靠左和最靠右的点,可以通过在序列树上查 rank 来二分,单次
S2OJ#41 新斯诺克
归并排序就够了。
可以让所有数减去 m,然后做前缀和,满足
二维偏序,可以做到
21日
S2OJ#42 方舟连接
区间 DP + 四边形不等式优化。
把路径看成一棵树,然后发现这是两两相邻子树合并,转化成一个序列就是区间 DP。
S2OJ#60 A Simple Math Problem VI
小数据裸完全背包。大数据特殊性质
22日
P4093 [HEOI2016/TJOI2016]序列
CDQ 分治。
设
CDQ 分治,左右分别按上边对应的属性排序;优先递归处理左区间。复杂度
26日
CF571D Campus
转化成树上问题 + 树状数组上二分技巧。
27日
GYM102331B Bitwise Xor
简单 DP + 01-trie。
28日
S2OJ#61 连续段的期望
二进制优化。
对于一个 01 串:
,每个和为奇数的区间贡献为 ,通过类似差分的技巧扫一遍即可; ,区间内全为 贡献为 ,所有每个连续为 的段贡献为 ; ,反过来想,区间全为 的没有贡献。
记得每一位的答案乘上
29日
S2OJ#52 练习曲
简单 DP。
不修改的话 DP 方程:
修改的话,发现一个点只影响
可以发现
所以每次只要
30日
CF1175E Minimal Segment Cover
倍增。
设
v1.5.2