USACO Ag题解

T1

首先已经确定了每个点上的数是什么了,考虑把每个点减去目标数,令他为a[i],那么0肯定不动,大于0肯定往外移。

考虑按照树形dp的想法来做,设f[i]表示以i为根,子树的a[i]和

如果f[v]>0,那么一定要把多余的往上运输,

如果f[v]<0 && f[u]>=0 直接把当前根节点上的点往下运输即可

如果f[v]<0 && f[u]<0 不能一次完成,不如不完成,先上传等着父亲集满再往下运

方案数用vector记录一下

T2

设f[i]表示当前数字是i时,必胜还是必败,需要用走几次 打表发现规律,除了n%4==0的情况,都是先手必胜,步数分别是:

1.偶数,步数为n/2

2.奇数,步数为与最小4的倍数差为质数的步数+1

考虑证明这个东西,首先要明确的是,如果当前状态已经必败,那么先手会选择一个当前步数最大的先手必胜态(让自己输得更慢);必胜的话会选择需要步数最小的必败态。

那么我们只要证明一个数一定可以表示成一个4的倍数加一个质数或1的形态。

这道题就证明完了。

因为这道题的特殊性(可加1),所以一次操作可以减1,2,3也就是说一定可以减到一个4的倍数,可以证明为必胜态,找最小步数直接暴力找,不会很慢。

特别的,二的倍数非四的倍数一定只能减2。

然后4的倍数也不可能减到四的倍数。

这样我们证明了非4倍数一定转移到4的倍数,4的倍数转移不到4的倍数。

那么所有先手必胜态就是非4倍数,因为可以转移到一个先手必败态(步数为与最小4的倍数差为质数的步数+1)。

先手必败态是4倍数,因为转移到的都是先手必胜态。(会转移到需要最大步数的即n-2)

打出表后直接判断即可

T3

假定第一位填0,第二位填 0+r[1][2],考虑第三位填什么, 如果第三位填 a[2]+r[2][3]不行,也就是被r[1][3]限制了,那么就填a[2]-r[2][3]。如果正确的话显然可以推至 i,i-1,i-2

考虑证明一定只有一种情况,那我们只要证明不会出现两种情况就行,显然,如果i-1是最大值,我们可以加r[i-1][i]使最大值变大,而且除非i-2=i-1,那么减r[i-1][i]一定与加r[i-1][i]不等。

注意上面相同的情况,一定要判。复杂度O(n),考场写的暴力O(n^2)。

posted @ 2023-01-06 14:40  yszs  阅读(34)  评论(0)    收藏  举报