2024.8 做题记录

8.1

P6222

ans=T=1nTkS(nk)dTdμ2(d)μ(Td)ans=\sum_{T=1}^n T^kS(\frac{n}{k})\sum_{d\mid T}d\mu^2(d)\mu(\frac{T}{d})

f(T)=dTdμ2(d)μ(Td)f(T)=\sum_{d\mid T}d\mu^2(d)\mu(\frac{T}{d}),为积性函数,讨论 f(pk)f(p^k) 的取值。

P10636

枚举第一个点和第三个点的横纵坐标之差 i,ji,j,第二个点有 gcd(i,j)1gcd(i,j)-1 种选择。

ans=i=1nj=1m(ni)(mj)(gcd(i,j)1)ans=\sum_{i=1}^n\sum_{j=1}^m (n-i)(m-j)(gcd(i,j)-1)

莫比乌斯反演。

8.3

P3598

对每个指数 min-max 容斥,乘起来得到 gcd-lcm 容斥。

lcm(T)=STgcd(S)(1)S+1lcm(T)=\prod_{S\subseteq T} gcd(S)^{(-1)^{|S|+1}}

f(n)=xn+11x1f(n)=\frac{x^{n+1}-1}{x-1}。提出 x1x-1。因为 gcd(xa1,xb1)=xgcd(a,b)1gcd(x^a-1,x^b-1)=x^{gcd(a,b)}-1,用 map 储存指数。

8.6

arc069d

二分答案,线段树优化建图跑 2-sat。要保证 ii 不会连到 ii',向排序后一个编号区间连边,中间挖空。

P10833

枚举每个 ai=1a_i=1 将序列划分开,枚举左/右端点,钦定最大值在左/右边,可以确定一段区间。随机异或哈希比较 i=lrfai=i=1rl+1fi\oplus_{i=l}^r f_{a_i}=\oplus_{i=1}^{r-l+1} f_i

8.7

arc072d

模拟赛 T2。

fi,jf_{i,j} 为前 ii 天体积为 jj 的最大质量,图像上凸。fi1f_{i-1}fif_i 即删去 [vi,L][v_i,L],在最开始加上 (vi,viti)(v_i,v_it_i),在将前面取 max 为上凸。双端队列维护。

arc070c

模拟赛 T3。

fi,jf_{i,j} 表示前 ii 条线段,第 ii 条左端点为 jj 的最小代价。fi,j=mink=jleni1j+lenifi1,j+jlif_{i,j}=\min_{k=j-len_{i-1}}^{j+len_i} f_{i-1,j}+\mid j-l_i\mid

取 min 和加绝对值函数,下凸,slope trick 维护。

模拟赛 T4

从小到大放入特殊点,当前在点 ii,已选的比赛集合为 ss,有 jj 个点在 [1,ai][1,a_i] 中没被选。每个和 11 比赛的特殊点都是子树中最大的。dp 套 dp 维护上升子序列长度,做前缀最大值后差分后状压得 ttttss 的子集。枚举没选过的比赛 lldpi,upd(s,t,l)j+aiai12l=dpi1,s,t,j×(j+aiai112l1)×(2l)!dp_{i,upd(s,t,l),j+a_i-a_{i-1}-2^l}=dp_{i-1,s,t,j}\times \binom{j+a_i-a_{i-1}-1}{2^l-1}\times (2^l)!

P3343

nn[0,1][0,1] 之间的随机变量第 kk 小的为 kn+1\frac{k}{n+1}。引入第 n+1n+1 个随机变量 xx,第 kk 小的数值等于 xx 比第 kk 小小的概率 kn!(n+1)!\frac{kn!}{(n+1)!}

dps,idp_{s,i} 表示选点集 ss,连了 ii 条边,不连通的方案数,dsd_sss 内部的边,连通的方案数为 (bsi)dps,i\binom{b_s}i -dp_{s,i}。枚举 ss 的子集 ttdps,i=((btj)dpt,j)×(bstij)dp_{s,i}=(\binom{b_t}{j}-dp_{t,j})\times \binom {b_{s\oplus t}} {i-j}。枚举答案为第 ii 条边,ans=im+1×(dpU,k1(mk1)dpU,k(mk))ans=\sum \frac{i}{m+1}\times(\frac{dp_{U,k-1}}{\binom{m}{k-1}}-\frac{dp_{U,k}}{\binom{m}{k}})

8.8

P9047

模拟赛 T3。

dpu,0/1/2/3dp_{u,0/1/2/3} 表示 uu 子树并向上传长为 0/1/2/30/1/2/3 的链的最大贡献。转移时背包 fi,0/1f_{i,0/1} 记录上传长度 11 的儿子比上传长度 33 的多多少,以及上传长度 22 儿子的奇偶性。随机排列儿子,期望前缀和最大值是 O(n)O(\sqrt n) 级别的。

agc061c

aia_i(ai,bi)(a_i,b_i) 有被选过选 bib_i。容斥,取最大的 bl<aib_l<a_iar<bia_r<b_i(l,r](l,r] 间选法固定,dpldpr-dp_l\to dp_r

8.9

CF925E

链加,树剖 dfn 区间加,分块维护。先减去 tit_i,维护 >0>0 的白点数量。

Q4815

点分治,树上依赖性背包,dpi,j=max(dpi+1,j1+arnku,dpi+sizrnki,j)dp_{i,j}=\max(dp_{i+1,j-1}+a_{rnk_u},dp_{i+siz_{rnk_i},j})。如果一定要选 rt,urt,u,就 O(k)O(k) 合并在前序遍历 dfn 序在 [dfnu,n][dfn_u,n] 中的背包和后序遍历 dfn 序在 [1,dfnusizu][1,dfn_u-siz_u] 的背包选出 kdepuk-dep_u 个数。当分治的区域小于 kk 时停止,复杂度 O(nklognk)O(nk\log\frac{n}{k})

abc269h

树形背包写成生成函数形式,fu(x)=vfv(x)+xf_u(x)=\prod_v f_v(x)+x。分为重儿子和轻儿子贡献。分治 ntt 维护 gu(x)=vson(u),vsufv(x)g_u(x)=\prod_{v\in son(u),v\neq s_u} f_v(x),所有轻儿子子树大小之和为 O(nlogn)O(n\log n)。重链上 fu(x)=gufsu(x)+xf_u(x)=g_uf_{s_u}(x)+x。只需要知道链顶的值,fa1(x)=ga1(ga2((gak+x))+x)+x=(i=1n1xj=1igaj)+xf_{a_1}(x)=g_{a_1}(g_{a_2}(\dotsb(g_{a_k}+x)\dotsb)+x)+x=(\sum_{i=1}^{n-1}x\prod_{j=1}^i g_{a_j})+x。分治 ntt 维护前缀乘积之和和乘积。复杂度 O(nlog3n)O(n\log^3 n)

hdu7503

树形背包写成生成函数形式,fu(x)=vfv(x)+1f_u(x)=\prod_v f_v(x)+1。特别的,需要求出重链上所有 fu(x)f_u(x) 每项的系数和,即 gu(x)g_u(x) 的区间乘积之和。分治 ntt 维护前缀乘积之和、后缀乘积之和、乘积和区间乘积之和。

8.10

cf rmj 暴毙!

CF1733E

模拟赛 T3。

tt 时刻可能在 (x,y)(x,y) 的是 txyt-x-y 出发的人。设 dpt,i,jdp_{t,i,j} 表示前 tt 个人会经过 (i,j)(i,j) 几次,dpi,j=dpi,j12+dpi1,j2dp_{i,j}=\lceil \frac{dp_{i,j-1}}{2}\rceil+\frac{dp_{i-1,j}}{2}。差分看 dpt,x,ydpt1,x,ydp_{t,x,y}-dp_{t-1,x,y} 是否为 11

Q6815

模拟赛 T4。

线段树维护 maxai,ai,maxj=liaj,ai×maxj=liaj\max a_i,\sum a_i,\sum\max_{j=l}^i a_j,\sum a_i\times \max_{j=l}^i a_jO(logn)O(\log n) 线段树上二分的 pushup。区间加和区间覆盖。线段树上二分。

8.11

arc182c

思路

66 个小于 1414 的质数,设这 66 个质数的指数分别为 x1,,x6x_1,\dotsb,x_6ans=(i=1d(xi+1))ans=\sum (\prod_{i=1}^d (x_i+1))。状压这 66 个数,维护 vals=i=16(xi×[si1]+[si0])val_s=\prod_{i=1}^6 (x_i\times [s二进制第 i位为1]+[s二进制第 i位为0])。当加入一个数时,某些 xix_i 会加 ddss 二进制第 ii 位为 11valsval_s 会从 ss 的子集且一些二进制第 ii 位为 00ttvaltval_t 转移来。

8.12

模拟赛 T3

fif_i 表示当前有 ii 种状态的期望次数。fi=i+fikmodnkf_i=i+\frac{f_{ik\mod n}}{k}。转移有环,设 fi=aifm+1+bif_i=a_i f_{m+1}+b_i,递推 ai,bia_i,b_i,找到 ap=am+1a_p=a_{m+1} 可以计算 fpf_p 真正的值,f1=a1×fp+b1f_1=a_1\times f_p+b_1

P8996

让前缀最大值 ala_l 代表整个区间,可以看做合并是将两个序列的前缀最大值排序。每次合并相当于在 n2\frac{n}{2} 处断开跨过序列中点的区间 [l,r][l,r],然后再重新按区间左端点的值排序。最多操作 nn 次,最多 nn 种区间。将询问离线,维护每次合并后的区间信息。建权值线段树表示前缀最大值 ll 代表的区间长度之和。

P8997

按题意模拟,用栈建出二叉树,叶子节点是要填的值,非叶子是运算符。

判断一个叶子能贡献能填哪些数并最终成为答案,设 dpu,0/1,0/1dp_{u,0/1,0/1} 表示 uu 子树内,uu 处的值 ans\le ans>ans>ansnum0num0num1num1 最少为多少。根据 uu 处的运算符分类讨论转移。对于每个叶子算限制,只与从根到 uu 的 dp 值有关。可以发现放在一个叶子的答案是一个区间 [num0+1,nnum1][num0+1,n-num1],差分维护区间加,最后计算大于 00 的位置数。

8.13

模拟赛 T3

合并连续段写为二元组 (ai,ti)(a_i,t_i)。每次找到区间最小值合并,如果 cic_i 为奇数,一定不可能被跨过,写为 (ai+1,ti2),(inf,1),(ai+1,ti2)(a_i+1,\frac{t_i}{2}),(inf,1),(a_i+1,\frac{t_i}{2})。线段树维护。

8.14

arc080d

模拟赛 T4。

aa 数组差分,得到 22 倍连续段个数个 11,一次操作形如 aia_iai+primea_{i+prime} 同时异或 11iii+primei+prime 连边,即为 0uv0\to |u-v| 的最短路。由哥德巴赫猜想,10710^7>4>4 的偶数可以写成两个质数之和,2=0+532=0+5-34=0+734=0+7-3,所以所以 00 到偶数 ii 的最短路为 22。如果 ii 为奇质数,最短路为 11;否则 i+3i+3 为偶数,最短路为 33

现在要将 2×num2\times num 个数两两分组,代价为 1/2/31/2/3,最小化代价和。当选完若干个代价为 11 的组时,奇偶性相同组的代价为 22,尽量匹配,代价为 33 的至多只有一组。所以最大化代价为 11 的组数。代价为 11u,vu,v 奇偶性不同,等于二分图最大匹配,网络流即可。复杂度 O(n2n+xi)O(n^2\sqrt n+x_i)

abc216h

概率转为方案数除以 2nm2^{nm}。由 LGV 引理,ans=p(1)σ(p)e(i,pi)ans=\sum_p(-1)^{\sigma (p)}\prod e(i,p_i)e(i,j)e(i,j)mm 步选 jxij-x_i 步向前走。设 dps,idp_{s,i} 表示选了 ss 里的终止点,终止点 i\le i 的方案数。

agc034d

最大化曼哈顿距离,拆绝对值变成 44xi,yix_i,y_i 独立的式子。只要匹配的点对选的同一种式子即可。最小费用最大流。

8.15

【模板】矩阵求逆

将矩阵和单位矩阵放在一起高斯消元,把左边的矩阵消为单位矩阵时右边的单位矩阵变成逆矩阵。

模拟赛 T3

xx 使得 n×nn\times n 的矩阵 Ax=CA^x=C

det(A)det(B)=det(AB)det(A)det(B)=det(AB)。对 det(A)xdet(C)(mod109+7)det(A)^x\equiv det(C)\pmod{10^9+7} 做 BSGS。对于 11 个可能的 xx ,判断 x,x+mod1,x+2×(mod1),x,x+mod-1,x+2\times(mod-1),\dotsb。只有 1010mod\frac{10^{10}}{mod}xx,复杂度 O(mod+1010modn3)O(\sqrt{mod}+\frac{10^{10}}{mod} n^3)

8.17

模拟赛 T2

ans×nm=i=1n(n1)aib(ni+1)c×val(sk,i)×nmkans\times n^m=\sum_{i=1}^n (n-1)^ai^b(n-i+1)^c\times val(s_k,i)\times n^{m-k}

是关于 iim+1m+1 次多项式,维护 m+2m+2 个点值插值。

模拟赛 T3

对于每个连通块,二分图染色分为 aia_ibib_i 个点。每次要么选 aia_i 要么选 bib_i,要最小化 sumsumnsumn-sum 的差。bitset 维护背包,只有 O(n)O(\sqrt n) 个本质不同物品,相同的物品二进制优化。复杂度 O(nnw)O(\frac{n\sqrt n}{w})

模拟赛 T4

找出最小生成树。从小到大加入边,维护边双,一定能去到一个边双的最小权值的边。并查集维护每个点属于哪个边双,维护边双最浅的点,维护 1u1\to u 的最小边权 mnmn 和最小答案 ansans

对于 (u,v)(u,v),如果 u,vu,v 已经属于同个边双,不会贡献。如果 (u,v)(u,v) 是最小生成树中的边,如果 11 能新到一些点,bfs 拓展,赋值答案。否则将 uvu\to v 路径上的边双合并,设新边双最浅点为 pp,将 pp 子树的所有点的 mnmnansans 更新。如果更新到了非法的点,一定是没有被拓展到的,会在被拓展到时被覆盖。

8.19

CF622F

k+1k+1 次多项式,算 k+2k+2 个点值插值。维护阶乘,ni\prod n-i(nk2+i)\prod (n-k-2+i)。如果 nin-i 是奇数取负号。

arc165e

等价于每种情况出现的概率之和。概率为连通块相邻的点被选都在连通块被选之前,即 i!j!(i+j)!\frac{i!j!}{(i+j)!}。设 dpu,i,jdp_{u,i,j} 表示根为 uu,子树内选 ii 个点,有 jj 个相邻的点的连通块的概率,O(n4)O(n^4) 转移。

abc249g

模拟赛 T3。

枚举 xi\oplus x_ikk 的最高相同的位 iiii 位以下不用管。按位贪心确定 yi\oplus y_i,将 2ia2i2^i\frac{a}{2^i}2ib2i2^i\frac{b}{2^i} 拼在一起放入线性基中。复杂度 O(nlog3V)O(n\log^3V)

减少有用的 (ai,bi)(a_i,b_i)。如果 aia_i 能被 a1,,ai1a_1,\dotsb ,a_{i-1} 表示出,那 bib_i 消去对应的 bjb_j,变成 (0,bi)(0,b_i') 不会造成影响。只有 O(logV)O(\log V)(ai,bi)(a_i,b_i)。复杂度 O(nlogV+log3V)O(n\log V+\log^3 V)

8.20

模拟赛 T3

从深度大往小维护线段树,启发式合并。uuvv[l,r][l,r] 差分维护加 11,lca 对应 u,vu,v 的儿子处删除。每次修改后,线段树上二分极长非零连续段的左右端点,回答能回答的询问并删除询问。将询问挂在 rr 上,线段树维护区间 ll 的最大值,每次取出并删除。

CF1174E

a1a_1 一定是 2x3y2^x3^y,且 y=0/1y=0/1。每次 xxyy 减一或不变,dp 即可。

8.21

CF1264D2

模拟赛 T2。

等于在唯一一个 prei=sufi+1pre_i=suf_{i+1} 的地方计算答案。枚举分界点,设左边有 xx(ll?,右边有 yy)rr?,答案为 i=0l(li)×(rx+iy)×(x+i)=x×i=0l(li)×(rrx+yi)+l×i=0l(l1i1)×(rrx+yi)=x(l+rr+yx)+l(l+rxrx+y1)\sum_{i=0}^l \binom l i\times \binom r{x+i-y}\times (x+i)=x\times \sum_{i=0}^l\binom l i\times \binom r{r-x+y-i}+l\times\sum_{i=0}^l \binom{l-1}{i-1}\times \binom{r}{r-x+y-i}=x\binom{l+r}{r+y-x}+l\binom{l+r-x}{r-x+y-1}

CF1616H

模拟赛 T4。

建 trie dp,设 fuf_u 表示 uu 子树内选点两两异或小于等于 xx 的方案数,gu1,u2g_{u1,u2} 表示 u1,u2u1,u2 子树内选点两两异或小于等于 xx 的方案数。分讨向下递归,每个点只经过一次。