poj 2392 建塔(多重背包+不定上界)

http://blog.csdn.net/libin56842/article/details/9492351

 

这次比较理解那个!dp[j]是为了什么,因为是滚动数组,没有这个的话used那边会出问题

 

复制代码
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <stack>
#include <queue>
#include <cctype>
#include <vector>
#include <iterator>
#include <set>
#include <map>
#include <sstream>
using namespace std;

#define mem(a,b) memset(a,b,sizeof(a))
#define pf printf
#define sf scanf
#define spf sprintf
#define pb push_back
#define debug printf("!\n")
#define MAXN 1010
#define MAX(a,b) a>b?a:b
#define blank pf("\n")
#define LL long long
#define ALL(x) x.begin(),x.end()
#define INS(x) inserter(x,x.begin())
#define pqueue priority_queue
#define INF 0x3f3f3f3f

struct node
{
    int h,c,a;
}p[405];

int K;

bool dp[40005];

int used[40005];

int cmp(const node& x,const node& y)
{
    return x.a<y.a;
}

int main()
{
    int i,j,k;
    while(~sf("%d",&K))
    {
        for(i=1;i<=K;i++)
        {
            sf("%d%d%d",&p[i].h,&p[i].a,&p[i].c);
        }

        sort(p+1,p+K+1,cmp);

        /*
        for(i=1;i<=K;i++)
        {
            pf("%d %d %d\n",p[i].h,p[i].a,p[i].c);
        }*/

        mem(dp,false);
        dp[0] = true;
        int ans = 0;
        for(i=1;i<=K;i++)
        {
            mem(used,0);
            for(j=p[i].h;j<=p[i].a;j++)
            {
                if(!dp[j] && dp[j-p[i].h] && used[j-p[i].h]<p[i].c)
                {
                    dp[j] = true;
                    used[j] = used[j-p[i].h] + 1;
                    //pf("%d %d %d\n",i,j,used[j]);
                    if(ans<j) ans = j;
                }
            }
        }
        pf("%d\n",ans);
    }
    return 0;
}
复制代码

 

posted @   qlky  阅读(137)  评论(0编辑  收藏  举报
编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示