暑假集训CSP提高模拟1
A.Start
比较小的大模拟,还没改出来
B.mine
线性推一下(这个题记搜容易写偏,因为分讨太多)
设 \(f[i][j]\),第一维表示位置,第二位表示末位状态(是雷,是 \(0\),是 \(2\),是 \(1\) 且雷在左边,是 \(1\) 且雷在右边)
初始化:
-
第二位有雷,第一位初始化为右雷 \(1\)
-
第二位是问号,则第一位可以是右雷 \(1\) 或 \(0\)
-
否则为空
转移:
-
是雷:前一位可为右雷 \(1\),\(2\) 或雷
-
是 \(0\),前一位可为 \(0\) 或左雷 \(1\)
-
是 \(1\),分讨,左雷 \(1\) 前一位可为雷,右雷 \(1\) 前一位可为 \(0\) 或左雷 \(1\)
-
是 \(2\),前一位只能为雷
-
是问号,分讨上述情况
最后统计答案直接对 \(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.春节十二响
注意到,两个节点能合并,当且仅当他们在不同的子树内
并且,两个更大的点合并后,对答案的贡献越少
因此考虑从深到浅枚举根节点合并,每次都挑两个部分最大的合并,这样能够使答案尽可能的小
想到优先队列,维护一下即可