做题记录(Oct.)
10.4
我复活啦。
AT_arc231
b
首先把 \(0\sim A-1\) 放进 \(X\),\(0\sim B-1\) 放进 \(Y\),然后标记一下已经可以异或出来的数,如果有 \(C\) 就不行。
然后给 \(X\) 一个 \(1024\),对每一个还没有异或出来的 \(x<C\),给 \(Y\) 一个 \(1024 + x\),由于其他数都小于 \(1000\),异或了 \(1024+x\) 肯定不会是 \(C\),所以这样就可以了。
c
有解的充要条件是每个区间的 \(l,r\) 分别单调不降,且每个区间的两端没有都被盖住。容易发现每次修改只会影响三个区间,所以直接统计 \(l_i<l_{i-1},r_i<r_{i-1}\) 以及端点没都被覆盖的区间个数即可。
e
非常好 DP。考虑有奇数个逆序对的序列加上有偶数个逆序对的序列数量就是 \(\prod a_i\),那么求出奇减偶就可以求出奇的个数。考虑 \(f_i\) 为考虑了前 \(i\) 位的情况。分讨最后两位的情况,如果两者不相等且可以交换,则这两种情况的序列会互相抵消,所以只考虑不能互换或两者相等。两者相等的贡献为 \(f_{i-2}a_{i-1}\),而二者不能互换则贡献为 \(f_{i-1}(a_i-a_{i-1})\),那么就做完了。
10.5
P3694
状压 DP。
P4161
可以转换成用一堆和不超过 \(n\) 的形如 \(p^k\) 的数能凑出几个数,每个 \(p\) 每次只能用一次。那么直接设 \(f_{i,j}\) 表示考虑到第 \(i\) 个质数,和为 \(j\) 即可。
P3953
判零环好恶心。首先如果有路径满足长度限制且可以到达零环就是 \(-1\)。对于正常情况,先求出每个点的最短路 \(d_i\),然后令 \(f_{i,j}\) 为到第 \(i\) 个点长度为 \(d_i+j\) 的路径个数。注意递推顺序,先按 \(d_i\) 排序,再按只看零权边的拓扑序排序。
10.6
P11310
何题目。根据你惊人的洞察力,发现由于 \(R_i\) 较小,只要找到一个数,使得 \(R_i\) 乘 \(2\) 的次数和 \(R_{i+1}\) 的次数相差大于等于 \(7\) 就可以区分。所以两次询问分别区分 \(123,4,5,6\) 和 \(1,2,3\)。
CF559E*
每个点可以向右或向左形成一个区间,我们令 \(l_i=a_i-b_i,r_i=a_i+b_i\),把每个区间按 \(a_i\) 排序。令 \(f_{i,j}\) 为枚举了前 \(i\) 个区间,所有确定区间最右伸到 \(j\)。新区间向右的新贡献是很好算的,问题是向左的,有可能把以前的一些空填了。利用总区间数小的特点,我们暴力枚举从左边第几个区间转移过来,中间的假装会被新区间完全覆盖,并规定其全部向右即可。
P17626
神秘推式子。
P2619*
wqs 二分板子。
10.7
P4983
wqs 二分 + 斜率优化。
10.9
P6246 & P17319 & P4767 & P10967*
wqs 二分 + 斜率优化。
不用那么在意具体每一段里的邮局位置是不是在最中间,随便放最优的自然会在中间,所以直接列式做斜优会好做一些,但是还是需要两个斜优互相依赖,一个表示以这个点为邮局,算了前面整段和这一段前半部分的答案,一个表示以这个点为一个段的结尾,前面所有的代价。只用在第二个那里减 wqs 二分的斜率和统计段数即可。
P6146
先按左端点从左到右排序。
定义 \(f_i\) 为考虑了前 \(i\) 个区间的答案。考虑新增第 \(i+1\) 个区间,若不选,答案为 \(f_i\);若选,先假设没有新增连通块,贡献为 \(f_i\),再考虑新增的:如果前面有 \(x\) 个区间与其无交,则有 \(2^x\) 个选法会新增连通块。
所以最后递推式为 \(f_{i+1}=2f_i+2^x\)。
P6075
\(1\sim n\) 每个数可以独立考虑。一个数在子集阵中出现的位置肯定是左上角一片,考虑从左下开始往斜边上走,每一步往右或往上,走到斜边就是一种方案,总共 \(k\) 步有 \(2^k\) 种走法。所以答案为 \(2^{nk}\)。
10.15
CF1408E*
巧妙的转化。可以把每种颜色也作为一个点,和集合里的所有点相连,边权为删掉这个点的花费。那么问题变成了删掉一些边使得没有环。最大生成树即可。
CF1322C
考虑每个右侧点连向的左侧点的集合,相同的右侧点可以合并起来。然后答案就是所有合并好的右侧点求 \(\gcd\)。证明见题解。
10.17
P17194
略。
CF2205E*
精妙的结论。
CF2261
A
略。
B
从高到低扫每一个二进制位,如果全一加上这一位的贡献,否则如果不是全零那就把剩下的位的贡献全加了。
C
小小博弈。只有一个奇数一个偶数或者三个偶数的时候先手必败,否则先手必胜。
D1
打表打的。
10.25
P17161
略。
CF1385G
题解。
10.26
P13098
有意思,一直加 \(\operatorname{lowbit}(n)\)。
P3806*
点分治板子。
B4324
何意味。
P10815*
快读板子。
P13572
结论是只用看度数为 \(1\) 的次大值和度数不为 \(1\) 的最大值。
10.27
AT_abc360
abcd
略。
e
期望 DP。
g
使用数据结构优化 DP。\(f_{i,0/1}\) 表示前 \(i\) 个数用没用操作的 LIS 长度。
10.28
P2501*
先用 \(a_i-i\) 把严格递增的限制去掉,然后可以正常求 LIS。DP \(f_i\) 表示把前 \(i\) 个变成单调不降的代价,转移时我们只看最长长度比 \(i\) 少 \(1\) 的能接的 \(j\),不然中间还可以接。枚举 \(k\),\(k\) 前面全变 \(a_j\),后面全变 \(a_i\)。因为数据随机,所以时间复杂度不会炸。
P1654*
见题解。
P16496
简单构造。
10.29
CF1614D2
见题解。
CF1107E
神秘区间 DP,见题解。
10.30
P7670 & AT_joi2018ho_e*
经典做法。考虑 ? 少的时候可以暴力枚举,0 或 1 少的时候可以容斥,所以分情况做即可。
10.31
AT_arc189_c
容易发现有解就是球都在同一个轮换上,把蓝球和红球的挪动序列分别提出来,求最长公共子序列即可。
AT_abc482
abcd
略。
e
口胡的,没写。

浙公网安备 33010602011771号