2020icpc上海部分题解
1|0B
1|1题目大意
给你两张扫雷图A和B,你最多对B修改次,问是否能让B中的数字之和等于A。
1|2解题思路
扫雷图中的数字等价于相邻的非雷格子与空白格子的对数,相当于一张黑白色的图,很明显,黑白颜色是相对的,即是交换颜色,相邻的黑白颜色的对数也不会改变(就像把黑白对改成白黑对那样)。所以对比两个图中不同的块的个数,如果小于就直接输出A,否则输出A格子翻转之后的图。
1|3代码
2|0C
2|1题目大意
2|2解题思路
可以考虑数位dp按位填数,说明同一位不同1,而后面的取log相当于求i和j中最高的那个二进制位位数。这样就转换成了一个比较板子的数位dp了,细节可以看注释。
2|3代码
3|0D
3|1题目大意
两人站在[0,n]的线段上,一个人站在p1,速度v1,另一个人站在p2,速度v2,问两个人最少需要多少时间使每个点至少被覆盖一遍。
3|2解题思路
比赛时想着分三段三分相遇的位置,但是不确定函数是否单峰,一直wa个不停,其实可以二分时间,很明显这是有单调性的。我们二分时间,然后计算两个人走的互不交叉并且各包含一个端点的最长路径,看能否把整个线段覆盖就行了。但是这里还有一些坑,就看代码吧。注意最后还要考虑上两人对穿的情况。
3|3代码
4|0E
4|1解题思路
从最小的数下手,如果最小的数放在位置i,那么i前面的i-1个数可以随便放,而最小值后面的数字,相当于一个新的排列,我们可以继续从最小的数开始划分,所以可以得到下面的状态转移方程:
这是一个O(nk)的做法,我们把柿子变换一下
我们可以用前缀和来存,通过前缀和做差求前k个数,这样的话就省去第二个循环的k次枚举,O(n)得到答案了。
5|0G
签到,3的倍数的位置对应偶数,偶数不管乘奇数还是偶数都是偶数。
6|0H
6|1解题思路
结论应该是比较好猜的:我们把每个人和对应的手抓饭在圆盘上连线,那么这些连线是不会相交的。相应的证明可以看这里。这样的话一共有三种情况,要么顺时针转,要么逆时针转,要么先往一个方向转一个角度,再反过来转另一个角度。我们可以分别对a和b排序,然后假设一个方向为正,枚举第一个人抓的饭或者抓第一个饭的人,计算出正方向每个人抓到饭所需的时间,那么正方向的时间就是最大的那个时间,反方向就是n-正方向最小的那个时间,然后再枚举下两个方向转时的分割点就行了。
6|2代码
7|0I
7|1题目大意
给你n个同心圆(圆心0,0)已经n条直线(穿过圆心),求直线与圆相交的点之间的最小距离之和。
7|2解题思路
对于两个在同一个圆上的点,他们要么是走所在圆的圆弧,要么往下走绕一圈再上来。对于不再同一个圆上的点,一定是离中心最远的点先沿直径走到和另一个点所在的圆弧,然后就是两个点在同一个圆上的情况。考虑第一种情况往下走绕一圈再上来的走法,假设一定经过若干段圆弧,那么一定存在两个点只走一个圆弧的情况,如下图
假设从A点下到红色圆弧再回到B是最短路,夹角相当于,那么必有,化简得到可以发现是走两条长度为j的边还是走圆弧和j的长度是没有关系的,只和角度有关,而且实际走的圆弧应该是AB所在圆的,把j+1可以推出来圆弧越靠上越优,所以我们可以推出位于同一个圆上的两点只有两种走法,满足走两点所在圆的圆弧,否则走半径。
我们可以枚举每层中的一个点到其他所有点的距离,根据对称性算出这一层的贡献,但是还有更快的方法。我们可以根据层间关系来推,维护两个变量,一个是比现在低一层的那层中的一个点到层数小于等于它的所有点的距离res,一个是res对应的点的个数sum,我们要求当前这一层中的一个点到比他低的点的距离,就可以用res和sum算出来,相当于上一个结果中所有路径往上再走一步。处理完层间的,我们再加上同层的就行了,可以根据上面推出来的结论,预处理出来同层之间需要乘上的系数再乘上半径和点数就可以了。
7|3代码
8|0M
8|1解题思路
先对可以忽略的文件建一棵字典树,要想使ignore的文件数量少,肯定在树上能ignore的最靠上的位置最好。而能ignore的文件肯定不能包含不能ignore的文件,所以我们再把不能ignore的文件插入字典树中,把中间经过的点标记一下,然后我们对字典树dfs一下,走到未标记的点就+1然后不再往下走,最后就能得到答案。
8|2代码
__EOF__

本文链接:https://www.cnblogs.com/shuitiangong/p/15759376.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现