【ICPC练习】2021ICPC亚洲区域赛南京

感觉刷cf遇到了一点瓶颈,开启真题练习计划。


比赛链接

VP赛场上完成部分:ACHM

A

比较简单的构造,上下和左右分开,一个方向先用n-1次移动到距离目标更近的一段端点再同步移动。保证小于3*(n-1)次

C

考虑到答案是一个数+(一个数-k),那么我们扫过去的时候记录一下哪个时候这两个数的差分最大,通过这个差分调大某一个数的个数(差分是因为在区间中如果既有这个数-k也有这个数,这个数同时也会消失)。

H

树DP 对于t[x]我们发现只有3与1、2不同。f[x][0/1/2]。f[x][0]:从这个地方开始往子树走然后最终能得到的最大分数。f[x][1]表示a[x]不拿,其他的能得到的最大分数(f[x][0]=f[x][1]+a[x])。f[x][2]表示自己拿但自己的所有儿子不拿,但是继续拿子树部分得到的最大分数。然后转移就考虑是一个儿子一路走下去然后把其他儿子的剩余拿完,还是t[y]==3把这个儿子拿了再绕回来拿别的,稍加思考就是一个很基础的树dp。

M

这个题我们发现如果存在一个<=0的数和一个>=0的数就是所有的数的绝对值。如果全正或全负,我们就考虑用最小的代价构造出存在一个负数或正数然后全部绝对值相加就是最终答案了。

后续补题

D

我们考虑如果这个问题全是不相同的数。那么考虑每个值的贡献就是,第一次,第一个数后面的第一大的数,再其后第一大的数。。。然后这些数会开始贡献一次,然后在2,3,,,,n所有的数贡献前面比它大的数有几个次。

如果需要加上相同的,那么也就是相同数字只贡献一次。值得注意的是存在特殊情况,详见

实在是无言以对,下次还可能遇见考虑不到,该题值得再次品味。

J

对于一对(a,b)(不妨a<b),如果可以对a/g,b/g,那么(a-b)/g。我们发现如果加减a,b的差值是不变的,于是转移的时候只需要转移a,b差值的因数就可以了。然后。。。根据题解发现乘除的顺序不会影响状态数量,最终任然是因数级别的,于是我们就dp(a,b-a)这样考虑转移记忆化搜索就可以了。

posted @ 2022-03-30 19:43  Newuser233  阅读(256)  评论(0编辑  收藏  举报