• 选择附件物品选择(有依赖背包问题)


    每日一贴,今天的内容关键字为选择附件

        /*

        http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1167

        物品选择

        Accepted : 13    Submit : 57

        Time Limit : 1000 MS   Memory Limit : 65536 KB

        3 2

        1 1

        2 1

        3 3

        Source

        duoxida
    剖析:这是属于有依赖性的背包问题(参考背包2.7),
     首先对其附件进行优化处置。即01背包处置,因为每种情况是不重复的
     其次,将每组(包括主件i)看成是 v件物品,(k=1....v)其中每种物品占体积k,所得代价为c[k-1]+w[i](k-1,表现预处置得到附件最优解,再加上主件)
    */

        每日一道理
    春蚕死去了,但留下了华贵丝绸;蝴蝶死去了,但留下了漂亮的衣裳;画眉飞去了,但留下了美妙的歌声;花朵凋谢了,但留下了缕缕幽香;蜡烛燃尽了,但留下一片光明;雷雨过去了,但留下了七彩霓虹。

        #include<string.h> #include<stdio.h> #include<algorithm> #include <iostream> using namespace std; const int maxn=1000+10; int w[maxn],b[maxn]; int f[maxn]; int max(int a,int b) { return a>b? a:b; } int main() { int n,v; int i,j,k; int t1,t2; while(scanf("%d%d",&n,&v)!=EOF) { for(i=1;i<=n;i++) { scanf("%d%d",&w[i],&b[i]); } memset(f,0,sizeof(f)); for(i=1;i<=n;i++) if(b[i]==i)//找出主件 { memset(c,0,sizeof(c)); for(t2=1;t2<=n;t2++)//对附件进行01背包处置,使得在雷同体积下得到的代价最大 if(b[t2]==i&&b[t2]!=t2) {for(t1=v-1;t1>=0;t1--) if(t1-1>=0) c[t1]=max(c[t1],c[t1-1]+w[t2]); } c[v]=c[v-1]+w[i]; for(j=v;j>=0;j--) for(k=1;k<=v;k++)//此时看作相当于"V件物品",每件”物品体积“相当为'k',"代价为",c[k-1]+w[i],(i为主件) {if(j-k>=0) f[j]=max(f[j],f[j-k]+w[i]+c[k-1]); } } printf("%d\n",f[v]); } return 0; }

    文章结束给大家分享下程序员的一些笑话语录: 神灯新篇
    一个程序员在海滩上发现了一盏神灯。他在灯上擦了几下,一个妖怪就从灯里跳出来说:“我是世界上法术最强的妖怪。我可以实现你的任何梦想,但现在,我只能满足你一个愿望。”程序员摊开了一幅中东地图说:“我想让中东得到永久的和平。”妖怪答道:“哦,我没办法。自打创世纪以来,那里的战火就没有停息过。这世上几乎没有我办不到的事,但这件事除外。”程序员于是说:“好吧,我是一个程序员,为许多用户编写过程序。你能让他们把需求表述得更清楚些,并且让我们的软件项目有那么一两次按进度按成本完成吗?”妖怪说:“唔,我们还是来看中东地图吧。”

    --------------------------------- 原创文章 By
    选择和附件
    ---------------------------------

  • 相关阅读:
    #Python#中国大学生实习-大数据分析
    PHP 数字转大写
    pdo封装2
    python tkinter组件学习
    微信小程序相关资料整理
    php任务管理器 —— Jobby
    linux 定时任务未执行php脚本
    centos中安装php7
    php资源列表
    给二维码(图片)添加文字(水印),让生成的二维码中间带logo
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3098158.html
Copyright © 2020-2023  润新知