错题"集锦"&做题记录

未补的题不写具体解法,只写大致思想,并加粗。

从这里出来的题。

2026.6.20 P6846

  • 子集反演,想到计数时枚举 0 出度点就做完了,后面计算容斥系数有点强。

2026.6.20 P7483

  • 比较牛的计数,正难则反,记录未通过的题,然后将每个数赋的次幂写下来,分 \(0\) 和 \(> 0\) 考虑,dp 优化即可。

\(\bigodot\) 2026.6.21 P5241

  • 先贪心,判断可行性,再 dp 进行计数,较板。

2026.6.24 P5038

  • 抓住一次操作一定是一个黑格一个白格,先找出解的形式,在用网络流判断。

2026.6.24 P2570

  • 拆时间为小区间,可以先分析最优结构,或确定什么结构一定最优再建模。

2026.6.25 P2045

  • 拆点为入点和出点,以限制点权只取一次,化点权为边权,其他易。

2026.6.25 P3159

  • 比较精妙的拆点建图,若没有 \(m_{i,j}\) 的限制,直接连边即可,发现 \(m_{i,j}\) 为入边加上出边的个数的最大值,则又初末状态可得入边个数的限制,加上一排虚点与原点连边则可得。

2026.6.26 P4553

  • 上下界做法易,不用上下界的做法如下:用 s 以限制出点,用 t 以限制入点,仿照最小路径覆盖,但再建立一个虚点,将其与入点连边,以充当 m 条路径的开始,其他易。

  • 可以这么想:先找到以条三个点的路径:a -> b -> c,要经过 b 点 x 次,所以将 b 点拆成 b1,b2,本应 b1,b2 连边,但这样要上下界,于是分别与 s,t 连边,效果等价,但这样分发开始路径的任务就无法由 s 单独完成,故增加一虚点。

  • 这启示我们去用一条路径做具体分析,可以拆成开始,中间,结尾去分析。

2026.6.26 P4313

  • 最小割,用 inf 权值的边来限制一定选/不选。
  • 这启示我们用虚点来限制一组点或一些条件取/不取。
  • a ->(w=inf) b 的作用:若 a 取,则 b 取,若 b 不取,则 a 不取。
  • 可以发现一个模型:将源点与一个虚点连边,边权为一个值,再将虚点与一些点连边,边权为 inf,则若那些点有一个不选,权值 +给的值。

2026.6.27 P15410

  • 将多个不好分析的操作化为少个好分析的,通过一些操作组合来写。
  • 这或许是“诈骗题”的通用写法。

2026.6.28 P3980

  • 我是真要积累一点模型了。
  • 区间覆盖型建模板题,每一个点向后连边,容量为 \(-a_i\),代表要被加 \(a_i\) 次,s 向 1 连边,n 向 t 连边,权值均为 0,代表最大流是否能让边负权边被抵消,因为边权不能为负,所以全部加上一个 inf 即可。

2026.6.29 arc223d

  • 写不出来蓝计数了。。。
  • 比较显然的看出来了反射容斥,但一直在推单个的情况,而没有从整体考虑。
  • 有时单个情况 + 归纳总结不好用时,可以直接考虑整体分析。

2026.7.1 P2050

  • 动态加边优化复杂度。
  • 前面较好想,主要是可以拆贡献 + 差分,动态加边思想可以借鉴。

\(\bigodot\) 2026.7.1 P15061

  • 真不知道自己在想什么
  • 考虑求根,直接询问 \(h\) 即可,发现问 \(1\) 比较好分析,但要知道叶子以及根的权值,考虑求第 \(2\) 层以求根,发现问 \(h+1\) 比较有说法,然后就简单了。

2026.7.2 P1399

  • 真不知道自己在想什么
  • 发现无论把根放哪,一定存在一条环边使所有点到根的最短路径不经过它,所以考虑断边,枚举边,然后求直径,用数据结构维护即可,可以以环中最后一个点为分割线,分三种情况,直接用数组维护。
  • 一种基环树处理方法:断边。

2026.7.2 P11563

  • 真的写不出来青计数了吗?
  • 考虑建图,发现一个限制相当于一条无向边一定要被取其中的一条方向,发现图一定是若干个不交的环以及链相组合,环简单,只需定向,链先定向,然后组合,枚举每个链的末尾连向哪里,然后发现一个问题,当存在二元环时会算重,考虑容斥,令 \(f_i\) 为钦定 \(i\) 个环会算重,则 \(ans=\sum(-1)^if_i\),\(f_i\) 易得。

\(\bigodot\) 2026.7.6 P10674

  • 我应该尝试找回我的思考能力。
  • 感觉和 NOIP 2024 T3 比较像吧,都是精简的树形 dp,留的过会儿再看吧。

2026.7.7 P15088

  • 注意力题。
  • 会有一种长度太大会炸的感觉,然后顺着这个思路去猜,去推,后面易。

2026.7.7 P15304

  • 我从未写出过每日一题。
  • 去猜吧,没啥好说的。

\(\bigodot\) 2026.7.8 P12405

  • 我说这题真不只青吧。
  • 应该和这题相似,但本题初始式子好推,由于要求 \(\mathcal{O}(m)\),所以写出一个关于 \(m\) 的 \(dp\) 以及式子,然后发现一些瑕疵,再去完善,发现每项均含有形如 \(k^i\) 的式子,考虑等比数列求法,发现组合项也可以相减求得。
  • 有一个插板法公式:

\[\sum_{i=1}^{n}\binom{m+i}{i} =\binom{n+m+1}{m+1} \]

2026.7.8 P3687

  • 从树入手,嗯,这个抓住了
  • 考虑树的答案,将未被环覆盖的边化为长度为 \(1\) 的链,将一个环变为所有树边组成的链,则答案为路径覆盖的数量,发现和 P6799 类似,只不过链集为全集,考虑 dp,设 \(dp_u\) 为 \(u\) 子树内存在一条从 \(u\) 到 \(v\) 没被覆盖的边的方案数,其他易,扩展到仙人掌图是一样的。

2026.7.14 P5292

  • 图论题
  • 可以发现一个 \(\mathcal{O}(m^2)\) 的 dp,但 \(m\) 过大,考虑缩掉没用的边。
  • 分三类边,分讨是/不是二分图的生成树,将其优化。

2026.7.14 P2423

  • 首先一些显然的转换不必说。
  • 考虑最大团怎么求,建补图化为最大独立集。

\(\bigodot\) 2026.7.17 P17112

  • 数论太困难了qwq。。
  • 考虑全局怎么做,发现其形如 \(\gcd(x\times b_i + a_i)\) 的形式,每次询问 \(x \leftarrow x+1\),考虑将答案化为与 \(x\) 不怎么相关的形式,即到最后一步在去算 \(x\),发现 \(\gcd(k_1\times x+a_1,k_2\times x+a_2)\) 可以用辗转相除法计算,将其化为 \(\gcd(k\times x+a,c)\) 的形式,而同理 \(\gcd(\gcd(k_1\times x+a_1,c_1),\gcd(k_2 \times x +a_2,c_2))\) 也可以化为 \(\gcd(k \times x+a)\) 的形式,将式子拆开即可。
  • 对于区间修改区间查询,对线段树上每一个点,设 \(f(x)=\gcd(k \times x+a,c)\),则区间修改将 \(a\) 增加 \(k\) 即可,维护懒标记,查询时令 \(x\) 为 \(0\) 即可。

\(\bigodot\) 2026.7.18 P4747

  • 这一点也不简单。
  • 第一步:判断可行性,比较好做,若 \(\max-\min=r-l\) 即可。
  • 第二步:推性质,发现对于任意区间 \(\max-\min\ge r-l\),考虑对 \(r\) 扫描线,则对于每一个 \(l\),维护 \(\max-\min+ l\)。
  • 第三步:上 DS,对于扫描线的第二维,上线段树,每个节点维护 \(\min\{ans\},\min\{\max+l\},\min\{-\min+l\}\),以及 \(4\) 个 \(\rm tag\),对于最大最小值,用单调队列,题解区有一种妙法,可以不维护那么多的信息,直接区间 \(+/-1\),复杂度也是正确的。
  • 第四步:统计答案,发现若 \([l,r]\) 为答案,\([L,R](l \le L \le r \le R)\) 亦为答案,则 \([L,r]\) 为答案,故只需找到离询问的 \(r\) 最近的存在解的 \(R\) 即可,我们在扫描时按 \(r\) 从小到大插入询问然后用堆去维护即可。
  • 四步都不是很好想啊。

2026.7.21 P7735

  • 树剖,待补。

\(\bigodot\) 2026.7.23 模拟赛 T3

  • 发现贡献可以将每一位拆开,考虑经典技巧,将前后 \(\frac{h}{2}\) 位分成两部分考虑,然后维护 \(w_{a,b}\) 为前块为 \(a\) 的所有数的后半段对 \(b(0 \sim 2^{\frac{h}{2}}-1)\) 时的答案的 \(\max\),那么插入一个数就可以枚举每个块然后算 \(c(x,a)+w_{a,y}\),求最大值即可,复杂度 \(\mathcal{O}((n+q)\sqrt {2^h})\)。
  • 发现瓶颈在于预处理前 \(n\) 个数,考虑维护一个类似于高维前缀和的东西,设当前匹配 \(x,y\),匹配了 \(i\) 位,就将 \(x\) 的前 \(i\) 位赋值为 \(y\) 的前 \(i\) 位,设其为 \(f_{i,S}\),则转移枚举即可,剩下部分用上面的方法,复杂度 \(\mathcal{O}(nh+q\sqrt {2^h})\)。
  • 一种基于 bitset 的做法如下:对部分一的 \(w\) 数组进行拓展,维护一个数组 \(w'_{a,b}\) 为后块为 \(b\) 的所有数的前半段对 \(a(0 \sim 2^{\frac{h}{2}}-1)\) 的答案的最大值,则总答案即为 \(\max w_{a,b}+w'_{a,b}\),考虑求出这两个数组,具体地,要求 \(w_{a,b}\),我们将所有最高位 \(S\) 按对 \(a\) 的贡献从大到小排,然后后逐一枚举过去,设现在枚举到 \(x'\),则扫一遍最高位为 \(x'\) 的所有数 \(q\),令 \(w_{a,q}=c(x,x')\) 即可,并以后不再更新,注意到这可以用两个 bitset 相与做出,而 \(w'\) 的求解也是一样的,复杂度 \(\mathcal{O}(\frac{n\sqrt {2^h}}{32}+nh+q \sqrt {2^h})\)。

\(\bigodot\) 2026.7.24 P3780

  • 很深刻啊。
  • 两种做法,直接在树上的见题解。
  • 一种基于出栈序的做法如下:还是考虑除掉 \(h\) 的限制,则对树建出栈序,设 \(f_{i,j}\) 为 dfs 序小于等于 \(i\) 的点中取了 \(j\) 个物品的权值最大值,则若 \(tdfn_{i-1}\) 为 \(tdfn_i\) 的子节点,\(f_{i,j}=\max(f_{i,j},f_{i-1,j-k}+k\times V_i)\),这里 \(i\) 至少要取一个保证合法性。还有一种情况即 \(i\) 中子树均不取,则 \(f_{i,j}=\max(f_{i,j},f_{i-sz_i,j})\),复杂度正确。
  • 考虑一条链的贡献,发现其形如从左往右做一遍 dp,设其为 \(f\),再从右往左做一遍,取 \(f_{ldfn_i-1}\) 和 \(g_{rdfn_i-sz_i}\) 合并可以把除这条链以外的贡献算出。
  • 但这条链并不好算,要算复杂度也是错误的,考虑拆点,将一个点拆为 \(1\) 和 \(a_u-1\) 两个点,令为 \(1\) 的那个点在原位置上,另一半挂在其儿子的位置上,这样就可以前后缀合并了,加上那条链的 \(V\) 之和即可,复杂度 \(\mathcal{O}(nk)\)。
  • 呃呃,好像还有做法,可以钦定某点必选,则 \(k\leftarrow k+dep_u\),由于 \(dep_u \le \rm maxdep\),故正确,考虑设 \(f_{i,j}\) 为还未钦定某点时已经选了 \(i\) 个物品的最大值,转移同上,复杂度 \(\mathcal{O}(n(n+k))\),但是可以发现 \(i\) 一定会选 \(dep_i-1\) 个,故 \(f_{i,j}\) 为选了 \(dep_i-1+j\) 个点的最大值,设 \(g_{i,j}\) 为选了 \(j\) 个点且已经钦定过点的最大值,\(f\) 转移到 \(g\) 减掉 \(dep_u\) 即可,复杂度正确。

2026.7.24 P4563

  • 去分析答案结构然后拆分成子问题。
  • 待补。

\(\bigodot\) 2026.7.25 MOPE 卷积

  • 考虑一个数 \(i\),将它二进制为 \(1\) 的位拎出来,则可以只枚举其为 \(0\) 的位,因为其他位对 \(k\) 的取值没有影响,则设 \(f_{i,x}\) 为 \(x\supset j\),且 \(j\) 的其他位包含于 \(i\),的 \(\max b_j\),答案即为 \(c_{i+x}=\max a_i+f_{i,x}\)。

  • 考虑转移,类似于高维前缀和,将 \(i\) 扔掉任意一位后哪一位可以属于 \(x\),也可以不属于 \(x\),故可得转移式 \(f_{i,x}=\max(f_{i-2^k,x},f_{i-2^k,x+2^k})\)。直接做可得到空间时间均为 \(\mathcal{O}(3^m)\)。

  • 发现时间可做,空间不可做,考虑递归处理,这样可以使存的空间只为一条链,具体地,设现在处理到 \(i\),则往 \(i\) 的最高位 \(1\) 后枚举下一个 \(1\),设其为 \(i+2^k\),则可以直接转移过去,对于每一个节点都开一个长度为 \(2^m\) 的数组,空间可优化至 \(m2^m\)。

  • 还可以更好!!发现对于一个 \(i\),有用的空间只有 \(2^{m-\rm popcount(i)}\) 个位置,可以通过一些方法映射到新数组中去,这样一条链的空间变为了 \(\sum2^i\),则总空间为 \(2^m\),这里映射回去算答案要一个折半预处理,时间也有保证。

2026.7.25 CF53E

  • 数据范围一眼状压。
  • 由于是生成树问题,在设计 dp 时要将根记录下来,具体地,设 \(f_{i,j,k}\) 为 \(i\) 中节点构成的生成树,且满足根为 \(j\),即后续往外连的点,且除根以外共有 \(k\) 个叶子节点,注意当只有一个节点时应该令其为叶节点。
  • 考虑转移,发现通过画出根节点所连节点去转移较好考虑,为便于后续计算答案,具体地,设 \(f_{i,j,k}\) 为集合 \(i-2^j\) 中的点构成的一棵生成树,且根到 \(j\) 有连边的方案数,则 \(dp_{i,j,k}=f_{i,j,k}+g_{i,j,k}\),\(f_{i,j,k}=\sum dp_{i-2^j,p,k}(p \isin i-2^j \land hav_{p,j})\),而 \(g\) 的转移为 \(g_{i,j,k}=\sum (g_{i-s,j,m}+f_{i-s,j,m})\times dp_{s,p,k-m}(p \isin s \land j\not\isin s \land hav_{p,j})\)。
  • 发现 \(g\) 可能会算重,那么这里 \(g\) 的转移我们就枚举 \(s\) 一定包含 \(i-2^j\) 的最高位即可,答案即为 \(f_{2^n-1,1,K-1}+g_{2^n-1,1,K}\)。
  • 时间复杂度 \(\mathcal{O}(3^n n^2K^2)\)。

2026.7.26 loj 535

  • 先考虑无法进行交换,这种情况直接算逆序对就行了。
  • 考虑进行一次交换,设交换的两数为 \(i,j(i<j \land a_i>a_j)\),可以发现能够减少的逆序对数为 \(1+2\times \sum [i<k<j \land a_i>a_k>a_j]\),除掉那一次交换我们只需要求出在以 \((i,p_i)\) 为左上角到以 \((j,p_j)\) 为右上角的矩形中点的最大数量即可。
  • 考虑排除无用决策点,发现若 \(i<j \land a_i>a_j\) 则 \(j\) 作为左端点无用,相似的,若 \(i>j \land a_i<a_j\) 则 \(j\) 作为右端点无用,则可以预处理出所有可行左端点和右端点,直接扫一遍即可。
  • 考虑统计答案,正难则反,考虑对于每一个点 \((i,p_i)\) 求出它可以贡献到的左右端点的区间,设其为 \([l_1,r_1]\) 和 \([l_2,r_2]\),则可以直接对于左端点扫描线,在线段树区间上直接区间加即可,复杂度 \(\mathcal{O}(n \log n)\)。
  • 有一个 \(\mathcal{O}(n \log^2 n)\) 的主席树 + 整体二分(我认为是分治优化决策单调性)的做法,设 \(w_{i,j}\) 为左端点为 \(i\),右端点为 \(j\) 的答案,发现其满足四边形不等式性质,考虑分治优化,由于主席树可以直接算出 \(w_{i,j}\),于是可以对于一个区间直接算出 \(mid\) 的答案然后递归到左右两边即可。

\(\bigodot\) 2026.7.26 P6246

  • 一道横跨普及到 NOI 的题。
  • 首先有最最基础的 dp,\(dp_{i,j}\) 为考虑到第 \(j\) 个村庄,已经在这之中插了 \(i\) 个邮局的最小距离和,枚举最早的被这个邮局所决策的村庄 \(k\),有转移 \(dp_{i,j}=\min dp_{i-1,k}+w(k+1,j)\),\(w\) 是好求的,可以 \(\mathcal{O}(1)\)。
  • 直接转移是 \(n^2k\) 的,发现其具有四边形不等式的性制,则最优决策点 \(h\) 满足 \(h_{i,j} \le h_{i,j+1}\),这里是好证的,设四个点 \(j' <j<i<i'\),若 \(i\) 的最优决策点为 \(j\),且 \(i'\) 的最优决策点为 \(j'\) 则有 \(dp_{j'}+w(j',i)>dp_j+w(j,i)\),且 \(dp_{j}+w(j,i')>dp_{j'}+w(j',i')\),两式相加得 \(w(j',i)+w(j,i')>w(j',i')+w(j,i)\),与四边形不等式不符,故矛盾,则可以用分治优化决策单调性进行转移将复杂度优化为 \(\mathcal{O}(nk \log n)\)。
  • 进一步观察可以发现 \(h_{i,j} \ge h_{i-1,j}\),则可以进行一波交换枚举顺序,先循环 \(i\) 再倒叙循环 \(j\),转移范围即为 \([h_{i-1,j},h_{i,j+1}]\),复杂度 \(\mathcal{O}(nk)\)。
  • 还能更好!!注意到这题是取恰好(当然不超过也对)\(m\) 个邮局,且根据直觉其满足下凸性,这里可以感性理解为你越到后面减的距离越少,即斜率单调不降,则可以用 WQS 二分优化,具体地,当 \(x \leftarrow x+1\) 时意味着新建一个邮局,根据 WQS 二分,则可以认为每建一个邮局代价 \(+k\),这样我们可以写出新的状态转移方程:\(dp_i=\min\{ dp_j+w(j+1,i)-k\}\),注意到加一个常数 \(k\) 不改变其四边形的性质,但这里不能再用分治了,因为是同一层转移。
  • 我们引入一个做法:二分队列,建一个双端队列维护三元组 \((x,l,r)\),表示考虑到 \(i\) 时 \((l,r)\) 的点的最优决策均取自 \(x\),则每考虑到一个 \(i\) 我们直接取队头计算即可,而把 \(i\) 插入到队列中去我们就将左端点 \(l\) 取 \(i\) 比取 \(x\) 小的三元组删去,而最后剩下的队尾我们在 \((l,r)\) 处进行二分将其分为两半做即可,复杂度 \(\mathcal{O}(n \log V\log n)\)。
  • 从中可得定理如下:若转移式形如 \(dp_{i,j}=\min dp_{i-1,k}+w(k+1,j)\),则有 \(h_{i-1,j}\le h_{i,j} \le h_{i,j+1}\)。

\(\bigodot\) 2026.7.27 CF2251F2

  • 牛题。
  • 发现 \(n\) 很大,\(m,k\) 均很小,发现直接 dp 计算路径数不是很好算,甚至不满足独立子问题,正难则反,考虑从 \(1\sim n\) 逐个加入每一个点然后统计答案。
  • 可以将问题镜像一下方便考虑,则满足向左走可以最多走 \(m\) 个,而向右走无限制,则考虑加入一个点能将它放在现在路径的哪一处,设现在考虑到 \(i+1\),则可以直接放在路径末尾,对于插到中间的情况,要满足它后面那个点的编号 \(u\) 满足 \(u \ge i+1-m\),由于 \(m\) 很小,考虑状压,设 \(f_{i,j,k}\) 为考虑到 \(i\) 时 \(i-m \sim i-1\) 这些点取的情况为 \(k\),且已经取了 \(j\) 个点的方案数。
  • 有转移:\(f_{i,j,k} \leftarrow f_{i+1,j,(k\times 2)\&(2^m-1)}\),这是不选 \(i\) 的情况,反之有 \(f_{i,j,k} \times ( {\rm popcount}(k)+1) \leftarrow f_{i+1,j+1,(k \times 2+1)\&(2^m-1)}\),初始 \(f_{1,0,0}=1\),求所有 \(f_{n+1,k,*}\) 的值之和。
  • 发现转移与 \(i\) 无关,考虑矩阵加速,复杂度 \(\mathcal{O}(k^38^m \log n)\)。

2026.7.28 模拟赛 T3

  • 我是糖糖。
  • 考虑二分答案,判断时用 dp 进行判断,记录取到点 \(i\) 的最多取点数量,则有转移:\(dp_i=\max(dp_j+1)(j<i \land a_j+k\times j<a_i+k\times i \land -a_j+k \times j<-a_i+k\times i)\)。
  • 发现其形如三维偏序的形式,则直接上 cdq 可以做到 \(\mathcal{O}(n \log V \log^2 n)\)。
  • 考虑优化,发现当 \(a_j+k\times j<a_i+k\times i \land -a_j+k \times j<-a_i+k\times i\) 时将两式相加可以得到 \(j<i\),则直接去掉一位做二位偏序可以做到 \(\mathcal{O}(n \log V \log n)\)。
  • 额这个换维以及消维的思想还是可以借鉴的。

2026.7.28 模拟赛 T4

  • 我是糖糖。
  • 加减乘易。
  • 考虑除,我们枚举 \(\min\),处理出最大区间使得 \([l,r]\) 的最小值为 \(a_i\),然后枚举答案 \(k\),则最大值范围为 \([k \times a_i,(k+1)\times a_i-1]\),差分后直接在 \([l,r]\) 内二分得到最大满足区间 \([L,R]\),直接统计即可。
  • 取模的话根据经典结论 \(i \bmod j=i-j\times \lfloor \frac{i}{j} \rfloor\) 转换为除即可。

2026.7.29 P3232

  • 发现点数较小,考虑求出每个点的值再去更新边。
  • 设 \(f_i\) 为出点 \(i\) 次数的期望值,则有转移 \(f_i= \sum\limits_{(i,j) \isin E} \frac{f_j}{deg_j}\),对于点 \(1\) 还要新加 \(1\),对于 \(n\) 不要考虑,因为走到它就没了,直接高斯消元即可,并求出边的期望次数贪心即可。

\(\bigodot\) 2026.7.29 P5643

  • 很深刻啊。
  • 考虑将至少经过一次进行转化,否则很难下手,发现记录第一次到点集 \(s\) 中的点 \(i\) 的时间 \(t_i\),则全部走完的时间为 \(\max t_i\),考虑 \(\min - \max\) 容斥,将全部到达转化为第一次碰到,考虑期望 dp,设 \(f_i\) 为点 \(i\) 第一次碰到 \(s\) 中点的期望步数,有转移:\(f_i=\frac{\sum f_j}{deg_i}+1\),发现其有后效性,考虑高斯消元,则预处理复杂度为 \(\mathcal{O}(2^nn^3)\),无法接受。
  • 由于这是树,具有良好性质,发现其转移都是父节点与子节点的转移,考虑待定系数法,并将子节点与父节点分开来,具体地,设 \(f_u=k_uf_{fa_u}+b_u\),则将其带入初始转移有 \(f_u=\frac{1}{deg_u}(f_{fa_u}+\sum k_vf_u+\sum b_v)+1\),化简得 \(f_u=\frac{f_{fa_u}}{deg_u-\sum k_v}+\frac{\sum b_v+deg_u}{deg_u-\sum k_v}\),则可以递推求出 \(k_u,b_u\),最后根节点的 \(f\)
    即为 \(b\),因为其无法与父节点转移,而所有 \(s\) 内的点均满足 \(k_u=b_u=0\),因为它们不用走就是对的。
  • 复杂度 \(2^nn+q2^n\),可用高维前缀和优化至 \(\mathcal{O}(2^nn+q)\)。

2026.7.29 P2150

  • 首先看到互素考虑状压质因子,但其范围大约为 \(\frac{n}{\ln n}\),无法接受。
  • 考虑一经典结论:一个数最多只有一个 \(>\sqrt{n}\) 的质因子,则考虑状压 \(\le \sqrt{n}\) 的质因子,这最多只有 \(8\) 个,然后将所有数按 \(>\sqrt{n}\) 的那个质因子分组,每组不能两人都取,状压 \(dp_{i,S,T}\) 即可,复杂度 \(\mathcal{O}(2^{16}n)\)。

\(\bigodot\) 2026.7.30 CF2062H

  • 有空在写代码,但我觉得补代码时我无法自己通过,所以还是写一下思路吧。
  • 对于此类计数问题,考虑先写一个 check,即已确定一个点集时的答案,考虑判断两个连通块什么时候能够合并,发现当且仅当其最小覆盖矩阵两维中有一位有交。
  • 考虑对于每一个极大矩形做 dp,具体地,设 \(f_{l_1,r_1,l_2,r_2}\) 代表以 \((l_1,r_1)\) 为左上角,\((l_2,r_2)\) 为右下角的极大矩形的方案数,则答案可再次 dp,具体地,设 \(g_{i,S}\) 为考虑到第 \(i\) 行,第 \(i\) 行中被覆盖过的列的集合为 \(S\) 的方案数,则转移有 \(g_{j,S+[l,r]} \leftarrow g_{i,S}\times f_{k,j,l,r}(k>i \land S\cap [l,r]=\varnothing)\),当然这里也可以拆贡献,对于一个 \(f\) 直接枚举四个角的点的数量,则答案乘上 \(2^{|S|}\)。
  • 考虑转移 \(f\),考虑容斥,具体地,我们用总方案数减掉组成极大矩形不止一个的方案数来计算,我们枚举 \([(l_1,r_1),(l_2,r_2)]\) 内的最上方的那个矩形,设其为 \([(l_3,r_3),(l_4,r_4)]\),则答案减掉 \(f_{l_3,r_3,l_4,r_4}\) 乘上 \([l_4+1,l_1]\) 以及 \(2^m-1-[r_3,r_4]\) 内的极大矩形的组合。
  • 这里计算组合方案数时我们仿照 \(g\) 的转移,设计 \(dp_{i,j,S}\) 为考虑行范围为 \(i\sim j\),列的并为 \(S\) 的方案数,转移类似于 \(g\),具体有 \(dp_{i,j',S+[l,r]} \leftarrow dp_{i,j,S} \times f_{k,j,l,r}(...)\)。
  • 当然我们发现直接做顺序不对,考虑将 \(l_1,r_1\) 倒序,这样做就对了,当然 \(dp\) 的转移也要反着做。
  • 总复杂度 \(\mathcal{O}(n^8+2^nn^5)\)。
posted @ 2026-07-31 10:48  xzyAKIOI  阅读(14)  评论(0)    收藏  举报