【USACO Feb 2014】Cow Decathlon

题目描述

约翰有 N 头奶牛,组成了一直队伍参加全能比赛。比赛一共有 N 项,每头奶牛必须参加一项比
赛,每项比赛也必须有一头奶牛参加。任何一头奶牛可以胜任任何一项比赛,但得分不一样。如果第
i 头奶牛参加第 j 项比赛,在比赛结束的时候,可以为团体总分增加 S i,j 。
比赛是按照顺序依次进行的。除了上述获得分数的方法之外,还有 B 种奖励分。获得奖励的方法
是在前几项比赛里获得足够的分数。具体来说,第 i 项奖励会在第 K i 项比赛结束的时候检查,如果
当时的总分大于或等于 P i ,奶牛们就可以立即获得额外的 A i 分。如果有多项奖励在同一时刻检查,
奶牛可以自由安排检查和加分的顺序。请问约翰应该如何安排奶牛参加比赛,才能让它们获得最高的
分数? 

输入

• 第一行:两个整数 N 和 B,1 ≤ N ≤ 20, 1 ≤ B ≤ 20
• 第二行到第 B + 1 行:第 i + 1 行有三个整数 K i ,P i 和 A i ,1 ≤ K i ≤ N, 1 ≤ P i ≤ 40000,
1 ≤ A i ≤ 1000
• 第 B + 2 行到第 B + N + 1 行:第 i + B + 1 行有 N 个整数,代表 S i,1 到 S i,N ,对每个
1 ≤ j ≤ N, 1 ≤ S i,j ≤ 1000

输出

• 单个整数:表示奶牛们可以获得的最大得分

样例输入

3 1 2 7 6 5 1 7 2 2 4 4 2 1

样例输出

17

提示

第一项比赛由第一头奶牛参加,第二项比赛

由第三头奶牛参加,第三项比赛由第二头奶牛参加
题解:
n<=20 ->状压DP
然后定义F[i]表示i状态的奶牛,设now为i中1的数量,参加前now场比赛的最大得分
至于额外分这个东西,我把与比赛a有关的额外分都存在一个vector里 然后贪心 按pi从小到大排序
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<vector>
 6 using namespace std;
 7 const int N=20;
 8 struct node{
 9     int p,add;
10 };
11 vector<node>q[N+5];
12 int s[N+5][N+5],F[1<<N];
13 bool cmp(const node &p,const node &q){return p.p<q.p;}
14 int getday(int x)
15 {
16     int cnt=0;
17     while(x)
18     {
19         cnt++;
20         x-=(x&(-x));
21     }
22     return cnt;
23 }
24 int main()
25 {
26     int n,m,x,y,z;
27     scanf("%d%d",&n,&m);
28     for(int i=1;i<=m;i++)
29     {
30         scanf("%d%d%d",&x,&y,&z);
31         q[x].push_back((node){y,z});
32     }
33     for(int i=1;i<=n;i++)sort(q[i].begin(),q[i].end(),cmp);
34     for(int i=1;i<=n;i++)
35     for(int j=1;j<=n;j++)
36     scanf("%d",&s[i][j]);
37     int mk=(1<<n)-1,now,tmp;
38     for(int i=0;i<mk;i++)
39     {
40         now=getday(i);
41         for(int j=1;j<=n;j++)
42         {
43             if((1<<(j-1))&i)continue;
44             tmp=F[i]+s[j][now+1];
45             for(int k=0,sz=q[now+1].size();k<sz;k++)
46             if(tmp>=q[now+1][k].p)tmp+=q[now+1][k].add;
47             F[i|(1<<(j-1))]=max(F[i|(1<<(j-1))],tmp);
48         }
49     }
50     printf("%d",F[mk]);
51     return 0;
52 }

 

转载于:https://www.cnblogs.com/Yuzao/p/7002489.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新基建深度报告:七大领域十大龙头分析

来源&#xff1a;华泰证券稳增长、促转型&#xff0c;把握新基建浪潮中的七大产业机遇七大领域&#xff1a;5G、数据中心、云计算、工业互联网、物联网、人工智能、传 统基础设施数字化改造新基建担负着不一样的历史使命。传统基建稳需求、注重补短板&#xff0c;新基建关注新兴…

新版IDEA中Git的使用(三)

说明&#xff1a;前面介绍了在新版IDEA中Git的基本操作、分支操作&#xff0c;本文介绍一下在新版IDEA中&#xff0c;如何回滚代码&#xff1b; 分以下三个阶段来介绍&#xff1a; 未Commit的文件&#xff1b; 已经Commit&#xff0c;但未Push的文件&#xff1b; 已经Push的…

python定义二叉树_用类定义二叉树

#用类定义二叉树class BTree:def__init__(self,value):#左儿子self.left None#节点值self.data value#右儿子self.right None#向左子树插入节点definsertLeft(self,value):self.left BTree(value)returnself.left#向右子树插入节点def insertRight(self,value):self.right BTre…

html的字体红底颜色,红底黄字门头风水好吗 什么颜色招牌好

门头就是招牌&#xff0c;影响着一个店铺的生意好坏。而红底黄字的门头风水不好&#xff0c;一来是因为不容易辨识&#xff1b;二来是因为容易使人焦躁。而招牌最佳的颜色就是红底白字或白底黄字。一个店铺生意好不好&#xff0c;与自身的招牌是有着不可分割的关系的。我们除了…

python基础之名称空间和作用域、函数嵌套

一、名称空间 1、定义&#xff1a;存放名字与值的绑定关系 2、名称空间分为&#xff1a;内置名称空间、全局名称空间、局部名称空间 内置名称空间&#xff1a;python解释器自带的名字&#xff0c;python解释器启动就会生成 全局名称空间&#xff1a;文件级别定义的名字都会存放…

与微信、APP正面刚?三大运营商联合发布5G消息白皮书

来源&#xff1a;数据观综合4月8日&#xff0c;中国移动、中国电信、中国联通联合发布《5G消息白皮书》&#xff0c;宣布推出全新的信息交互服务——“5G消息”和生态建设构想&#xff0c;这意味着我国基础短信业务进入全面升级通道&#xff0c;传统短信将被5G消息(RCS业务)逐步…

Linux磁盘及文件系统(二)Linux下磁盘命名和分区

在为主机添加硬盘之前&#xff0c;首先需要了解Linux系统下对硬盘和分区的命令方法 一、磁盘命名 Linux下对SCSI和SATA设备是以sd命名的&#xff0c;第一个SCSI设备是sda,第二个是sdb....以此类推。一般主板上有两个SCSI接口&#xff0c;因此一共可以安装4个SCSI设备。主SCSI上…

tensorflow如何取平均_【他山之石】利用Tensorflow构建CNN图像多分类模型及图像参数、数据维度变化情况实例分析...

“他山之石&#xff0c;可以攻玉”&#xff0c;站在巨人的肩膀才能看得更高&#xff0c;走得更远。在科研的道路上&#xff0c;更需借助东风才能更快前行。为此&#xff0c;我们特别搜集整理了一些实用的代码链接&#xff0c;数据集&#xff0c;软件&#xff0c;编程技巧等&…

计算机涉及数学知识点,初二数学知识点归纳

无论你是带着欣喜还是遗憾进入了初二&#xff0c;一切都在这一刻重新开始。初二的数学学习开始啦!大家有没有什么好的学习方法来分享呢?知识点要学得明白&#xff0c;记得牢固。初二数学上册的知识点你知道吗?不知道的赶紧和沪江小编一起往下看吧。1 全等三角形的对应边、对应…

华为AR地图正式发布:每平方公里40亿三维信息点,1:1还原世界

来源&#xff1a;M数码4月8日晚&#xff0c;华为P40系列发布会上&#xff0c;余承东介绍了全新的华为AR地图&#xff0c;官方称实现了每平方公里40亿三维信息点&#xff0c;1:1还原真实世界。官方称华为AR地图是厘米级3D地图&#xff0c;每平方公里40亿三维信息点&#xff0c;1…

4_用户管理

用户怎么管理&#xff1f; -- 创建用户 - create user ‘用户名’’ ip地址’ indentified by ‘密码’; -- 删除用户 - drop user ‘用户名’’ ip地址’; -- 修改用户 -rename user ‘用户名’’ ip地址’ to ‘新用户’’ ip地址’; -- 修改密码 - set password for ‘用户…

船员能力评估计算机软件系统,船舶动力电力训练系统操作水平综合评估算法研究...

摘要&#xff1a;近年来随着航运事业的不断发展,航海专业技术人员的需求量持续增大,培养大量高质量的船员对于保证船舶航行的安全性和经济性具有重要意义。传统的实船操作训练评估方法受到资源有限、安全性较低以及人力评估的主观性等问题的影响,难以满足船舶对于大量优质船员的…

《全球创新观察》研究报告3月刊下发布

来源&#xff1a; 资本实验室大疫之下&#xff0c;全球产业格局有哪些变动&#xff1f;5G竞赛&#xff0c;又为哪些行业带来新风口&#xff1f;一起来看本期《全球创新观察》▼关于《全球创新观察》本报告是由国创会创新院&#xff08;中国科学院国家创新与发展战略研究会创新驱…

python123字典统计排序1省份_python 列表、字典多排序问题

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 by-sa 版权协议&#xff0c;转载请附上原文出处链接和本声明。本文链接&#xff1a;https://blog.csdn.net/justin051/article/details/84289189Python使用sorted函数来排序&#xff1a;l [2,1,3,5,7,3]print …

rem和css3的相关知识点

☆☆☆rem和css3的相关知识点☆☆☆ 一、 Web front-end development engineer rem是根据页面的根元素的font-size的一个相对的单位&#xff0c;即 html{ font-size:16px;//自定义根部元素的字体大小 } 比如我们在一个div中&#xff0c;如此写 div{ width:2rem; }那么我们的wid…

青岛农商银行计算机防病毒应用培训,青岛农商银行胶州支行多元化培训提升安防管理水平...

今年以来&#xff0c;青岛农商银行胶州支行面对当前严峻的社会治安形势&#xff0c;不等不靠&#xff0c;积极采取多元化、立体式培训模式&#xff0c;取得较好效果&#xff0c;有效提升了安防管理水平。请进来&#xff0c;抓好安保理念教育近期&#xff0c;该支行积极协调胶州…

简述div标签和span标签的不同_div与span区别及用法

DIV与SPAN区别及div与san用法篇接下来了解在divcss开发的时候在html网页制作&#xff0c;特别是标签运用中div和span的区别及用法。新手在使用web标准(div css)开发网页的时候&#xff0c;遇到第一个问题是div与span有什么区别&#xff0c;什么时候用div&#xff0c;什么时候用…

学自动化必知:20个传感器原理及应用动图

来源&#xff1a;工业机器人1.探伤仪2.氧浓度传感器3.电容传感器4.差压式液位计&#xff08;负迁移&#xff09;5.差压式液位计&#xff08;无迁移&#xff09;6.差压式液位计&#xff08;正迁移&#xff09;7.料位计&#xff08;称重式&#xff09;8.电位式传感器9.电子吊称10…

软件测试知识产权保护,一种软件测试方法及软件测试系统专利_专利申请于2017-09-07_专利查询 - 天眼查...

1. 一种软件测试方法&#xff0c;其特征在于&#xff0c;包括&#xff1a; 自动化测试工具执行数据生成自动化用例得到交易场景数据;其中&#xff0c;所述数据生成自 动化用例由自动化工具根据交易场景的数据编写得到&#xff1b; 使用预设数量的自动化用例和所述交易场景数据执…

pat1111-1120

1111 比较麻烦的最短路 #include<cmath> #include<map> #include<iostream> #include<cstring> #include<cstdio> #include<set> #include<vector> #include<queue> #include<stack> #include<algorithm> using n…