摘要: 题意: 有N 个人,知道了每个人知道的信息,和它最多能告诉别人的信息数目,问编号为 m 的人最多能知道的信息条数是多少。分析: 由于信息的编号比较大,所以先需要进行离散化。 每个人和自己知道的每个信息之间都有一条边相连, 每个人匹配容量为 他最多能告诉别人的信息数目。#include<stdio.h>#include<string.h>#define maxn 222#define clr(x)memset(x,0,sizeof(x))int cap[maxn]; int map[maxn][maxn];int vlink[maxn]; ... 阅读全文
posted @ 2012-08-26 19:45 'wind 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 题意: 给出一个序列和 M 个询问,对于每个询问输出询问区间内从右向左第一个出现次数超过 2 的数。分析:预处理用 before[i] 表示第 i 个数之前出现的距离第 i 个数最近求和 第 i 数相等的数的值。 区间查询的时候先查询右儿子区间,再查询能合并的区间,再查询左儿子区间。#include<stdio.h>#include<string.h>#include<map>using namespace std;#define maxn 500005#define max(a,b)(a)>(b)?(a):(b)int va[maxn];int be 阅读全文
posted @ 2012-08-26 19:40 'wind 阅读(277) 评论(2) 推荐(0) 编辑
摘要: 题意: 给出一个地图,要求找出至少经过K条边的最短路,可以走重边。分析:二维最短路,用dis[i][j] 记录 在i 点进过j 条路的最短路 找到dis[i][k]的最小值。SPFA:#include<stdio.h>#include<string.h>#include<queue>#define INF 0x1f1f1f1fusing namespace std;#define maxn 5005struct node{ int to,next,w;}e[200005];int tot;int head[maxn];void add(int s,int u 阅读全文
posted @ 2012-08-26 11:13 'wind 阅读(215) 评论(0) 推荐(0) 编辑