摘要: 下面是一种简答素数打表法:#include <iostream>#include <fstream>#include <math.h>using namespace std;#define N 100000 bool p[N]; //判断p[i]中的i是否为素数int pn[N]; //存储素数void prim_num(){ int i,j,n; for(i=1; i<=N; i++) p[i]=true; n=(int)sqrt(N); for(i=2; i<=n; i++) { for(j=i+i; j<=N; j+=i...阅读全文
posted @ 2012-05-19 23:29 Jason Damon 阅读(15) 评论(0) 编辑
摘要: 记住这个公式就OK了。for i=1..N for v=w[i]..V f[v]=max{f[v],f[v-w[i]]+v[i]}.这样就转换成为了0/1背包问题是一样的,只不过第二个循环的顺序不一样而已。#include<iostream>#include <fstream>#define MIN(a,b) (a<b?a:b)#define INF 9999999#define MAXN 505#define MAX 10001using namespace std;int t,n,d,e,g;int v[MAXN],w[MAX],f[MAX];int main阅读全文
posted @ 2012-05-19 21:45 Jason Damon 阅读(10) 评论(0) 编辑
摘要: AC的代码:#include <iostream>#include <fstream>using namespace std;#define MAX(a,b) (a>b?a:b)#define N 12881#define M 3403int value[N];int W[M],D[M];int main(){ int n,m,i,j; freopen("in.txt","r",stdin); while(scanf("%d%d",&n,&m)!=EOF) { for(i=1; i<阅读全文
posted @ 2012-05-11 21:32 Jason Damon 阅读(18) 评论(0) 编辑
摘要: 和poj2533是一样的。#include <iostream>#include <fstream>using namespace std;#define MAX(a,b) (a>b?a:b)#define MAXN 100005int A[MAXN],D[MAXN];int main(){ int i,j,ca,max,len,n; ca=1; freopen("in.txt","r",stdin); while(1) { //memset(D,0,sizeof(D)); i=1; len=0; whil...阅读全文
posted @ 2012-05-10 23:24 Jason Damon 阅读(3) 评论(0) 编辑
摘要: 问题描述:给出一个序列a1,a2,a3,a4,a5,a6,a7….an,求它的一个子序列(设为s1,s2,…sn),使得这个子序列满足这样的性质,s1<s2<s3<…<sn并且这个子序列的长度最长。输出这个最长的长度。例如有一个序列:1 7 3 5 9 4 8,它的最长上升子序列就是 1 3 4 8 长度为4解题思路: 用A[]存储输入的数。D[i]表示以i结束所能得到的最大上升字串,对于每个i,遍历1<=j<i;如果A[i]>A[j] && D[i]<=D[j],则表明A[i]可以加入到A[j]后面,则D[i]=D[j]+1; 阅读全文
posted @ 2012-05-10 22:20 Jason Damon 阅读(5) 评论(0) 编辑
摘要: /* * ===================================================================================== * * Filename: poj2568 * * Description: 建一个数组,判断五个里面至少要多少个d才能满足 * deficit的条件,然后就是贪心每次找最远的一个,标记成d * 如果4个d都不能满足,则也输出deficit. * 看了比人枚举也能得出结果。非常简洁。单数如果范围再大点就不行 * ...阅读全文
posted @ 2012-05-09 01:15 Jason Damon 阅读(6) 评论(0) 编辑
摘要: 昨天把贪心看了一下。开始进入贪心的学习。/* * ===================================================================================== * * Filename: poj 1328 * * Description: 贪心+qsort * 先用计算出要覆盖每个点所需要在x轴上的区间(关键是要理解这点,不懂的可以看看程序)。用Node结构体存储。 * 注意要用double.因为sqrt要求的是double.然后每次从右边开始判断(即找 * ...阅读全文
posted @ 2012-05-08 13:38 Jason Damon 阅读(10) 评论(0) 编辑
摘要: 题目不难。但是要做出来也要些耐心呀。考虑各种情况。 这题是边输入边判断的,所以当能判断出结果的时候,要继续输入,把剩下的数据继续输入完,不然会影响下一次的输入。其他的就没什么要注意的了吧。该注意的我都在程序里注释了。感觉这题麻烦就麻烦再判断移动的move函数里面,都是重复的操作。应该可以优化吧。 写完后我以为我的代码太长了。。。看了别人的,其实也差不多。呵呵。有空再想想怎么尽量优化吧。/* * ===================================================================================== * * File...阅读全文
posted @ 2012-05-07 13:18 Jason Damon 阅读(8) 评论(0) 编辑
摘要: 呵呵,自己去思考的就是不一样啊!!加油!孩子~/* * ===================================================================================== * * Filename: main.cpp * * Description: poj 1068 模拟题 * 我是用数组存储括号,左括号标记为0,右括号标记为1;然后再用一个 * bool型used[]数组标记该括号是否已经匹配过。 * 每次输入一个数的时候都可以得到一个匹配,然后从这个...阅读全文
posted @ 2012-05-07 00:02 Jason Damon 阅读(5) 评论(0) 编辑
摘要: /* * ===================================================================================== * * Filename: main.cpp * * Description: poj 1008 * * Version: 1.0 * Created: 2012/5/6 22:28:05 * Revision: none * Compiler: gcc * * Author: Jason Damon * ...阅读全文
posted @ 2012-05-06 22:30 Jason Damon 阅读(8) 评论(0) 编辑
