暑假集训CSP提高模拟1

A.Start

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

B.mine

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

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

初始化:

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

  2. 第二位是问号,则第一位可以是右雷 \(1\)\(0\)

  3. 否则为空

转移:

  1. 是雷:前一位可为右雷 \(1\)\(2\) 或雷

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

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

  4. \(2\),前一位只能为雷

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

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

C.小凯的疑惑

\(x=k_1 (x,y),y=k_2 (x,y)\)

\(ax+by=ak_1 (x,y)+bk_2(x,y)\)

\(ax+by=(ak_1+bk_2)(x,y)\)

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

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

证明如下:

充分性:\(x\times y=ax+by\) 无解

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

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

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

因此在 \(x\times y\) 范围内统计答案即可,暴力可过

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

D.春节十二响

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

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

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

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

posted @ 2024-07-18 16:13  HaneDaniko  阅读(24)  评论(2编辑  收藏  举报