• [洛谷U871]building


    题目来源:http://www.luogu.org/problem/show?pid=U871#
    【题目背景 Background】
    WOW是BLIZZARD公司开发的一款网络游戏,游戏的背景是处在一个叫做艾泽拉斯的神秘大陆上的。在这片陆地上生活着许多不同种族不同部落的奇幻生物,暗夜精灵就是其中的一员。他们拥有高深的科技和强大的魔法,但却因为性格的冷傲孤僻而不被其他种族所接受。为了改善这种状况,半神塞纳留斯决定发展有暗夜精灵族特色的产业来吸引外族,他发现暗夜精灵的建筑风格深受世人青睐,因为它们都是古树的造型,且具有一种神奇的魔力,就是在占地面积不变的情况下可以自由改变形状,使得建筑之间完全没有空隙。
     【题目描述 Description】
    于是,他将这一艰巨的任务交给了部落中最具天赋的工程师守望者玛维,让他在一块面积为n(0<=n<=100)的土地上建造若干个建筑,这些建筑都有各自的占地面积q(0<=q<=100),价格p(0<=w<=100)和魅力值v(0<=v<=100)。就暗夜精灵当前掌握的科技来看,他们可以建造m(0<=m<=100)种建筑,为了不使游客感到乏味,每一种建筑规定最多只能建一座。
    你的任务就是替玛维想出一种选择建造的方案,使得最多用k(0<=k<=100)的金钱,在面积为n的土地上建出的建筑具有最高的魅力值。
     【输入输出格式 Input/output】
    输入格式:
    第一行有三个数m,n,k;以下有m行,分别包含了m种建筑的占地面积q,价格p和魅力值v。
    输出格式:
    仅有一个数,为最高魅力值。
     输入输出样例 Sample input/output
    样例测试点#1
    输入样例: 

    5 12 11
    4 3 3
    3 2 6
    2 4 2
    6 3 7
    5 5 6

    输出样例:

    15

    【思路】

      二维费用的背包问题,DP方程:f[j,d]:=max(f[j,d],f[j-q[i],d-p[i]]+v[i]);

    var q,p,v:array[0..10000] of longint;
        n,i,m,k,d,j:longint;
        f:array[-1000..1000,-1000..1000] of longint;
    
    function max(x,y:longint):longint;
    begin
        if x<y then exit(y) else exit(x);
    end;
    
    begin
        fillchar(f,sizeof(f),0);
        readln(m,n,k);
        for i:=1 to m do
            readln(q[i],p[i],v[i]);
        for i:=1 to m do
            for j:=n downto q[i] do
                for d:=k downto p[i] do
                    f[j,d]:=max(f[j,d],f[j-q[i],d-p[i]]+v[i]);
        writeln(f[n,k]);
    end.
  • 相关阅读:
    POJ 1300 Open Door
    POJ 2230 Watchcow
    codevs 1028 花店橱窗布置
    codevs 1021 玛丽卡
    codevs 1519 过路费
    codevs 3287 货车运输
    codevs 3305 水果姐逛水果街二
    codevs 1036 商务旅行
    codevs 4605 LCA
    POJ 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4718009.html
Copyright © 2020-2023  润新知