zoukankan      html  css  js  c++  java
  • POJ 2392(Space Elevator)

    题目链接:http://poj.org/problem?id=2392

    题意:有n种石头,每个石头的高度hi,允许用的最高高度为ai,数量为ci,求能组合的最高高度。

    思路:一道典型的完全背包问题,还是套路

    ac 代码:

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <iostream>
    #define MAX_N 40005
    using namespace std;
    typedef long long ll;
    
    int k;
    bool dp[MAX_N];
    
    struct Block
    {
    	int h;
    	int a;
    	int c;
    }block[405];
    
    bool cmp(Block m,Block n){
    	return m.a<n.a;
    }
    
    int main(void){
    	while(~scanf("%d",&k)){
    		for(int i=0;i<k;i++)
    			scanf("%d%d%d",&block[i].h,&block[i].a,&block[i].c);
    		sort(block,block+k,cmp);
    		memset(dp,0,sizeof(dp));
    		dp[0]=1;
    		for(int i=0;i<k;i++)
    			for(int j=0;j<block[i].c;j++)
    				for(int s=block[i].a;s>=block[i].h;s--)
    					dp[s]|=dp[s-block[i].h];
    
    		for(int i=block[k-1].a;i>=0;i--)
    			if(dp[i]){
    				printf("%d
    ",i);
    				break;
    			}
    	}
    	
    	return 0;
    }
    

      

  • 相关阅读:
    第一次作业
    第四次作业
    第五次作业《构建之法》心得体会
    第三次作业
    第二次作业
    第一次作业
    个人简介
    读《构建之法》有感
    第四次博客园作业(2)
    第四次博客园作业(1)
  • 原文地址:https://www.cnblogs.com/jaszzz/p/12686141.html
Copyright © 2011-2022 走看看