随笔分类 -  心得

[2012.10.13] 省赛总结
摘要:总结了,就可以更坦然面对这次比赛的结局,也更坦然地投入考研复习。赛场上:前面队伍整体发挥不错,很顺利;后面碰到了 F 和 J ,当时这两题出的队伍比较多,并且没有仔细考虑过这两题,认为很有希望,决定专心搞这两道,F 稍微卡了一下过了之后,(可能理所当然地)认为 J 题会不用很久就能拿下,当时 J 题后面也有好多过了的,没想到是个坑。卡了一会,各种常见的解题入口都试了,始终没法和统一,还有 1h ,继续啃,感觉不对,打断建议搞 D,尝试下过了,后来我们再看 J 题,感觉很多队过我们却卡了,这道题属于特殊情况,想了可能是数据水(虽然不太可能)、想了最后也试了暴力。由于组队模式,最强的当然要担任主力 阅读全文

posted @ 2012-10-13 22:44 getgoing 阅读(395) 评论(0) 推荐(0)

COJ 1174 Shining Gems边界控制
摘要:这道题对枚举时限比较严,在写 check 函数时要注意边界不能超,因为超出边界有可能引用了上一组残留的数据,而使用 memset() 则会超时。# include <stdio.h># define N 1005# define DIR 4 const int dir[][2] = {{0,1}, {1,0}, {0,-1}, {-1,0}};int n, m;char b[N][N];char check(int i, int j){ char ch; int cnt, s; for (cnt = 1, s = i-2; s<i+2; ... 阅读全文

posted @ 2012-07-09 11:33 getgoing 阅读(198) 评论(0) 推荐(0)

TLE:csu 1205 放石子游戏
摘要:表示第一次用dfs。。。 1 # include <stdio.h> 2 # include <string.h> 3 4 char board[1001][1001]; 5 char vis[1001]; 6 int trace[1001]; 7 int N, M, ans; 8 9 void dfs(int x, int y);10 void special_dfs(int x, int y, int trace[]);11 12 int main()13 {14 int i, j, x, y;15 16 while (~scanf("%d%d" 阅读全文

posted @ 2012-03-27 00:26 getgoing 阅读(243) 评论(0) 推荐(0)

CSU 1109 FIbonacci-prime
摘要:实际上就是求第(<=)600000个素数,但是。。要优化内存,要优化速度。。最重要的要估计第600000个素数有多大,直接打印当然行,但是。。总之学了素数定理:1/ln(n)的分布。。 1 # include <stdio.h> 2 3 # define MAXN 600005 4 # define LN 15 5 # define INDEX(i) ((i) >> 5) 6 # define OFFSET(i) ((i) % 32) 7 # define GET_BIT(i) ((ptable[INDEX(i)]>>OFFSET(i)) & 阅读全文

posted @ 2012-03-26 00:57 getgoing 阅读(234) 评论(0) 推荐(0)

poj 1163 The Triangle
摘要:简单的动态规划,重点是怎样才算是好的实现。 1 # include <stdio.h> 2 3 # define MAXN 100 4 5 short int a[MAXN][MAXN]; 6 7 int main() 8 { 9 int n, i, j;10 11 scanf("%d", &n);12 13 for (i = 0; i < n; ++i)14 for (j = 0; j <= i; ++j)15 scanf("%d", &a[i][j]);16 17 for (i = n... 阅读全文

posted @ 2012-03-25 15:15 getgoing 阅读(203) 评论(0) 推荐(0)

csu 1148 词典
摘要:快排、二分查找,对于我来说是道好题,对大牛来说,瞄一眼就跳过了。。。 1 # include <stdio.h> 2 # include <string.h> 3 # include <stdlib.h> 4 5 # define MAXN 100005 6 7 typedef struct { 8 char s[12]; 9 char ss[12];10 } word;11 12 word dic[MAXN];13 word key;14 15 int cmp(const void *a, const void *b)16 { 17 return... 阅读全文

posted @ 2012-03-16 00:23 getgoing 阅读(265) 评论(0) 推荐(0)

[noj 1002]囧:求最大值最小值 WA 8次
摘要:没有思考,直接按成法来,第一组数据都没通过。最关键的在于 if else 的结构没有考虑到如果输入的数都相等怎么办,另外如果输入的数是按增序排列也会得到错误的结果: 1 # include <stdio.h> 2 3 int main() 4 { 5 int x, N, min, max; 6 7 while (~scanf("%d", &N)) 8 { 9 max = 0;10 min = 100;11 while (N--)12 {13 sca... 阅读全文

posted @ 2012-03-13 14:37 getgoing 阅读(290) 评论(0) 推荐(0)

csu 1011 Counting Pixels
摘要:没想象中的复杂;先将园分为四块以减少计算量(还可以再细分为八块,略显复杂);判断圆是如何穿过一个像素的:对于右上方的点,只有三种情况:从右边穿过,从右下角的顶点穿过,从下边穿过;先给出一个初始像素(被穿过),然后根据穿过的情况向下一个被穿过的像素扩展,并根据情况计数;像素的表示:右上方定点的坐标:Language: CResult: AcceptedTime:236 msMemory:740 kb最快的只有128ms,求指点。 1 # include <stdio.h> 2 3 int x, y, r; 4 5 int state(int x, int y); // 1: ri.. 阅读全文

posted @ 2012-03-13 00:00 getgoing 阅读(466) 评论(0) 推荐(0)

优化:一个简单小题
摘要:题目来源于HDOJ1013把一个正整数的各位数字之和加起来,如果得到一个个位数,就打印它,否则重复对和的各位数字相加,直到得到个位数,打印它;若输入为 0 则结束。这个题要处理比较大的数(字符串表示)放弃了在 while((ch=getchar() != EOF)) 下分情况讨论后(详情自己试),容易想到下面的方法: 1 # include <stdio.h> 2 3 int main() 4 { 5 char ch; 6 int ans; 7 8 while (ch=getchar() != '0') 9 {10 ans = (ch... 阅读全文

posted @ 2012-03-11 23:01 getgoing 阅读(229) 评论(0) 推荐(0)

各位数字之和——一个神奇的结论
摘要:今天下午翻了翻XX大学的ACM模版,作为新手,当然挑能看懂的来看,结果就看到了这样一个简单的问题:题目是这样的,输入一个正整数,将它的各位数字加起来,如果得到的不是一位数,将这个和的各位数字再加起来,如此循环,直到得到一个一位数,最后输出这个个位数。最简单的方法是使用递归模拟上述求和过程,直到和小于10:# include <stdio.h>int dig_sum(int x){ int sum = x; if (x < 10) return sum; else { sum = 0; while (x > 0) { ... 阅读全文

posted @ 2012-03-06 17:38 getgoing 阅读(1362) 评论(0) 推荐(0)

用位来代替bool:减小内存使用,提高运行速度
摘要:素数槽问题Description 处于相邻的两个素数p和p + n之间的n - 1个连续的合数所组成的序列我们将其称为长度为n的素数槽。例如,‹24, 25, 26, 27, 28›是处于素数23和素数29之间的一个长度为6的素数槽。 你的任务就是写一个程序来计算包含整数k的素数槽的长度。如果k本身就是素数,那么认为包含k的素数槽的长度为0。Input第一行是一个数字n,表示需要测试的数据的个数。后面有n行,每行是一个正整数k, k大于1并且小于或等于的第十万个素数(也就是1299709)。Output对于输入部分输入的每一个k,都对应输出一个非负整数,表示包含k的素数槽的长度,每个非负整数占 阅读全文

posted @ 2012-02-23 20:19 getgoing 阅读(874) 评论(0) 推荐(0)

csu1021: 组合数末尾的零
摘要:C(m,n) =m!/((m-n)!n!)将组合数C(m,n)写成二进制数,这个二进制数末尾有多少个零?* 自然数可以进行质因数分解,质因子2的指数即相应二进制末尾零的个数; 将各个数二进制末尾0的个数累加,得到阶乘数末尾0的个数。优化:# include <stdio.h>int f[] = {0,1,3,7,15,31,63,127,255,511};int main(){ int T, m, n, i, ans; scanf("%d", &T); while (T-- > 0){ ans = 0; scanf("%d%d" 阅读全文

posted @ 2012-02-17 21:58 getgoing 阅读(589) 评论(0) 推荐(2)

导航