摘要: 题目传送门 ##题意简述 老师带学生出去旅游,老师想要尽可能的避免学生谈恋爱,又想尽可能的带学生出去, 四种情况满足任意种都不会谈恋爱: 1.身高差超过40厘米 2.性别一样 3.音乐风格不一样 4.爱好的运动一样 现在老师想知道他最多能带多少学生。 ##算法分析:二分图最大独立集 显然,所有的学生 阅读全文
posted @ 2021-06-23 16:07 Maplisky 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 ##算法分析:Trie 树 题目中唯一的运算是按位异或,我们可以考虑按位异或的本质。既然是一位一位异或,那么我们直接把 \(x\) 转化成一个二进制数不就好了吗? 在插入时,我们可以先将 \(x\) 转化为一个32位二进制数,然后从高位到低位插入 Trie 树,并对每个树上每个节点 \( 阅读全文
posted @ 2021-06-23 16:00 Maplisky 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 ##算法分析:DAG 最小路径点覆盖 我们考虑建图来表示题中所示的关系。当一辆出租车结束当前任务并且能够在下一个任务开始前赶到目的地,我们就认为这两个任务是可能被同一辆出租车完成的,因此我们在这前一个任务到后一个任务之间连一条有向边,表示连续完成的关系。那么,用尽可能少的出租车完成这些任 阅读全文
posted @ 2021-06-23 15:56 Maplisky 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 ##算法分析:二分答案+二分图判定 首先分析题目大意。很显然,按照题意将塔分为两组后,同组内没有其他联系,于是我们可以想到二分图基本模型。题设的条件就是要求我们将若干座塔构造成一个二分图。于是将题意简化如下: 求一张二分图,使得每组内两个点之间的曼哈顿距离的最大值最小,并求出符合条件的方 阅读全文
posted @ 2021-06-23 15:48 Maplisky 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 传送门 这里提供一种比较暴力的做法。 ##算法分析:离散化+区间覆盖。 根据题意,Farmer John 能看到奶牛的时候奶牛恰好经过 \(y\) 轴。显然,奶牛身体某部位在 \(y\) 轴的时间是一个区间,可以考虑对时间轴进行区间覆盖,即将时间轴上 \(st_i\) 到 \(ed_i\) 这一段区 阅读全文
posted @ 2021-06-23 14:07 Maplisky 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 算法:数位 \(dp\) 不熟悉数位 \(dp\) 的同学可以看一下洛谷日报第 84 期 “求出在给定区间 \([A,B]\) 内,符合条件 \(f(i)\) 的数 \(i\) 的个数。条件 \(f(i)\) 一般与数的大小无关,而与数的组成有关。”根据日报中给出的数位 \(dp\) 的 阅读全文
posted @ 2021-06-23 13:58 Maplisky 阅读(52) 评论(0) 推荐(1) 编辑
摘要: 题目传送门 双倍经验! 不扯闲话了 进入正题 伟大的 \(cpp\) 告诉我们,拿到题目一定要看一眼数据范围。于是我们先来看一下点数和边数。发现$n\le10^3$ ,\(m\le10^4\),基本就是一个稠密图,而且点数不多,于是我们可以选择使用邻接矩阵来存图。 然后来考虑 \(Luka\) 应该 阅读全文
posted @ 2021-06-23 13:57 Maplisky 阅读(56) 评论(0) 推荐(0) 编辑
摘要: UVA589 Pushing Boxes 为什么题解里都是建图或者奇妙的双 BFS ?明明一个 BFS 就可以解决了嘛。 注意题意: 把推的数量减到最少(一般的 BFS 中距离是第一关键字,但是本题中推的数量才是第一关键字)。 如果有不止一个这样的序列,那么选择一个最小化总移动次数(步行和推送)的序 阅读全文
posted @ 2021-06-23 13:52 Maplisky 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 样例真的水爆了。 进入正题 题目中要求每次从一个点向相连的点扩散,这是不是和洪水填充很像?于是想到最短路。 可是乍一看好像和最短路没什么关系啊,于是我们来看样例。 样例虽然水,但有一点值得关注:奇偶性。 观察样例,当从 \(1\) 出发时,如果 \(L\) 为奇数,那么就是 \(No\) 阅读全文
posted @ 2021-06-23 13:44 Maplisky 阅读(516) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 做到这个题的时候人都傻了,被鹏哥批了一顿后,直接大叫:“ \(woc!\) ,这不就一完全背包吗!” 好吧,让我们看看这个题怎么和背包扯上关系的。 进入正题 第一眼,嗯,dp。 想了一会以后发现想不出来,好吧,看一下部分分。 \(T=1\) ,直接就是 \(m\) ,没什么用(蹭点分还是 阅读全文
posted @ 2021-06-23 13:35 Maplisky 阅读(475) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 不扯闲话了 ##进入正题 伟大的 \(cpp\) 告诉我们,拿到题目一定要看一眼数据范围。于是我们先来看一下点数和边数。发现$n\le10^3$ ,\(m\le10^4\),基本就是一个稠密图,而且点数不多,于是我们可以选择使用邻接矩阵来存图。 然后来考虑 \(Luka\) 应该怎么走。 阅读全文
posted @ 2021-06-23 13:34 Maplisky 阅读(77) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 ##算法:超级源点 + 两次 BFS 对于这一类走迷宫的题, BFS 是十分常见的手法。(推荐一道题:UVA589 Pushing Boxes) 在本题中,如果水和潘特“同时行动”,并不容易处理。因此可以先对洪水进行 BFS,标记洪水第一次弥漫到的时间,然后再对潘特进行 BFS,如果潘特 阅读全文
posted @ 2021-06-23 13:32 Maplisky 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 ##算法分析:BFS 显然是爆搜题(虽然不知道为什么有 dp 标签)(雾)。 首先是状态,我们应该记录两只企鹅的位置和走到当前状态所需的步数,如果走过这个状态,那么不再重复走。 struct P { int x,y,a,b,step;//位置,步数 }g,m; 其次是对状态的可行性检查。 阅读全文
posted @ 2021-06-23 13:29 Maplisky 阅读(51) 评论(0) 推荐(0) 编辑