日常掉分..
D 被无良学弟 hack 了,这个故事告诉我们 CF 上不要写spfa...
E 比赛时候觉得挺难的(然后溜了),赛后仔细分析了下觉得还是挺妙的。
F 傻傻分析不清,然而题解分析的贼清楚..
最后一题日常不会..
A. Minimizing the String
题意
删除一个字符使得字典序最小
分析
贪心呀,从前往后删第一个 s[i]>s[i-1]。或者最后一个。
1 |
|
B. Divisor Subtraction
题意
给一个数字 n,每次减去其最小质因子,重复此步骤,问共几次减到 0
分析
如果 n 是质数,就一次。
如果 n 是偶数,就 n/2。
如果 n 是奇数,最小质因子 d 一定是奇数,故 (n-d)/2+1
1 |
|
C. Meme Problem
解一元二次方程
1 |
|
D. Edge Deletion
题意
给你一张图,有边权。问你最多留下哪 k 条边,使得原图和新图中由 1 的最短路长度不变的点留下的最多
分析
先建由 1 出发的最短路树,把多余的边全删掉。
还不够的话,从叶子开始删边。(拓扑排序或者别的什么)
1 |
|
E. Vasya and a Tree
题意
给定一棵树和若干操作。操作 (v,d,x) 是 v 的子树中与 v 距离小于等于 d 的节点权值都加上 x
问所有操作结束后的每个点的权值。
分析
操作可离线。建一棵基于深度的线段树(或者树状数组),在 DFS 不断修改和查询。
单次修改相当于 区间 [dps(v), dps(v)+d] 加上 x 。
区间修改单点查询。
1 |
|
F. Summer Practice Report
题意
魔改题意。有 n 个连续的区间,告诉你每个区间里需要放\(x_i\)个物体 a,(y_i\)个物体 b
问你是否有一种放置方法,能不出现连续 k 个以上的 a 或 b(可跨区间)。
分析
设 \(dp[i][0]\) 表示第 i 个区间, 若以 a 物体结尾,末尾最少的 a 物体数量。\(dp[i][1]\)类似。
最后判断 \(dp[n][0]\) 或 \(dp[n][1]\) 是否满足要求即可。
考虑 \(dp[i-1][0]\)转移至\(dp[i][0]\):
首先要满足 \(x_i \ge \lceil\frac{y_i}{k}\rceil\),即每 k 个 b 物体后插入一个 a 。
然后当 \(x_i \le y_i*k+1 - dp[i-1][0] \) 时,某尾 a 的数量始终为 1,即每个 b 前面插满 k 个 a ,包括上一段的。
\(x_i\)还多的话,则最少为 \(x_i-(y_i*k-dp[i-1][0])\)。
可同理考虑\(dp[i-1][1]\)转移至\(dp[i][0]\),以及\(dp[i][1]\)的转移。
1 |
|