【题解】CF1989

A

  • 注意到在单位时间内,硬币会下降一格,但是人可以在下降一格的同时左右平移,这其实就相当于人和硬币在垂直方向上都没有动,只有人在水平方向上走了一格
  • 所以重复这个过程,发现人其实可以“瞬移”到水平方向上的任意一个位置
  • 这也就是说,我们其实只需要关注硬币的纵坐标
  • 考虑 (0,0) 以上位置:显然可以接到
  • 考虑 (0,1) :由于人是先走的,所以可以接到
  • 考虑 (0,2) 以下位置:发现人永远追不上硬币
  • 所以对于每个点,如果纵坐标小于等于 2,就接不到,否则可以接到

B

  • 由于字串必须是连续的一段,我们考虑以 a 基础,在前后加上一些字符,这样一定满足第一个要求,我们现在考虑如何满足第二个要求
  • 考虑子序列和字串的区别:子序列可以不连续,但是它和字串都一定满足顺序关系
  • 一个很 naive 的贪心思路是:双指针找 b 种的字符在 a 中是否有对应
  • 但这显然很好 hacka=1222222b=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 个贡献的代价是 aibi,但你必须先有 ai 的钱才能使用这种方式
    • 对于 m 种不同的钱数,独立计算最大贡献并求和
  • 注意到:如果有两种贡献方式 (i,j) 满足 limilimjcosticostjj 这种贡献方式屁用没有
  • 所以我们先去掉无用的贡献方式,具体地,其中一种实现是:按照 lim 升序排序,如果发现 costicosti1 那么 i 无用
  • 注意到:如果我们现在有 i 个钱,那么我们一定选择满足条件的贡献方式中代价最小的,考虑 dp
  • fi 表示 i 个钱能获得的最大贡献
  • 转移 fi=ficostmax(j)|limj<=i+1
  • 注意到钱的数据范围高达 1e9,dp 数组显然只能开到 1e6 量级
  • 注意到贡献的最大限制是 1e6,所以钱中高于 1e6 的部分,都一定会使用 lim 最高的贡献方式
  • 所以直接计算钱中超过 1e6 的部分的贡献,再查表获得 1e6 量级的部分的贡献相加即可

E

  • 题很难,看起来更难,但只需要一句话就能讲完,或者说,这道题需要极强的注意力
  • 注意到:题目本质求的是:将 n 个数分成至少 k 个段的方案数
  • fi,j 表示前 i 个数分成 j 段的方案数
  • 转移:p=1i1fp,j1
  • 但这道题还有个 conor case:
    • 如果 i2in,那么最后一段长度不能为 2
    • 但是如果 i=2i=n 是可以的,因为此时 b 会变成 2,1 或者 1,2

F

  • 对不起,但是我真的看不懂这道黑的抽象染色建图+动态加边维护强连通分量+整体二分分解强连通分量+并查集维护缩点的任何一篇题解 /kk
posted @   yeyou26  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示