上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 39 下一页
摘要: 题目大意:给定一棵 N 个节点的有根树,1 号节点为根节点,每个节点有一个颜色。有 M 个询问,每次询问以 i 为根的子树中颜色大于等于 K 的有多少种。 题解:子树询问直接 dfs 序转化成序列问题。同时注意到不带修改,且可以离线,直接莫队即可。 代码如下 cpp include define f 阅读全文
posted @ 2019-04-05 09:33 shellpicker 阅读(450) 评论(0) 推荐(0)
摘要: 题目大意:给定一个长度为 N 的序列,每个点被染了一个颜色。现有 M 个询问,每个询问查询区间 [l,r] 内的点是否颜色都是不同的。 题解:莫队裸题。 直接维护区间颜色数,用 cnt[] 记录下区间中颜色出现的次数,用 now 记录下区间颜色数,查询时只需比较区间颜色数和区间长度的关系即可。 代码 阅读全文
posted @ 2019-04-04 18:08 shellpicker 阅读(160) 评论(0) 推荐(0)
摘要: 题目大意:给定 N 个节点,M 条边的无向图,边有边权,点有点权,现给出 Q 个询问,每个询问查询两个节点之间的最短路径,这里最短路径的定义是两个节点之间的最短路径与这条路径中经过的节点点权的最大值之和。 题解:多源最短路问题应该用 floyd 算法来处理,由于最短路径涉及到路径中最大的点权,因此如 阅读全文
posted @ 2019-04-04 17:40 shellpicker 阅读(158) 评论(0) 推荐(0)
摘要: 题目大意:给定一个 N\ M 的棋盘,有一些格子禁止放棋子。问棋盘上最多能放多少个不能互相攻击的骑士(国际象棋的“骑士”,类似于中国象棋的“马”,按照“日”字攻击,但没有中国象棋“别马腿”的规则)。N, M define fi first define se second define pb pus 阅读全文
posted @ 2019-04-03 21:10 shellpicker 阅读(412) 评论(0) 推荐(0)
摘要: 题目大意:给定一个长度为 N 的序列,有 M 个询问,每个询问要求输出长度为 L 的上升子序列,若不存在,输出 impossible,若存在,输出下标字典序最小的一个。 题解:考虑到若 L 大于整个序列的 LIS 的长度,显然无解。反之,则一定有解。输出下标字典序最小,考虑按照下标贪心即可。 代码如 阅读全文
posted @ 2019-04-03 16:47 shellpicker 阅读(126) 评论(0) 推荐(0)
摘要: 题目大意:给定一个长度为 N 的序列,求有多少个三元组满足 $i define fi first define se second define pb push_back define mp make_pair define all(x) x.begin(),x.end() using namesp 阅读全文
posted @ 2019-04-03 15:10 shellpicker 阅读(307) 评论(0) 推荐(0)
摘要: 题目大意:给定一个 N\ M 的图,图中有一些格子不能被任何东西覆盖,现有一些宽度为 1,长度任意的骨牌覆盖这些可以被覆盖的格子,骨牌之间可以重叠,求将所有可以被覆盖的格子覆盖所需的最小骨牌数是多少。 题解:一行连续的可覆盖格子或一列连续的可覆盖格子一定是一起被覆盖的,因此预处理出每一个格子在哪些行 阅读全文
posted @ 2019-04-02 12:32 shellpicker 阅读(181) 评论(0) 推荐(0)
摘要: 题目大意:给定 N 个任务和两台机器,每个任务可以在任意一台机器上执行,每台机器有 N 个启动状态,不同任务需要机器在不同的状态下执行,求执行所有任务需要多少个不同的状态。 题解:由于一个任务一定要被两台机器中的一台执行,可以将任务看作边,连接两台机器的对应启动状态。所要求的是这个二分图的最大独立集 阅读全文
posted @ 2019-04-02 11:41 shellpicker 阅读(190) 评论(0) 推荐(0)
摘要: 题目大意:给定 N 座塔,M 个怪物,每座塔一次可以发射一枚导弹,发射导弹有发射时间和冷却时间,每座塔和每只怪物有自己的二维坐标,所有导弹有一个共同的速度,求至少需要多长时间才能将所有怪物消灭。 题解:考虑若在 x 的时间可以消灭所有怪物,则大于 x 的时间也一定可以消灭所有怪物,因此考虑二分答案。 阅读全文
posted @ 2019-04-02 08:14 shellpicker 阅读(425) 评论(0) 推荐(1)
摘要: 题目大意:给定一个 N\ M 的棋盘,棋盘上有些点不能放置任何东西,现在在棋盘上放置一些车,问最多可以放置多少个车而不会互相攻击。 题解:将放置一个车看作连接一条无向边,因为每一行和每一列之间只能放置一个车,即:车的位置在 (i,j) 时,表示第 i 行和第 j 列之间放置了一个车。可以发现,一个车 阅读全文
posted @ 2019-04-01 21:55 shellpicker 阅读(212) 评论(0) 推荐(0)
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 39 下一页