做题记录(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

口胡的,没写。

十一月做题记录

posted @ 2026-10-15 19:45  wo2011  阅读(8)  评论(0)    收藏  举报