专栏文章

25暑

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miofklz6
此快照首次捕获于
2025/12/02 18:23
3 个月前
此快照最后确认于
2025/12/02 18:23
3 个月前
查看原文
前面没来

day6 字符串

A

  • 如果有解,则都能通过最多一次操作把它变成目标串
  • 我们可以先预处理出所有换位置后可以达到目标串的位置,进行 DP

B

  • KMP板子

D

  • 使用字符串哈希
  • 枚举'+'和'='位置,验证是否满足 a+b=ca + b = c
  • 检查是否有前导零
  • 需要选择一个特殊的模数防止被卡

D

  • 使用 Manacher 算法处理字符串
  • 预处理回文半径
  • 贪心从左往右折叠,由于回文的性质保证答案正确

day7 dp(1)

A

  • 状态定义:fi,cf_{i,c} 表示将前 ii 个元素染色,且第 ii 个元素值为 cc 时的最小硬币数
    • 直接染色:f[a[i]][i] = min(f[0/1/2][i-1] + 1)
    • 传递染色:f[a[i]-1][i] = min(f[0/1/2][vis[i]-1] + 1)
  • 使用滚动数组优化空间

B

  • 动态规划求解最优选择问题
  • 状态定义:fj,kf_{j,k} 表示选 jj 个杯子,总容量为kk 时的最大水量
  • f[j][k] = max(f[j][k], f[j-1][k-b[i]] + a[i])

C

  • 动态规划求解最大美丽值问题
  • 状态定义:fi,jf_{i,j}`表示前 ii 张图片选择 jj 张时的最大美丽值
  • 使用单调队列优化区间最大值查询
  • 转移方程:f[i][j] = max(f[i-k..i-1][j-1]) + a[i]

day9 dp(2)

A

  • 状态定义:fi,jf_{i,j}表示前 ii 次睡眠,当前时间为jj 时的最大好睡眠次数
  • 每次选择 aia_iai1a_{i-1}小时后的时间点, f[i][j] = max(f[i-1][(j-a[i])%mod], f[i-1][(j-a[i]+1)%mod]) + C(j)

B

  • 状态定义:fi,jf_{i,j} 表示前 ii 个矩形获得 jj 分的最小操作次数
  • 对每个矩形枚举可能获得的分数 kk, f[i][j] = min(f[i][j], f[i-1][j-kk] + cost)

day10 dp(3)

A

  • 状态定义:f[1/2/3/4]f[1/2/3/4] 分别表示匹配到h/a/r/d时的最小代价
  • 关键转移:
    • 遇到 h 时累计代价
    • 遇到 a/r/d 时取保留或删除的最小代价

C

  • 状态定义:fl,rf_{l,r} 表示构建 llrr 的方案数
  • 关键转移:
    • 当前字符添加到前端:if (s[len]==t[l]) f[l][r] += f[l+1][r]
    • 当前字符添加到后端:if (s[len]==t[r]) f[l][r] += f[l][r-1]
  • 初始化:单字符方案数为 22(前后加为不同方案)

day11 组合数学(1)

A

  • 模拟二分过程,统计需要满足:
    • ai<xa_i < x 的元素数 cnt1cnt1
    • ai>xa_i > x 的元素数 cnt2cnt2
  • 计算合法排列数: (x1cnt1)cnt1!(nxcnt2)cnt2!(ncnt1cnt21)!\binom{x-1}{cnt1} \cdot cnt1! \cdot \binom{n-x}{cnt2} \cdot cnt2! \cdot (n-cnt1-cnt2-1)!

C

  • 每个白格(x,y)(x,y)的贡献为(x+yx)\binom{x+y}{x}
  • 总操作数为所有白格的组合数之和: x=0n(x+axx+1)\sum_{x=0}^n \binom{x+a_x}{x+1}
  • 利用组合数性质 y=0k1(x+yx)=(x+kx+1)\sum_{y=0}^{k-1}\binom{x+y}{x} = \binom{x+k}{x+1}

D

  • 总方案数计算:(l+1)(l+2)(l+3)6\frac{(l+1)(l+2)(l+3)}{6}
  • 非法方案数计算(不满足三角形不等式):
    • 对每种排序(x,y,z)(x,y,z)计算x+yz+kx+y \leq z+k的情况
    • 非法数:k=0l(kd+1)(kd+2)2\sum_{k=0}^l \frac{(k-d+1)(k-d+2)}{2},其中d=zxyd=z-x-y
  • 最终合法方案数:总方案数 - 三种非法情况之和

E

  • BST 性质:左子树小于根小于右子树
  • 动态规划计算方案数:
    • 对未知节点区间[l,r][l,r],方案数为(rl+sumsum)\binom{r-l+sum}{sum}
  • 最终答案:(rl+sumsum)mod998244353\prod_{\text{}} \binom{r-l+sum}{sum} \bmod 998244353

day13 组合数学(2)

A

  • 整体方案数:(n/3n/6)\binom{n/3}{n/6}(选择 n/6n/6 组染 2211 蓝,其余染 1122 蓝)
  • 每组内部方案数乘数:
    • 若三边权相同:有 33 个方案
    • 若最小两边权相同:有 22 个方案

day14 图论(1)

A

  • 将同一组连边,端点一定只有一条边
  • 从端点开始 DFS 构建排列链

B

  • 反向 Dijkstra 从所有出口出发
  • 能挡就挡因为决策点当前最优
  • 输出起点 11 的最短逃生时间

H

  • 二分图建模:每个泥地连接对应的行列节点,行编号为左部,列编号为右部
  • 网络流求解最小点覆盖

day15 图论(二)

A

  • 二分 midmid,构建满足 aimida_i \leq mid 的子图
  • disidis_i 记录到 ii 点的最长路径
  • 存在长度 k\geq k 的路径或环

day17 树上问题(1)

A

  • 重链剖分线段树维护节点深度贡献值
  • 贪心选择贡献最大节点
  • 更新路径贡献 1-1

B

  • 选择 nkn-k 个节点, 从叶子节点开始BFS扩展
  • 答案为 mxmx 即为最小化最大距离

day18 树上问题(2)

A

  • 构建极值,应该在每个子树内构造几值,每个子树的权值形成连续区间
  • 答案为 dfs 序

B

  • 结合题意,必须是一条链
  • 暴力枚举并搜索可行方案

day19 数论

A

  • 前一个数的范围一定是 [xp+1,x1][x - p + 1, x - 1]pp 为最大质因数
  • 枚举 x1x1 判断是否合法

B

  • 预处理质数,计算每个数的质因数个数
  • 答案为 2cnt2^{cnt}

C

  • 考虑将数分组,且相邻数相除为 kk, 组内数不可以连续取,递推求解(斐波那契数)
  • 观察求出长度为 ii 的个数

评论

0 条评论,欢迎与作者交流。

正在加载评论...