zoukankan      html  css  js  c++  java
  • dp之完全背包poj3181(高精度背包)

    这个题目要用到大数的加法,其他的,我没有感觉到有什么难想的......比较水的背包题,掠过.....

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    using namespace std;
    int s[2000][2],dp[150],t[150][3];
    int main()
    {
    	int text;
    	scanf("%d",&text);
    	while(text--)
    	{
    		int n,m;
    		scanf("%d %d",&n,&m);
    		for(int i=1;i<=m;i++)
    		scanf("%d %d %d",&t[i][0],&t[i][1],&t[i][2]);
    		int cnt=0;
    		for(int i=1;i<=m;i++)
    		{
    			int k=1;
    			while(t[i][2]-k>0)
    			{
    				s[cnt][0]=k*t[i][0];
    				s[cnt++][1]=k*t[i][1];
    				t[i][2]-=k;
    				k*=2;
    			}
    			s[cnt][0]=t[i][2]*t[i][0];
    			s[cnt++][1]=t[i][2]*t[i][1];
    		}
    		memset(dp,0,sizeof(dp));
    		for(int i=0;i<cnt;i++)
    		{
    			for(int j=n;j>=s[i][0];j--)
    			if(dp[j]<dp[j-s[i][0]]+s[i][1])
    			dp[j]=dp[j-s[i][0]]+s[i][1];
    		}
    		printf("%d
    ",dp[n]);
    	}
    	return 0;
    }
    
  • 相关阅读:
    PHP 数据库 ODBC
    PHP MySQL Delete
    PHP MySQL Update
    PHP MySQL Order By 关键词
    PHP MySQL Where 子句
    01_今日介绍
    00_前情回顾
    02_cfork分叉进程
    01_c++下jni开发说明
    17_activity任务栈和启动模式
  • 原文地址:https://www.cnblogs.com/ziyi--caolu/p/3211091.html
Copyright © 2011-2022 走看看