A
- 注意到在单位时间内,硬币会下降一格,但是人可以在下降一格的同时左右平移,这其实就相当于人和硬币在垂直方向上都没有动,只有人在水平方向上走了一格
- 所以重复这个过程,发现人其实可以“瞬移”到水平方向上的任意一个位置
- 这也就是说,我们其实只需要关注硬币的纵坐标
- 考虑 \((0,0)\) 以上位置:显然可以接到
- 考虑 \((0,-1)\) :由于人是先走的,所以可以接到
- 考虑 \((0,-2)\) 以下位置:发现人永远追不上硬币
- 所以对于每个点,如果纵坐标小于等于 \(-2\),就接不到,否则可以接到
B
- 由于字串必须是连续的一段,我们考虑以 \(a\) 基础,在前后加上一些字符,这样一定满足第一个要求,我们现在考虑如何满足第二个要求
- 考虑子序列和字串的区别:子序列可以不连续,但是它和字串都一定满足顺序关系
- 一个很 naive 的贪心思路是:双指针找 \(b\) 种的字符在 \(a\) 中是否有对应
- 但这显然很好 \(hack\):\(a=1222222\quad b=2222221\)
- 注意到数据范围很小
- 考虑枚举 \(b\) 作为 \(a\) 的子序列出现的第一个字符,于是本题得到完美解决
C
- 考虑枚举每种情况:
- \((0,0)\) 显然不管
- \((1,1)\) 相当于给任意一个电影 +1,我们记录一下,放到后面考虑
- \((-1,-1)\) 相当于给任意一个电影 -1,我们记录一下,后面考虑
- \((0,1)\) 显然直接给第二个电影 +1 是不劣的
- \((1,0)\) 显然直接给第一个电影 +1 是不劣的
- \((0,-1)\) 显然不管是不劣的
- \((-1,0)\) 显然不管事不劣的
- \((-1,1)\) 显然直接给第二个电影 +1 是不劣的
- \((1,-1)\) 显然直接给第一个电影 +1 是不劣的
- 经过上面一顿操作,两个电影都有初始分数,我们必须选择一些分数砍掉,再加上一些分数
- 显然,砍的时候先砍大的,加的时候先加小的即可
D
- 注意到只要造了剑就肯定可以融掉,所以答案一定是 \(2\) 的倍数,我们接下来只考虑最多能造多少剑
- 不妨转换以下题意:
- 我们有 \(n\) 中获得贡献的方式,形如:获得 \(1\) 个贡献的代价是 \(a_i-b_i\),但你必须先有 \(a_i\) 的钱才能使用这种方式
- 对于 \(m\) 种不同的钱数,独立计算最大贡献并求和
- 注意到:如果有两种贡献方式 \((i,j)\) 满足 \(lim_i\leq lim_j \wedge cost_i \leq cost_j\) 那 \(j\) 这种贡献方式屁用没有
- 所以我们先去掉无用的贡献方式,具体地,其中一种实现是:按照 \(lim\) 升序排序,如果发现 \(cost_i \ge cost_i-1\) 那么 \(i\) 无用
- 注意到:如果我们现在有 \(i\) 个钱,那么我们一定选择满足条件的贡献方式中代价最小的,考虑 dp
- \(f_i\) 表示 \(i\) 个钱能获得的最大贡献
- 转移 \(f_i=f_{i-cost_{\max(j)|lim_j<=i}}+1\)
- 注意到钱的数据范围高达 1e9,dp 数组显然只能开到 1e6 量级
- 注意到贡献的最大限制是 1e6,所以钱中高于 1e6 的部分,都一定会使用 \(lim\) 最高的贡献方式
- 所以直接计算钱中超过 1e6 的部分的贡献,再查表获得 1e6 量级的部分的贡献相加即可
E
- 题很难,看起来更难,但只需要一句话就能讲完,或者说,这道题需要极强的注意力
- 注意到:题目本质求的是:将 \(n\) 个数分成至少 \(k\) 个段的方案数
- \(f_{i,j}\) 表示前 \(i\) 个数分成 \(j\) 段的方案数
- 转移:\(\sum_{p=1}^{i-1}{f_{p,j-1}}\)
- 但这道题还有个 conor case:
- 如果 \(i\neq 2 \land i \neq n\),那么最后一段长度不能为 \(2\)
- 但是如果 \(i = 2 \lor i = n\) 是可以的,因为此时 \(b\) 会变成 \(2, 1\) 或者 \(1, 2\)
F
- 对不起,但是我真的看不懂这道黑的抽象染色建图+动态加边维护强连通分量+整体二分分解强连通分量+并查集维护缩点的任何一篇题解 /kk
posted @
2024-11-12 08:18
yeyou26
阅读(
18)
评论()
编辑
收藏
举报