竞赛讨论区 > 【题解】牛客练习赛21
头像
牛客网小运营
发布于 2018-12-27 17:41
+ 关注

【题解】牛客练习赛21

(题解由比赛出题人提供,点击右侧“本文相关内容”的题目即可开始做题)

T1 黑妹的游戏I
际上我们可以得到的数字一定只可能是某个数的倍数,因为最终黑板上的数字一定是ax+by+cz 这样的形式。考虑更相减损术的过程,可以发现能得到的最小数字为gcd(a,b,c),然后把max(a,b,c)不停的减这个数字就可以得到所有的数字啦。

T2 黑妹的游戏II
两位选手都会选择最优的策略,那么每位选手都会选择当前位置到右下角的路径中,对自己最有利的位置。令dp[i][j]表示从点(i,j)到终点的路径中,自己总分数减去对方总分数的最大值是多少,那么显然有dp[i]=a[i][j] - max(dp[i+1][j], dp[i][j+1])。dp[1][1]即为答案。

T3 黑妹的游戏III
每次选择除掉两个数之间的公共素因子显然不会使答案变劣,那么可以把每个数字分解成素因子的幂乘积的形式,我们可以依次考虑每个素因子的情况。
下面是一个贪心的思路:
每次选择素因子幂最大的两个数,除以这个素因子,一直到无法选择为止。
请读者考虑证明这个贪心。

T4 黑妹的游戏IV
可以看出这是一个网络流模型,考虑预处理出所有的(i,j)对和(p,q)对,源点S和(i,j)连容量为1的边,(p,q)和汇点T连容量为1的边,如果(i,j)和(p,q)可以同时选择则连容量为1的边。跑一遍最大流即可得出答案。
边数可能很大,注意到(i,j)和(p,q)可以连边的条件是不互质,那么我们可以将质因子作为中间点,(i,j)如果有质因子v,则(i,j)向v连一条容量为INF的边,(p,q)同理。其余和上面一样。
这样边数就很合适了。

T5 黑妹的游戏V
考虑这样一个问题,有n个二维整点(xi, yi),将它们移动到哪一个点可以使得总移动步数最小。
可以证明存在一个解(X, Y),X是x坐标的中位数,Y是y坐标的中位数。这里指的中位数与一般的中位数有一点点不同,比如在这里,“2 , 3”的中位数可以是2,也可以是3。
以上告诉了我们,这个解的x坐标和y坐标一定属于这n个点的坐标集合。
所以我们就可以O(n^2)枚举这个点啦。

T6 黑妹的游戏VI
虑使用动态规划来解决这个问题,令dp[i][j][k]表示数组的前i个数里面有k个x且第i个数字是j的方法数。
图片说明
图片说明
图片说明
图片说明

其他疑问可加以下交流群(加入一个即可啦~)
牛客多校算法训练营1:453799454
牛客全国算法训练营2:330766563
牛客多校算法训练营3:934889305

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐