1 2 3 4 5 ··· 8 下一页
摘要: 斯特林公式知道这个公式后就来水一题加深印象#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;#define PI acos(-1.0)#define e exp(1.0)int main(){ int total; scanf("%d",&total); while(total--) { __int64 n; scanf("%I64d 阅读全文
posted @ 2012-08-17 19:46 willzhang 阅读(193) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;__int64 gcd(__int64 a,__int64 b){ if (!b) return a; return gcd(b, a % b);}int main(){ __int64 total; scanf("%I64d",&total); __int64 k=1; while(total 阅读全文
posted @ 2012-08-17 17:34 willzhang 阅读(189) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n;int a[11][100100];int maxt;int d[11][100010];//d[i][j]表示在i地点j时间已经获得的最大值bool in(int x){ return x>=0&&x<=10;}int main(){ while(scanf("%d&qu 阅读全文
posted @ 2012-08-12 21:56 willzhang 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 这题假设所有的价值加起来为sum那么我们假设一个sum/2的背包用这个背包装物品,于是,这就转化成了一个多重背包问题= =我只会用二进制分解算多重背包以下是代码#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n;int val[5000];int size;int d[300000];int main(){ int N; while(scanf("%d 阅读全文
posted @ 2012-08-12 15:45 willzhang 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 类似于求最大子序列的和#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n;struct T{ int a; int b; int h;}block[100];int d[100];bool cmp(T x,T y){ return x.a*x.b>y.a*y.b;}bool check(int x,int y)//y能放到x上{ if(block[y].a 阅读全文
posted @ 2012-08-12 12:28 willzhang 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 每组测试数据的第一行是两个整数n,m,分别表示行数和列数(1<=n<=20,10<=m<=1000);悔不该看错题,WA了无数遍把m,n的范围看反了。。。。狂WA= =#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;__int64 m,n;__int64 a[22][1010];__int64 d[22][1010];int main(){ __ 阅读全文
posted @ 2012-08-10 22:01 willzhang 阅读(220) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int n;long a[1010];long d[1010];//int main(){ while(scanf("%d",&n),n) { int i,j; for(i=0;i<n;i++) { scanf("%ld",&a[i]); d[i]=a[i]; 阅读全文
posted @ 2012-08-10 18:49 willzhang 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 一开始狂WA,后来随机了100个数据全过,无语了。。。后来把ch改成ch[10]过了。。。这题的数据太黑了= =必须得用%s过滤#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int m,n;int d[1010][1010];int left[1010];int right[1010];int main(){ int total; scanf("%d&quo 阅读全文
posted @ 2012-08-10 15:34 willzhang 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 对每个数用动态规划找到最左边的大于等于它的数,找到最右边的大于等于它的数,最后做一次循环得到答案代码如下#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;__int64 a[100010];__int64 n;struct T{ __int64 left; __int64 right; __int64 height;}d[100010];int main(){ while 阅读全文
posted @ 2012-08-10 10:26 willzhang 阅读(170) 评论(0) 推荐(0) 编辑
摘要: #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#include<algorithm>using namespace std;int a[10010];struct T{ int sum; int head;}d[10010];int main(){ int n; while(scanf("%d",&n),n) { int head=-1; int i; bool flag=false; for(i=0;i<n; 阅读全文
posted @ 2012-08-09 22:10 willzhang 阅读(174) 评论(0) 推荐(0) 编辑
1 2 3 4 5 ··· 8 下一页