2012年3月14日
摘要: 水题,不解释:代码如下:#include<stdio.h>#include<string.h>#define MAXN 30000 + 100long long f[MAXN];int chang[6] = {0,1,5,10,25,50};int n;void solve(){ memset(f,0,sizeof(f)); f[0] = 1; int max = 30000; for(int i = 1; i <= 5; i ++) for(int j = chang[i]; j <= max; j ++) f[j] += f[j ... 阅读全文
posted @ 2012-03-14 23:00 BFP 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 这道题要注意高精度误差,我这样做稍有一些麻烦,不如将面值放大成1, 2, 4, 10, 20, 40, 100, 200, 400, 1000, 2000再用整数计算,省去了我这个浮点误差(代码中的+0.1)的麻烦。代码如下:#include<stdio.h>#include<string.h>double n;double chang[12] = { 0,0.05,0.1,0.2,0.5,1,2,5,10,20,50,100};long long f[6000+10];void solve(){ double amount = 300.10; memset(f,0,s 阅读全文
posted @ 2012-03-14 22:39 BFP 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 求最长公共子序列,注意到输入有空格,用gets()就可以了。代码如下:#include<stdio.h>#include<string.h>#define MAXN 100 +10char m[MAXN], f[MAXN];int r[MAXN][MAXN], n;void dp(){ int lenm = strlen(m+1); int lenf = strlen(f+1); for(int i = 1; i <= lenm; i ++) for(int j = 1; j <= lenf; j ++) { if(m[i] ... 阅读全文
posted @ 2012-03-14 14:58 BFP 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 这道题开始想麻烦了,一直在思考体重相等的情况下,分成多个子序列,再分别对其IQ进行降序排列。这是太麻烦了。换个思路,体重只是IQ降序排列的一个限制,在求其最长下降子序列时只要考虑到体重相等时IQ不能相互嵌套就可以了,只是多了一个判断语句,真是会的不难,不会的真难啊,哈哈代码如下:#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAXN 1000 + 10int w[MAXN],IQ[MAXN], r[MAXN], f[MAXN], road[MAXN];int n, flag, max 阅读全文
posted @ 2012-03-14 00:12 BFP 阅读(592) 评论(0) 推荐(0) 编辑