2024.10 做题记录

10.1

gym104922I

wqs 二分,维护 dp 值和取到 dp 值的 kk 的区间。倒序记录方案,要满足能落到合法区间中。

10.2

AT_s8pc_5_h

模拟赛 T3。

建子序列自动机,DAG 上 dp 并按字典序出边贪心记录方案。DAG 链剖分。uu2fvfu2f_v\ge f_uvv 连边,形成内向树。重边倍增,轻边跳一次 fuf_u 减半。

10.3

模拟赛 T2

拆贡献为跨过 ii 时的答案,枚举有 jji\le i

10.5

Q9449

从后往前加,维护拓展域并查集。每次合并后,需要能凑出和为 nn。拓展域限制 sizi,sizjsiz_i,siz_j 只能选一个,维护 aibja_i-b_j。bitset 二进制分组,本质不同数 O(n)O(\sqrt n) 级别。复杂度 O(nn2w)O(\frac{\sqrt nn^2}{w})

10.8

模拟赛 T3

uvu\to v 等价与 a 中的出现顺序 uu+1u\to u+1 先于 u+1u+2u+1\to u+2。设 dpi,jdp_{i,j} 表示前 ii 个,第 ii 个排名为 jj,前缀和维护。

模拟赛 T4

ll 最远的合法 rr 满足前缀 (?) 大于 00。限制为 grlrflg_r\le l\le r\le f_l,维护奇偶的区间历史和单点修改线段树扫描线。

10.10

模拟赛 T4

计算已知当前可能为 ss 的答案,每次分裂,只用算 kk 次。将每个起点的状态压为一个数,复杂度 O(nmk)O(nmk)

10.11

模拟赛 T4

建生成树的等效链,线段树 t0/1,0/1t_{0/1,0/1}维护区间 llrr 是否与 00 联通。

HDU6757 Hunting Monsters

模拟赛 T3。

aibia_i\le b_i 的在 ai>bia_i>b_i 前,aibia_i\le b_iaia_i 升序i,ai>bia_i>b_ibib_i 降序。aibia_i\le b_i 排序后取前 kk 个,ai>bia_i>b_i 部分设 dpi,jdp_{i,j} 表示考虑 [i,n][i,n]jj 个的最小初始值,有决策单调性,分治合并。

优化后半部分 dp,dpi,j=min(ai+max(fi1,j1bi,0),fi1,j)dp_{i,j}=min(a_i+max(f_{i-1,j-1}-b_i,0),f_{i-1,j})。对于 fi1,j0bif_{i-1,j0}\ge b_ifi1f_{i-1} 下凸,优先队列维护斜率,小于 bib_i 的部分不会在更新,大于 bib_i 的部分等价于加入一段斜率为 aia_i 的线段。

arc104e

nnn^n 枚举排名,转换为长为 mm 的单调递增序列,每个数有上界的方案数。离散化后设 dpi,jdp_{i,j} 表示第 ii 个数在第 jj 段,枚举之前最近的不在同一段的是第 kk 个数在第 ll 段。

10.12

【5校day5】木棍

差分约束,把线段缩为单点,要求两点间距离大于 kk。将关键点离散化。数据结构模拟 SPFA nn 轮。

spsq+pqks_p\le s_q+\lceil\frac{p-q}{k}\rceil,维护模 kk 为下标的 mindisq+qk\min dis_q+\frac{q}{k}syisxi1+cis_{y_i}\le s_{x_i-1}+c_isai1sbi+f(ai,bi)s_{a_i-1}\le s_{b_i}+f(a_i,b_i),从后往前扫 llrr 处线段树维护 disrf(l,r)dis_r-f(l,r)

The 3rd Universal Cup. Stage 12

The 3rd Universal Cup 做题记录 (2)

10.14

模拟赛 T4

只计算同时出现 1,2,31,2,3 的序列。令 11 为全局众数,在同时出现 1,2,31,2,3 的子段中 11 都是众数。即维护前缀和与 maxsj1[sj=2]\max s_{j-1}[s_j=2]maxsj1[sj=2]\max s_{j-1}[s_j=2] 的差。

10.15

模拟赛 T3

移动 dd 的代价为 d2(C+4)+(dmod2)(C+3)+x\lfloor\frac{d}{2}\rfloor(C+4)+(d \bmod 2)(C+3)+x。 额外的代价为跨越的点。对于下标奇偶性相同的终点,对应的起点单调。设 dpi,jdp_{i,j} 表示前 ii 个起点 jj 个终点为奇数的最小代价 dp。

模拟赛 T4

[JOISC2022] 洒水器 的方式将距离为 rr 拆成 uu 子树内离 uurr。其余部分正常线段树打 tag,维护 r+1r+1 个 tag,表示离区间最小深度差 ii 的点要加这个 tag,还有一个 tag 维护子树加,对整个区间作用。

10.16

模拟赛 T3

bib_i 降序做。按 bib_i 升序排序,设 dpi,jdp_{i,j} 表示前 ii 人做 jj 个,dpi,j=max(dpi1,j1,bi)+aidp_{i,j}=max(dp_{i-1,j-1},b_i)+a_i。下凸,维护斜率,基本同上面那道。

10.17

模拟赛 T4

平面图最短路转最小割。在流了最短路的基础上,加入流量 ++\infty 代价为 11 的边,加入超级源点向源点连流量为 kk 的边,跑费用流。

P8861

树状数组维护左右端点的 cnti\sum cnt_icnti×i\sum cnt_i\times i。线段拍到猫树上,优先队列和并查集维护,每次向中间合并或把一个线段推到下一层。复杂度 O(nlog2n)O(n\log^2 n)

10.29

【模板】基于值域预处理的快速离散对数

记使得 gxn(modmod)g^x\equiv n\pmod{mod} 的最小非负 xxlogn\log n,有 logab=loga+logb\log ab=\log a+\log b

n=mod+1n=\sqrt{mod}+1,预处理 nn 以内的 logx\log x。线性筛,只需要 bsgs 求出 nn 以内 nlnn\frac{n}{\ln n} 个质数的 logp\log p,就可以 O(n)O(n) 求出 nn 以内所有 logx\log x。哈希表,预处理时 BB 次插入,nlnn\frac{n}{\ln n}modB\frac{mod}{B} 的查询,取 B=n×modlnnB=\sqrt{\frac{n\times mod}{\ln n}}

查询 loga\log a 时,如果 amod+1a\le \sqrt{mod}+1 直接得出,否则有 b×a+c=modb\times a+c=modbmodb\le \sqrt{mod}loga=logcb=log(c×1)logb=log(mod1)+logclogb\log a=\log \frac{-c}{b}=\log(c\times -1)-\log b=\log (mod-1)+\log c-\log b。又应为有 (b+1)×a+c=mod+a(b+1)\times a+c=mod+aloga=logacb+1=log(ac)log(b+1)\log a=\log \frac{a-c}{b+1}=\log(a-c)-\log (b+1)logb\log blog(b+1)\log(b+1) 已知,log(mod1)\log (mod-1) 提前算,min(c,ac)a2\min(c,a-c)\le \frac{a}{2},选 ccaca-c 较小的一边递归可以做到 logmod\log {mod} 查询。

复杂度 O(mod34log12mod+qlogmod)O(\frac{mod^{\frac{3}{4}}}{\log^{\frac{1}{2}}mod}+q\log {mod})