摘要:
题目链接。分析:首先,感慨一下。。我竟然做出来了一个难度为2的(第一次)。。感谢CCTV。这题呢。。直接DFS就可以了。不过不剪枝的话TLE。第一种剪枝是如果所有可走的点的总和也小于T直接输出NO。这一种剪枝可以从TLE到843ms第二种是从课件上学的奇偶性剪枝可以从TLE到 453ms最后把两种方法合并。竟然达到了62ms(掌声响起。。)奇偶性剪枝。如下图所说。62ms AC代码如下;#include <stdio.h>#include <string.h>#include <math.h>#include <stdlib.h>#define 阅读全文
posted @ 2013-02-25 21:32
Still_Raining
阅读(224)
评论(3)
推荐(0)
摘要:
题目链接。分析:一看这题还以为是暴搜呢。果断TLE。第二次将三个数组合并,二分查找,MLE。最后将两个两个数组合并,二分查找 AC。。。不容易啊。AC代码如下:#include <stdio.h>#include <stdlib.h>#define MAXN 510int l, m, n;int num1[MAXN], num2[MAXN], num3[MAXN], num4[MAXN*MAXN];int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;}int main(){ int fl 阅读全文
posted @ 2013-02-25 17:34
Still_Raining
阅读(156)
评论(0)
推荐(0)
摘要:
题目链接。分析:先求出素数表。再DFS。#include <stdio.h>#include <string.h>#define MAXN 21int isp[MAXN+MAXN], num[MAXN], n, vis[MAXN], cnt;void prime(){ int i, j; memset(isp, -1, sizeof(isp)); isp[0] = isp[1] = 0; for(i=2; i<=MAXN+MAXN; i++){ if(isp[i]) for(j=i*i; j<=MAXN+MAXN; j += i) ... 阅读全文
posted @ 2013-02-25 17:26
Still_Raining
阅读(175)
评论(0)
推荐(0)
摘要:
题目链接。这题就是BFS。也挺水的。。看见这个时间差了吗。。很可惜。这并不是减枝。。只是同样的代码,用不同的编译器发罢了(汗。)。#include <stdio.h>#define MAXN 52typedef struct Pos{ int x, y, z; int cur;}Pos;int a, b, c;int G[MAXN][MAXN][MAXN], vis[MAXN][MAXN][MAXN];Pos queue[MAXN*MAXN*MAXN];int dx[] = {0, 0, 0, 0, 1, -1};int dy[] = {0, 0, 1, -1, 0, 0};int 阅读全文
posted @ 2013-02-25 17:19
Still_Raining
阅读(286)
评论(0)
推荐(0)
摘要:
题目链接。分析:水题,直接BFS或者DFS。dfs:#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAXN 22char G[MAXN][MAXN];int vis[MAXN][MAXN], cnt, m, n;int dx[4] = {0, 0, 1, -1};int dy[4] = {1, -1, 0, 0};void dfs(int x, int y){ int d; for(d=0; d<4; d++){ int nx = x+dx[d], ny = y+dy[d 阅读全文
posted @ 2013-02-25 16:37
Still_Raining
阅读(487)
评论(0)
推荐(0)
浙公网安备 33010602011771号