[题解]CodeForces#290(div1)
开题之后发现做过div2的QwQ
A Fox And Names
B Fox And Jumping
题目描述
你希望遍历一个长度为无穷的环
有\(n\)种卡片,你可以花费\(c_i\)的代价购买第\(i\)种卡片并可以无限次使用,每一次可以让你顺/逆时针跳\(a_i\)步,问是否存在一种方案,使得你可以遍历所有点,如果有,输出最小代价
\(1\leq n \leq 300,1\leq a_i\leq 10^9,1\leq c_i\leq 10^5\)
分析
我幼小呀
首先可以把问题简化为是否存在一种方案,使得\(\sum a_i*x_i=1\),其中,\(a_i\)是选了的那些卡片,\(x_i\)为任意整数
因为如果可以向某一个方向走1步,那么就可以遍历整个环,并且如果要遍历整个环,就必然要有一种方案可以向某个方向走一步
好了然后根据裴蜀定理的扩展,所有\(a_i\)的\(gcd\)要为\(1\),那么直接\(dp\)就可以了
发现gcd的个数不会太多,可以用个map
C Fox And Dinner
题目描述
给出\(n\)个\([2,100]\)的数,问能否把他们分成若干个大于等于3的环,使得任意相邻的两个数之和为质数
\(1\leq n \leq 100\)
分析
由于数值大于2,所以和为质数的两个数必然是一奇一偶。把所有的数分成奇偶两列,每一个数左右都有两个奇偶性和自己不同的数,那么从\(S\)到每个奇数点连\(2\)的边,从每个偶数点到 \(T\)连\(2\)的边,跑网络流就OK啦