POJ 2392 Space Elevator

原创 2015年11月20日 15:39:40
#include<stdio.h>
#include<string.h>
#include<stack>
#include<string>
#include<math.h>
#include<queue>
#include<set>
#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
using namespace std;
#define LL long long
#define inf 1<<31
#define mod 1000000007
#define N 40100
int dp[N];
struct node
{
    int x,y,z;
}a[N],b[N];
bool cmp(node c,node d)
{
    return c.y<d.y;
}
int main()
{
    int i,j,n,m=0;
    scanf("%d",&n);
    memset(dp,0,sizeof(dp));
    for(i=1;i<=n;i++)
    {
        scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
        m=max(m,a[i].y);
    }
    int tot=0;
    for(i=1;i<=n;i++)//多重背包转化为01背包
    {
        int k=1;
        while(a[i].z>=k)
        {
            b[++tot].x=a[i].x*k;
            b[tot].y=a[i].y;
            a[i].z-=k;
            k<<=1;
        }
        if(a[i].z)
        {
            b[++tot].x=a[i].x*a[i].z;
            b[tot].y=a[i].y;
        }
    }
    sort(b+1,b+1+tot,cmp);
    for(i=1;i<=tot;i++)
    {
        for(j=b[i].y;j>=b[i].x;j--)
            dp[j]=max(dp[j],dp[j-b[i].x]+b[i].x);
    }
    int ans=0;
    for(i=m;i>=0;i--)
        ans=max(ans,dp[i]);
    printf("%d\n",ans);
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

poj2392 Space Elevator 多重背包转换为完全背包

Description The cows are going to space! They plan to achieve orbit by building a sort of space el...

poj——2392——Space Elevator(多重)

Description The cows are going to space! They plan to achieve orbit by building a sort of space el...

【第三弹】【POJ2392】【Space Elevator】【解法一】

Space Elevator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9477   Accepted: 4...

POJ 2392 Space Elevator (多重背包+优化)

Space Elevator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7378   Accepted: 3...

POJ2392——Space Elevator(DP)

题目链接        这道题的意思是给定每一块建材的高度和数目,以及其能堆叠的高度上限,求最高能叠多高,这道题和poj上的一道名字是coins的题目比较相似,我用了同样的DP策略,也就是dp[...

poj2392 - Space Elevator

想看更多的解题报告: http://blog.csdn.net/wangjian8006/article/details/7870410                              ...

poj 2392 Space Elevator(多重背包变形)

Space Elevator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5144   ...
  • fp_hzq
  • fp_hzq
  • 2011年10月05日 19:00
  • 1156

【第四弹】【POJ2392】【Space Elevator】【解法二】【含测试数据】

Space Elevator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9477   Accepted: 4...

POJ 2392 Space Elevator(贪心+多重背包)

POJ 2392 Space Elevator(贪心+多重背包) http://poj.org/problem?id=2392 题意: 题意:给定n种积木,每种积木都有一个高度h[i],...

多重背包-POJ 2392 Space Elevator

POJ 2392题目大意如下: FJ的牛想上天,但是要借助梯子,现在有K种梯子,由于会收到宇宙射线的影响,所以每种梯子限定了能够到达的最大高度。给出K种梯子的单位长度、数量、以及允许到达的最大高度。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2392 Space Elevator
举报原因:
原因补充:

(最多只允许输入30个字)