摘要: //简单的的搜索,找到能扩充的最大步数#includeusing namespace std;const int maxn = 20 + 5;int dirx[4] = {0, 0, -1, 1};int diry[4] = {-1, 1, 0, 0};int n, m, ans;int sx, sy;char map[maxn][maxn];bool used[maxn][maxn];int dfs(int x, int y){ int px, py; int max = 0; used[x][y] = 1; ans++; for(int i=0; i= 1 && px = 阅读全文
posted @ 2014-01-13 21:39 静坐观雨 阅读(108) 评论(0) 推荐(0) 编辑
摘要: //打表记录1到40的素数表#include#includeusing namespace std;const int maxn = 40;int n;int used[maxn];int s[maxn];bool v[maxn];void prime(){ memset(v, 1, sizeof(v)); for(int j = 2; j >n){ s[0] = 1; cout<<"Case "<<c++<<":"<<endl; memset(used, 0, sizeof(used)); dfs( 阅读全文
posted @ 2014-01-13 13:54 静坐观雨 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 玩acm已经一年多了,整天偷懒,只想不做的样子,弄得自己现在都还是一个渣渣,虽然有一定的进步,但却没有很大的突破.明年,也是最后的一年了,自己的梦想就是能亲自参加一场现场赛,所以在剩下的日子里,我一定会尽全力去拼搏.每每想到自己总有一天要放下acm的时候,内心总是有种莫名的不舍,也许学得久了,自然就会产生一些感触.虽然我没有超常的智慧,但是我相信只要我去努力,我也是可以的.虽然我现在是个菜,但是不代表我以后还是这样,在这最后一年里,我想尽自己最大的努力去实现自己一个小小的梦想.Acm, 对它,我不想留下后悔. ... 阅读全文
posted @ 2014-01-07 14:32 静坐观雨 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 思路:只能对有序的数组进行查找,每次找将查找范围减少一半。#includeusing namespace std;int f(int s[], int n, int v){ int left,righ,mid; left = 0; righ = n-1; while(left >= righ){ mid=(left + mid)/2; if(s[mid] > v){ //查找值在左边 righ = mid; } else if(s[mid] < v){ //查找值在右边 left = mid; } else{ return mid; //查找值为中点 } } return - 阅读全文
posted @ 2013-10-26 00:01 静坐观雨 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 思路:找入度为0的点->删边 ->重复直接找不到入度为0的点。#include#includeusing namespace std;const int MAXN=500+10;int indegree[MAXN];vectorV[MAXN];void init(int n){ //初始化 memset(indegree,0,sizeof(indegree)); for(int i=1;i<=n;i++){ V[i].clear(); }}int findZeroDegree(int n){ //找入度为0的点 for(int i=1;i<=n;i++){ if(ind 阅读全文
posted @ 2013-10-25 23:49 静坐观雨 阅读(220) 评论(0) 推荐(0) 编辑
摘要: Dijkstra:HDU2066:题意:每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个,草儿想去的地方有D个;接着有T行,每行有三个整数a,b,time,表示a,b城市之间的车程是time小时;(1=using namespace std;const int maxn = 1000 + 10;const int INF = 0x3fffffff;int map[maxn][maxn];int T;int S;int D;int dis[maxn];bool used[maxn];void init(){ memset(used,0,sizeof(used)); in 阅读全文
posted @ 2013-10-25 23:39 静坐观雨 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 思路:从当前的某一点出发,每次选择当前能到达最小值的点,然后标记访问过的点和更新能到达的点,重复执行直至所有点都被访问过。代码:#includeusing namespace std;const int maxn = 1000+10;const int INF = 0x3fffffff; // 无穷的一半int map[maxn][maxn]; //存图int dis[maxn];int visited[maxn];int m,n;void init(){ //map的初始化 for(int i=1; i map[t][k]){ //没有使用过并且比当前更优时替换 dis[k] = map[t 阅读全文
posted @ 2013-10-21 09:02 静坐观雨 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 杭电Common Subsequence(1159):题意:求两个字符串的最大公共子串。Sample:abcfbc abfcabprogramming contestabcd mnp420代码:#include#includeusing namespace std;const int MAX = 1000 + 10;char a[MAX];char b[MAX];int DP[MAX][MAX];int Max(int x, int y){ //求最大值 return x > y ? x : y;}int main(){ while(cin>>a>>b){ int 阅读全文
posted @ 2013-10-21 08:20 静坐观雨 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 回文串杭电3068 最长回文串(manachar):题目:给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等#include#includeusing namespacestd;const intmaxn = 110000 + 10;char a[maxn];int p[maxn * 2];int Min(inta,intb){ returna> b ? b: a;}int main(){ inti, n, id, maxl, maxid; while(scanf("%s",a) 阅读全文
posted @ 2013-10-20 22:01 静坐观雨 阅读(172) 评论(0) 推荐(0) 编辑