- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 Codeforces 689D Friends and Subsequences (RMQ+二分)
题意求有多少对区间满足其中一个区间的最大值等于另一个区间的最小值。思路首先RMQ预处理出所有区间的最大值和最小值(线段树会超时。。。) 然后因为我们固定这两个区间的左端点枚举区间的右端点,因为右端点越大max越大min越小,所以是满足二分的单调性的。 所以这题的做法就是枚举左端点,二分右端点的max == min的左边界l和右边界r,即[i,l]到[i,r]的区间都是满足max等于min的,统计
2016-07-16 22:52:56 522
原创 HDOJ 3938 Portal (离线并查集)
题意给出一个带边权的图,令两个点之间的路径的费用为中途经过的边的最大值,对每个查询求有多少对点路径费用小于等于给定的L。思路用类似kruskal的思想,每个点都设置一个sum数组表示它所相连的所有满足小于当前L的边相连的点有多少个(其实数组名用size更合适)。 然后对于每次查询L,因为边我们也是升序排序的,所以对于所有小于L的边都有sum[find(edge[i].u)]*sum[find(ed
2016-07-10 16:23:08 427
原创 HDOJ 1811 Rank of Tetris (并查集+topo)
题意给出一些人之间的rating高低或等于关系,判断给出的关系是否冲突,能不能通过这些排出所有人。思路如果没有等于的话这个题是个比较经典的拓扑排序,加上等于之后我们每次相等的两边的关系需要合并,所以用并查集专门维护一下相等时的关系集合,其他的拓扑排序来做即可。代码#include <stdio.h>#include <string.h>#include <iostream>#include <
2016-07-10 16:12:43 456
原创 Codeforces Round #360 (Div. 2)
A按照题意暴力找一下char s[110];int main(){ //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n, d; scanf("%d%d", &n, &d); int last = -1, ans = 0; for (int i = 0; i < d
2016-07-01 16:13:22 397
架构整洁之道
2018-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人