摘要: DP的思想:从i到i+2^(j-1)-1为一段,i+2^(j-1)到i+2^j-1为一段(长度都为2^(j-1)),状态转移方程为: F[i,j]=max(F[i,j-1],F[i+2^(j-i),j-1])最大值 f[i,j]=max(f[i,j-1],f[i+2^(j-1),j-1]);最小值 f[i,j]=min(f[i,j-1],f[i+2^(j-1),j-1]);View Code #include<cstdio>#include<cstring>#include<iostream>#include<cmath>using namesp 阅读全文
posted @ 2012-07-06 21:02 lenohoo 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意:给你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) 编辑