2011年5月11日

poj 2137

摘要: 题目大意: 农夫FJ想把他所有的牛在它们吃草的时候用一根绳子连起来(就是1-2-3-1按顺序连接起来),每头牛有若干个吃草的位置,它们必须要在这些位置吃草。用绳子连接两头牛需要绳子的长度公式为 Sqrt( Sqr( x1-x2 ) + Sqr( y1-y2 ) ) ,农夫FJ希望需要的那根绳子长度最短,他需要你帮他求出这个最短的长度是多少。代码:#include<iostream>#include<fstream>#include<cmath>using namespace std;int n;int num[101];double x[101][41];d 阅读全文

posted @ 2011-05-11 18:17 宇宙吾心 阅读(333) 评论(0) 推荐(0)

poj 2231

摘要: 水题代码:#include<iostream>#include<fstream>using namespace std;long long n;long long a[10001];int cmp(const void *a,const void *b){ return *(long long*)a-*(long long *)b;}void read(){// ifstream cin("in.txt"); long long i,j,k; cin>>n; for(i=1;i<=n;i++) cin>>a[i]; lo 阅读全文

posted @ 2011-05-11 17:11 宇宙吾心 阅读(230) 评论(0) 推荐(0)

poj 2241

摘要: 题意:已知有n(n<30)种类型的block,以及它们的长宽高,每种类型的block都有无限多个。问如果把他们叠起来(上面block的底面的长宽,必须比下面的block的底面长宽都短),最高能有多高。代码:#include<iostream>#include<fstream>using namespace std;int n;struct e{ int s,t,h;};e a[100];int cmp(const void *a,const void *b){ return (*(e *)a).s-(*(e *)b).s;}int dp[101];void rea 阅读全文

posted @ 2011-05-11 15:59 宇宙吾心 阅读(390) 评论(0) 推荐(0)

poj 2264

摘要: 水题,定义好状态代码:#include<iostream>#include<fstream>using namespace std;char c1[110],c2[110];int dp[110][110];void print(int s,int t){ int i,j,k; if(s==0&&t==0) return; if(s==0) { for(i=0;i<t;i++) cout<<c2[i]; return; } if(t==0) { for(i=0;i<s;i++) cout<<c1[i]; return; 阅读全文

posted @ 2011-05-11 15:34 宇宙吾心 阅读(266) 评论(0) 推荐(0)

poj 2479

摘要: dp代码:#include<iostream>#include<fstream>using namespace std;int n;int l[50003],r[50003];int a[50003];void read(){// ifstream cin("in.txt"); int i,j,k; scanf("%d",&k); while(k--) { scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&a[i]) 阅读全文

posted @ 2011-05-11 14:55 宇宙吾心 阅读(263) 评论(0) 推荐(0)

poj 3519

摘要: dp代码:#include<iostream>#include<fstream>using namespace std;double dp[111][111];int mark[101];int l,b;int n,m;int ok(int s,int t){ int i,j,k; k=s+t; while(1) { if(k>n) k=2*n-k; else if(k<0) k=-k; else break; } if(mark[k]==2) k=0; return k;}void read(){// ifstream cin("in.txt&q 阅读全文

posted @ 2011-05-11 13:53 宇宙吾心 阅读(276) 评论(0) 推荐(0)

poj 3666

摘要: 转移的时候,就是:dp[i][j] = min{dp[i - 1][0...j] + ‍abs(A[i] - T[j])},其中A[i]是第i个数的原始值,T[j]是j离散化前的值。代码:#include<iostream>#include<fstream>using namespace std;int n;long long a[2001];long long b[2001];int cmp(const void *a,const void *b){ return *(long long*)a-*(long long*)b;}long long dp[2001][20 阅读全文

posted @ 2011-05-11 10:56 宇宙吾心 阅读(727) 评论(0) 推荐(0)

导航