摘要:        
自我批评一下,如此简单的题我竟乱七八糟想了一通,批评批评,太废材了,这题就01背包,不说算了,代码:#include <stdio.h>#include <stdlib.h>int f[10001];int main(int argc, char **argv){	int i, j;	int n, m;	int a;	scanf("%d%d", &n, &m);	f[0] = 1;	for(i = 0; i < n; i++){ scanf("%d", &a); for(j = m; j >=     阅读全文
posted @ 2011-07-16 16:46
zqynux
阅读(270)
评论(0)
推荐(0)
        
            
        
        
摘要:        
f[i]表示第i天获得的最大的美元,要是浮点类型(double),f[i] = max{f[i - 1], f[j] * num[i] / num[j]}, 0 <= j < i, f[0] = 100,1<= i < n 代码如下:#include <stdio.h>#include <stdlib.h>#define max(a, b) ((a)>(b)?(a):(b))double f[100];int num[100];int main(int argc, char **argv){	int i, j;	int n;	scanf(&    阅读全文
posted @ 2011-07-16 16:38
zqynux
阅读(249)
评论(0)
推荐(0)
        
            
        
        
摘要:        
看了网上的一个人的代码,那个人是对分母循环,然后确定分子,然后搜最优解。但是他找分子的时候是考虑了一些范围的,想一下可以直接去掉这层考虑,等下说明,然后它用了gcd(最大公约数),我这里也把它去掉了,不过其实都不保险,因为吧,等下分析下: 利用的是j/i≈sqrt(p),可以写成j≈i*sqrt(p),然后i从1到n枚举,求j,然后判断j/i,这就是思路。 首先是要比sqrt(p)小的啊,i*sqrt(p)是分子,但是i*sqrt(p)是分数,而我们需要的是整数,那该怎么办,搜两个,一个是(int)(i*sqrt(p)),另一个是(int)(i*sqrt(p)) - 1,证明如下: i*sq.    阅读全文
posted @ 2011-07-16 15:32
zqynux
阅读(288)
评论(0)
推荐(0)
        
            
        
        
摘要:        
就是贪心,但是这个题目很猥琐,需要考虑打不过对方的情况,代码如下:#include <stdio.h>#include <stdlib.h>int a[100000], b[100000];int com(const void *a, const void *b){	return *(int *)a - *(int *)b;}int main(int argc, char **argv){	int i, j, ans = 0;	int m, n;	scanf("%d%d", &n, &m);	for(i = 0; i < n;     阅读全文
posted @ 2011-07-16 11:47
zqynux
阅读(180)
评论(0)
推荐(0)
        
 
                    
                 
 浙公网安备 33010602011771号
浙公网安备 33010602011771号