上一页 1 2 3 4 5 6 7 8 ··· 17 下一页

2012年8月2日

COJ 1259: 跳跳

摘要: BFS,直接入队即可。# include <cstdio># include <queue># include <cstring>using namespace std;# define N 100 + 5int n;char g[N][N];char vis[N][N];struct pos{int x, y, d;};pos st;queue <pos> Qst[10];const int dx[] = {0,0,1,-1};const int dy[] = {1,-1,0,0};int bfs(void){ queue <pos> 阅读全文

posted @ 2012-08-02 08:36 getgoing 阅读(211) 评论(0) 推荐(0) 编辑

HDOJ 4308 Saving Princess claire_

摘要: 简单BFS,遇到'P'时把所有'P'标记,并对所有'P'多向下搜索一步,此时遇到'*'时入队;BFS的特点:搜到即标记,搜到就判断。# include <cstdio># include <cstring># include <queue>using namespace std;# define N 5000+5int n, m, cost;char g[N][N];char vis[N][N];struct pos{ int x, y, d; pos() { d = 0; }};pos st; 阅读全文

posted @ 2012-08-02 07:17 getgoing 阅读(205) 评论(0) 推荐(0) 编辑

2012年8月1日

[字符串]

摘要: 题目:给出一个整数n,问1-n之间包括n在内的所有数中49出现的次数。输入首先为一个整数T,表示接下来有T组输入。# include <cstdio># include <cstring># define N 10000000# define LEN 22typedef long long int LL;LL f[LEN][10];LL pow10[LEN];void init(void){ pow10[0] = 1; for (int i = 1; i < LEN; ++i) { pow10[i] = 10*pow10[i-1]; if (i>=... 阅读全文

posted @ 2012-08-01 23:44 getgoing 阅读(151) 评论(0) 推荐(0) 编辑

HDOJ 2896 病毒侵袭

摘要: WA;这道题题意不清晰,单词相互包含的要不要计算?网上AC的程序跑出来的结果都不太一样,我的是计算在内的。 1 # include <cstdio> 2 # include <cstring> 3 # include <queue> 4 # include <algorithm> 5 6 using namespace std; 7 8 # define WORD_LEN 200 + 5 9 # define TEXT_LEN 10000 + 5 10 # define ALPHA_SIZE 128 + 5 11 12 int n, m, tot 阅读全文

posted @ 2012-08-01 13:40 getgoing 阅读(190) 评论(0) 推荐(0) 编辑

HDOJ 2222 Keywords Search

摘要: Accepted2222593MS30816K2430 BG++第一道 AC 自动机,理解了就好写;需要注意字典可能重复,重复的不能按一次算。# include <cstdio># include <cstring># include <queue>using namespace std;# define WORD_LEN 50 + 5# define MAXN 10000 + 5# define ALPHA_SIZE 26int n, id;char t[1000000 + 10];char w[MAXN][WORD_LEN];struct node{ n 阅读全文

posted @ 2012-08-01 11:41 getgoing 阅读(377) 评论(0) 推荐(0) 编辑

2012年7月24日

[JSOI2008]最大数maxnumber

摘要: 包含插入和询问的线段树,简化版,据说这道题暴力也能过。Description现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制:L不超过当前数列的长度。 2、 插入操作。 语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。 限制:n是非负整数并且在长整范围内。 注意:初始时数列是空的,没有一个数。Input第一行两个整数,M和D,其中M表示操作的个数(M <= 200,000), 阅读全文

posted @ 2012-07-24 17:03 getgoing 阅读(378) 评论(0) 推荐(0) 编辑

[SCOI2006]整数划分

摘要: http://www.lydsy.com/JudgeOnline/problem.php?id=1263Description从文件中读入一个正整数n(10≤n≤31000)。要求将n写成若干个正整数之和,并且使这些正整数的乘积最大。 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=108为最大。Input只有一个正整数: n (10≤n≤31000)Output第1行输出一个整数,为最大乘积的位数。 第2行输出最大乘积的前100位,如果不足100位,则按实际位数输出最大乘积。 (提示:在给定的范围内,最大乘积的位数不超过5000位)。Sample Input13S 阅读全文

posted @ 2012-07-24 16:14 getgoing 阅读(384) 评论(0) 推荐(0) 编辑

2012年7月23日

HDOJ Is It A Tree?

摘要: 直接通过判断出度和入度确定,这题的结束标志是两个负数(不一定是-1),输入中含有 0 0 这组数据(判为no),最后一组数据后面要留换行,否则PE;http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?cid=1304&pid=1003&ojid=0View Code # include <cstdio># include <cstring># define N 20bool ok;int in[N], out[N];void init(void){ ok = false; memset(in, 阅读全文

posted @ 2012-07-23 22:31 getgoing 阅读(149) 评论(0) 推荐(0) 编辑

MST 小希的迷宫

摘要: 不知道有没有更好的做法(省空间,省时间)。http://acm.hdu.edu.cn/webcontest/contest_showproblem.php?pid=1002&ojid=0&cid=1304&hide=0# include <cstdio># include <cstring># define N 100000 + 5int p[N];bool ok, vis[N];void init(void){ ok = false; for (int i = 1; i < N; ++i) p[i] = i; memset(vis, fa 阅读全文

posted @ 2012-07-23 21:51 getgoing 阅读(169) 评论(0) 推荐(0) 编辑

MST pku 1258 Agri-Net

摘要: # include <cstdio># include <algorithm>using namespace std;# define N 100 + 5# define M 5000 + 5int n, m;int p[N];int u[M], v[M], w[M], r[M];void read_graph(void){ int tmp; m = 0; for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) { scanf("%d", &tmp); if (i < 阅读全文

posted @ 2012-07-23 16:50 getgoing 阅读(187) 评论(0) 推荐(0) 编辑

WA UVa 10806 - Dijkstra, Dijkstra.

摘要: 无向图,求从1出发到n再回到1的最短路,不能重复走同一条边。错误思路:先求出1到n的最短路,删去经过的边,再求一次最短路,相加,容易找到反例。WA# include <cstdio># include <cstring># include <queue># include <algorithm>using namespace std;# define N 100 + 5# define INF 0x3c3c3c3cint n, m;int pre[N], d[N];int w[N][N];void destory(void){ for (int 阅读全文

posted @ 2012-07-23 16:29 getgoing 阅读(308) 评论(0) 推荐(0) 编辑

UVa 10986 - Sending email

摘要: SPFA,2RE,无向图的边数为题目描述的两倍。# include <cstdio># include <cstring># include <queue>using namespace std;# define N 20000 + 5# define M (50000 + 5) * 2# define INF 550000000int n, m, src, des;int first[N], d[N];bool inq[N];int u[M], v[M], w[M], next[M];void read_graph(void){ scanf("% 阅读全文

posted @ 2012-07-23 14:42 getgoing 阅读(216) 评论(0) 推荐(0) 编辑

HDOJ 最短路

摘要: 第一道 SPFA, 1A。Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B&lt;=N,1< 阅读全文

posted @ 2012-07-23 14:01 getgoing 阅读(382) 评论(0) 推荐(0) 编辑

2012年7月22日

PKU 3278 Catch That Cow

摘要: bfs,需要注意0和N是可以到达的,除此之外也可以到达,但实际上不可能更优,因为超过这个范围表明需要回退,回退的步数超过2时,完全可以多走几步再翻倍,结果更优。# include <cstdio># include <queue># include <cstring>using namespace std;# define MAXN 100000 + 5# define N 100000 + 1int n, k;char vis[MAXN];int d[MAXN];int bfs(void){ queue <int> Q; memset(vis, 阅读全文

posted @ 2012-07-22 22:32 getgoing 阅读(286) 评论(0) 推荐(0) 编辑

POJ 2488 A Knight's Journey

摘要: DFS,要求输出字典序最小的,注意扩展方向。# include <cstdio># include <cstring># define N 26 + 5const int dx[] = {-1, 1,-2, 2,-2, 2,-1, 1};const int dy[] = {-2,-2,-1,-1, 1, 1, 2, 2};int p, q, cnt;bool finished;char solu[N][2];char vis[N][N];void dfs(int x, int y){ solu[cnt][0] = x, solu[cnt][1] = y; if (cnt 阅读全文

posted @ 2012-07-22 22:03 getgoing 阅读(209) 评论(0) 推荐(0) 编辑

POJ 2243 Knight Moves

摘要: bfs,使用C++的queue,300ms。# include <cstdio># include <cstring># include <queue>using namespace std;const int dx[] = {1,1,-1,-1,2,2,-2,-2};const int dy[] = {2,-2,2,-2,1,-1,1,-1};struct Pos{int x, y, d;};char s[5], g[5];int sx, sy, gx, gy;int bfs(void){ queue <Pos> Q; Pos cur, nst 阅读全文

posted @ 2012-07-22 20:09 getgoing 阅读(203) 评论(0) 推荐(0) 编辑

POJ 3620 Avoid The Lakes

摘要: dfs,统计最多多少个相邻(有公共边)方块。# include <cstdio># include <cstring># define N 100 + 15int n, m, k;char lake[N][N];int ans, cur;const int dx[] = {0,1,0,-1};const int dy[] = {1,0,-1,0};void dfs(int x, int y){ lake[x][y] = 0, ++cur; for (int i = 0; i < 4; ++i) { int nx = x + dx[i]; int n... 阅读全文

posted @ 2012-07-22 19:31 getgoing 阅读(215) 评论(0) 推荐(0) 编辑

2004选拔赛 最小值

摘要: 给出S和T个整数集合,分别含有n和m个元素(n<=m<=500),问 的最小值。如果a>b && c>d,有|a-c|=|b-d| >= |a-d| + |b-c|(不妨设c>a,然后对d与a,b的大小讨论,可以去掉绝对值符号证明),要对S和T排序。动态规划,if ( i == j) f[i,j] = f[i-1, j-1] + abs( s[i] - t[j] ) ,所以边界条件有 f[0,0] = 0;if (j > i) f[i, j] = min( f[i, j-1], f[i-1, j-1]+abs( s[i] - t[j] 阅读全文

posted @ 2012-07-22 08:32 getgoing 阅读(214) 评论(0) 推荐(0) 编辑

2012年7月20日

HDOJ Another Eight Puzzle

摘要: 根据题目描述,可以知道 1 和 8 只能放在 C 和 F 两个位置,固定好 1 和 8 后,2 和 7 也就固定了,剩下的就是枚举了;View Code # include <cstdio>const int tab[][8] = { {7, 3, 1, 4, 5, 8, 6, 2}, {7, 4, 1, 3, 6, 8, 5, 2}, {2, 5, 8, 6, 3, 1, 4, 7}, {2, 6, 8, 5, 4, 1, 3, 7}};int a[9];voi... 阅读全文

posted @ 2012-07-20 16:54 getgoing 阅读(237) 评论(0) 推荐(0) 编辑

2012年7月19日

DFS专题 Fire Net

摘要: 这道题暴力秒过,以前在ZOJ上见过,当时不会,还以为不剪枝铁定超呢,结果纯暴力就过了。# include <cstdio># include <cstring># define N 4 + 3int n, ans;char g[N][N];bool check(int x, int y){ int i = x; if (g[x][y] != '.') return false; while (i <= n) { if (g[i][y] == 'X') break; else if (g[i][y] == (i-1)*n+y) ret 阅读全文

posted @ 2012-07-19 19:57 getgoing 阅读(245) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 17 下一页

导航