摘要: 十一月一日,俺终于有网了,想想看,断网两个月对一个非常想上网的人是个多么大的煎熬啊!呵呵,感谢国家,感谢党,感谢学校啊! 阅读全文
posted @ 2011-11-01 18:10 枫月寒 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 由于实训基地没网,只好先暂停一下了,真不甘心呀。I'll come back! 阅读全文
posted @ 2011-10-23 12:41 枫月寒 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1042此题是贪心+枚举虽然说贪心和枚举在其他算法中算是简单的算法,但是它们合起来并不简单,代码又是的乱七八糟的题解:1.有题意可以看出,john直走即可,不必再走回来(因为浪费不必要的时间)2.枚举走一个湖,两个湖,三个湖......n个湖;每次枚举中求出总时间,总时间以每5min递减,每次递减找出湖中鱼的数量最大的那个,加到sum中,然后更新鱼群3.选出以上枚举的sum最大值及为题解,当然选出最大值的过程中要将时间记录下#include <stdio.h>#include <stdlib.h>#inclu 阅读全文
posted @ 2011-08-27 23:09 枫月寒 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2606暴力搜索解决了,但是很慢469ms但要注意斜率不存在的直线我是把斜率为零,斜率不存在,和其他情况 三种情况讨论的放代码#include <stdio.h>#include <stdlib.h>struct zx { int x; int y; double k;};struct zx a[20200];int pd(struct zx s,int x,int y){ double t; if(s.k==2000) { if(s.x==x) return ... 阅读全文
posted @ 2011-08-26 16:35 枫月寒 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1276题目就是 重量=价值 的多重背包详细解法参照大牛们编写的《背包九讲》状态转移方程:f[i][v]=max{f[i-1][v-k*c[i]]+k*w[i]|0<=k<=n[i]}要注意在输入数据中cash N n1 D1 n2 D2 ... nN DNcash小于所有D1...DN的情况,这种情况输出0我的代码:#include <stdio.h>#include <stdlib.h>#include <string.h>int max(int a,int b){ if(a> 阅读全文
posted @ 2011-08-21 21:20 枫月寒 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1221题目意思是输入n,并且求出和是n的按从中间到两边递减的回文数个数用a[i][j](long long类型)存储和是n,回文中的数都大于等于j的回文个数代码有点乱,不过时间很好Memory:1092KTime:0MS上代码#include <stdio.h>#include <stdlib.h>#include <string.h>long long a[300][300];long long dp(int n,int z){ int i; long long sum=0; if(n%2== 阅读全文
posted @ 2011-08-18 15:49 枫月寒 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 题目网址:http://poj.org/problem?id=1141此题是经典dp,解法和算法导论的矩阵链乘法相似,用矩阵链乘法中加括号的方法搜索搜有括号的匹配方法,然后用递归的方法算出加括号数的最小值。设i是搜索起点,j是终点dp(i,j)=min{dp(i,k)+dp(k+1,j)}; k从i遍历到j-1。然后用c[][]记录下取得最小值时的分割点,根据分割点再用递归输出结果。a[]中存放输入的字符串注意一点if(a[i]==a[j]),并不表示min{dp(i,j)}==min{dp(i+1,j-1)}, "()()"就是一个反例,因此在dp(i,j)中if(a[i 阅读全文
posted @ 2011-08-17 20:33 枫月寒 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 这提做的郁闷,开始马虎大意,wrong了n次,最后来了一个tle郁闷的是,将我自己写的快排换成qsort后,竟然AC了#include <stdio.h>#include<stdlib.h>struct s{ int a; int b;}qj[100000];int cmp(const void *a,const void *b){ return (*(struct s *)a).a-(*(struct s *)b).a;}int main(int argc, char** argv) { int n,i,x,y,k; scanf("%d",& 阅读全文
posted @ 2011-08-12 17:49 枫月寒 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 拾人牙惠,原帖地址http://hi.baidu.com/hwc25/blog/item/e23165189de8eed9ad6e7538.html我用的是ubuntu下的中文版用gcc连接math.h库函数要用到-lm(是L不是1)命令,但在netbeans中怎么办呢?打开 运行—>设置项目配置—>定制—>c编译器(左侧“生成"目录下)—>其他选项(”命令行“目录下)—>点击最后面的按钮—>在“其他选项”中加入-lm然后确定,再点应用就行了 阅读全文
posted @ 2011-08-10 16:06 枫月寒 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 在自己看来,思路虽然没错,但总是出现这样那样的细节问题。。。。题目描述:http://poj.org/problem?id=1019解题思路:开始是以为第i个数字,结果错了。原来是第i位。。。如题目前80位11212312341234512345612345671234567812345678912345678910123456789101112345678910寻找第i位的数字分为四个步骤1,找大块:大块是112......123456789,112123...100;也就是判断第i位所在序列的最大的数字多少位数字2,找小块:找到第i位所在的序列,1234..i..,比如第8位在11234这 阅读全文
posted @ 2011-08-10 15:40 枫月寒 阅读(350) 评论(0) 推荐(0) 编辑