摘要: 这题很简单,可以设置结构体保存三维及姓名,求出体积最大的人和最小的人输出即可。 由于没有注意输出"."而贡献了一次WA,囧#include <iostream>#include <algorithm>#include <string>using namespace std;struct stu{ stu(){} string name; int d;}s[1000];int comp(const void * a,const void * b){ return ((stu*)a)->d - ((stu*)b)->d;}int 阅读全文
posted @ 2010-11-27 20:47 yangleo 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 这题想了很久,是经典的动态规划问题,感觉有点难度,在网上看了很多讨论。 看了动态规划还要好好加强。#include <iostream>using namespace std;int main(){ long i,j,k,l,n,m,t1,maxf,count; long p[210],d[210],f[210],s[210]; long can[30]; long res[30][1000],from[30][1000]; count=0; cin>>n>>m; while(n!=0 || m!=0) { count++... 阅读全文
posted @ 2010-11-27 19:56 yangleo 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 这题很简单,直接贴AC代码了#include <iostream>#include <string.h>#define MAXN 10000using namespace std;int num[MAXN];int dnum(int i){ int sum = i; int temp; while (i > 0) { temp = i%10; sum += temp; i = (i-temp)/10; } return sum;}int main(){ int i,j; for (i = 0;i<MAXN;i++) { num[i] = 1; } for ( 阅读全文
posted @ 2010-11-27 16:24 yangleo 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 在输入的同时,进行一次DP,计算出从左到右的最大值,并把它保存在数组dp的对应的下标元素中,这样之后,对于下标为i的元素,它其中保存的便是前面所有元素可能的最大连续和。再从右到左进行一次DP,计算从右到左的最大连续和。假设此时已经算到下标为i的元素,那么将sum+dp[i-1]与ans进 行比较,将ans取较大者。最后当i到2的时候ans中的值即为所求的最大值。#include <iostream>using namespace std;int dp[100001],num[100001];const int MINNUM = -99999999;int main(){ int c 阅读全文
posted @ 2010-11-27 15:31 yangleo 阅读(389) 评论(0) 推荐(0) 编辑