欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【USACO Feb 2014】Cow Decathlon

发布时间:2024/7/19 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【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

总结

以上是生活随笔为你收集整理的【USACO Feb 2014】Cow Decathlon的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。