摘要: 题意:给你n个数和m个大小关系,问给出了这些大小关系之后还有多少对数的大小关系不知道。分析:根据给出的大小关系建有向边,每次对每个点延有向边搜索到底,确定该边的所有连边关系,最后统计没有关系的边对数。View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std;#define re(i,n) for(int i=0;i<n;i++)#define re1(i,n) for(int i=1;i<=n;i++)const int maxn = 2 阅读全文
posted @ 2012-07-05 20:27 lenohoo 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:给你C个字母,输出由L个字母组成并且包含至少一个元音字母和两个辅音字母的所有由L个字母组成的排列。分析:dfsView Code #include <cstdio>#include <cstring>#include <iostream>#include <vector>#include <algorithm>using namespace std;char pan[30] , ss[5];int L , C;vector<char> V;bool cmp(char a , char b) { return a &l 阅读全文
posted @ 2012-07-05 19:24 lenohoo 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一些边,判断这些边能否构成一棵树。分析:并查集,但是得注意: 1.可能存在自环 2.每个数据开始输入为0 0 的时候也算一棵树View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std;#define re(i,n) for(int i=0;i<n;i++)#define re1(i,n) for(int i=1;i<=n;i++)const int maxn = 110;int p[maxn];int flag[maxn];in 阅读全文
posted @ 2012-07-05 17:15 lenohoo 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:求其试点发出的到其他各点的最短路的最大值。分析:最短路View Code #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define re(i,n) for(int i=0;i<n;i++)#define re1(i,n) for(int i=1;i<=n;i++)#define inf (1<<29)const int maxn = 110;int map[maxn][ma 阅读全文
posted @ 2012-07-05 15:45 lenohoo 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题意:有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。分析:约瑟夫问题View Code #include <cstdio>#include <cstring>#include <iostream>#include <string>using namespace std;const int maxn =65;string name[maxn];int w , s , n;in 阅读全文
posted @ 2012-07-05 15:26 lenohoo 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 题意:输入一对字符串,按1999取数,判断最后剩下的数,是'?'输出“Yes” ,是' '输出“No”,不然输出“No comments”。分析:约瑟夫环问题。View Code #include <cstdio>#include <cstring>#include <iostream>#include <string>using namespace std;string s;int N = 1999;char c;int main() { while((c = getchar()) != EOF) { if(c 阅读全文
posted @ 2012-07-05 14:58 lenohoo 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n张牌,让你变一个魔术:第1次把上面的1张牌放到底部,然后最上面的牌就是1,然后拿走1。第2次把上面的2张牌依次放到底部,然后最上面的牌就是2,然后拿走2....重复这个过程,直到所有的牌都被拿走。问一开始的牌应该从上到下怎么放,才能完成这个魔术。分析:逆向思维,从后向前模拟。View Code #include <cstdio>#include <cstring>#include <iostream>#include <queue>using namespace std;queue<int> Q;void output() 阅读全文
posted @ 2012-07-05 12:54 lenohoo 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个学生和m对关系,每对关系表示这两个学生有同一个宗教信仰,求学校里最多有几种不同的宗教信仰。分析:并查集,初始有n个几何,每次关系都把两个元素所在的集合合到一起。View Code #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define re(i,n) for(int i=0;i<n;i++)#define re1(i,n) for(int i=1;i<=n;i++)#defi 阅读全文
posted @ 2012-07-05 04:19 lenohoo 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个序列,问是否能够通过入栈出栈从1到n的顺序序列得到该序列分析:模拟栈View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std;#define re(i,n) for(int i=0;i<n;i++)#define re1(i,n) for(int i=1;i<=n;i++)const int maxn =1010;int a[maxn] , sta[maxn];bool pan(int a[],int n) { int to 阅读全文
posted @ 2012-07-05 03:52 lenohoo 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题意:N的虫里面有M对情侣关系,判断其中存不存在“基情”,即在之前确定的异性关系中出现了同性的情侣。分析:我们可以假设异性在不同的并查集里,那么假设有一对情侣a和b是异性关系,那么a和b的异性是同性关系,b和a的异性也是同性关系,即a和b的异性 以及 b和a的异性 在同一个并查集里。为了模拟这个过程,我们假设对于任意一个元素c , c+n是他的默认异性,接下来每一次合并之前判断有没有矛盾就行了。View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std 阅读全文
posted @ 2012-07-05 03:28 lenohoo 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一个0-1矩阵,判断是否能从其中选择几行使得选出的行中每一列都有且仅有一个1。分析:dfs , 此题也可以用Dancing Links 优化,因为是一道精确覆盖的题普通搜索:View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std;const int maxn = 18 , maxm = 303;int n , m;int a[maxn][maxm];bool vis[maxm];int ok;bool pan(int i) { for(i 阅读全文
posted @ 2012-07-05 02:49 lenohoo 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 题意:火车从一点开到另一点,轨道上有很多岔路口,每个路口都有好几个方向(火车能够选任意一个方向开),但是 默认的是 第一个指向的方向,所以如果要选择别的方向的话得 进行一次切换操作 ,给定一个起点一个终点 ,问最少进行几次 切换操作 能够 使 火车 完成这个历程 , 如果开不到,输出“-1”。分析:设默认路径边权为0,备选路径边权为1,求单源最短路即可。View Code #include <cstdio>#include <cstring>#include <iostream>using namespace std;#define re(i,n) for( 阅读全文
posted @ 2012-07-05 00:05 lenohoo 阅读(278) 评论(0) 推荐(0) 编辑