暑假集训CSP提高模拟1

A.Start

比较小的大模拟,还没改出来

B.mine

线性推一下(这个题记搜容易写偏,因为分讨太多)

f[i][j],第一维表示位置,第二位表示末位状态(是雷,是 0,是 2,是 1 且雷在左边,是 1 且雷在右边)

初始化:

  1. 第二位有雷,第一位初始化为右雷 1

  2. 第二位是问号,则第一位可以是右雷 10

  3. 否则为空

转移:

  1. 是雷:前一位可为右雷 12 或雷

  2. 0,前一位可为 0 或左雷 1

  3. 1,分讨,左雷 1 前一位可为雷,右雷 1 前一位可为 0 或左雷 1

  4. 2,前一位只能为雷

  5. 是问号,分讨上述情况

最后统计答案直接对 0,左雷 12 求和即可(因为不存在的可能方案为零,对答案无影响,此处不用分讨)

C.小凯的疑惑

x=k1(x,y),y=k2(x,y)

ax+by=ak1(x,y)+bk2(x,y)

ax+by=(ak1+bk2)(x,y)

注意到当 (x,y)1 时,无法得到全部正整数,此时无解

当每种都必须选一个时,不能凑成的最大钱数为 x×y

证明如下:

充分性:x×y=ax+by 无解

假设原式有解,且 gcd(x,y)=1,根据裴蜀定理,x×y=1

ax+by=1,再由裴蜀定理,此方程无全正解,假设不成立

必要性证明比较麻烦,参见 此处

因此在 x×y 范围内统计答案即可,暴力可过

UPD: 感谢评论区大佬的指正,实际上最大的不可获得数字为 xyxy,这里算的是 a,b<0 的情况,还要再减去一个 (a+b)

D.春节十二响

注意到,两个节点能合并,当且仅当他们在不同的子树内

并且,两个更大的点合并后,对答案的贡献越少

因此考虑从深到浅枚举根节点合并,每次都挑两个部分最大的合并,这样能够使答案尽可能的小

想到优先队列,维护一下即可

posted @   HaneDaniko  阅读(30)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示