zoukankan      html  css  js  c++  java
  • poj 2063

    完全背包问题的变形,79ms,不过此题需要一个优化,就是把背包实际容量除以1000,不优化的话,数据量很大,会超时。刚开始优化直接定义成double,除了之后再乘,wa,因为有浮点误差,后来考虑了一下,改为了int,ac

    #include <iostream>
    #include <cstdio>
    using namespace std;
    int amount;
    int d,year;
    int intere[11];
    int v[11];
    int f[100000];
    int main()
    {
    	int N;
    	cin>>N;
    	while(N--)
    	{
    		cin>>amount>>year>>d;
    		int i,k,j;
    		for(i=1;i<=d;i++)
    		{
    			cin>>v[i]>>intere[i];
    			v[i]/=1000;
    			intere[i];
    		}
    		int c;
    		for(i=0;i<year;i++)
    		{
    			c=amount/1000;
    			f[0]=0;
    			for(j=1;j<=c;j++)
    			{
    				f[j]=0;
    				for(k=1;k<=d;k++)	
    				{
    					if(v[k]<=j&&(f[j-v[k]]+intere[k])>f[j])
    						f[j]=f[j-v[k]]+intere[k];
    				}
    			}
    			amount+=f[c];
    		}
    		cout<<amount<<endl;
    	}
    	return 0;
    }


  • 相关阅读:
    C# UDP实现通信的方法
    Leetcode 559. N叉树的最大深度
    101. 对称二叉树
    108. 将有序数组转换为二叉搜索树
    剑指 Offer 55
    Linux
    Linux
    Linux
    Linux
    Linux
  • 原文地址:https://www.cnblogs.com/lj030/p/3002216.html
Copyright © 2011-2022 走看看