codeforces 388C Fox and Card Game
2014-02-22 13:59
218 查看
刚刚看到这个题感觉是博弈题;
不过有感觉不像,应该是个贪心;
于是就想贪心策略;
举了一个例子:
3
3 1 2 3
4 3 4 1 2
5 4 1 2 5 8
如果他们两个每次都拿对自己最有利的那个的话,C的得分是14分;
但是C作为第一个选手,他有更好的策略,只拿前一半,后一半给J,中间的再分;这样的话C的得分就能达到15分;
同样J也有这样的策略,他也能保证自己最少能拿到后一半的分(跟风式的拿);
这样的话,贪心策略就明朗了!
View Code
不过有感觉不像,应该是个贪心;
于是就想贪心策略;
举了一个例子:
3
3 1 2 3
4 3 4 1 2
5 4 1 2 5 8
如果他们两个每次都拿对自己最有利的那个的话,C的得分是14分;
但是C作为第一个选手,他有更好的策略,只拿前一半,后一半给J,中间的再分;这样的话C的得分就能达到15分;
同样J也有这样的策略,他也能保证自己最少能拿到后一半的分(跟风式的拿);
这样的话,贪心策略就明朗了!
#include<cstdio> #include<cstring> #include<algorithm> #define maxn 105 using namespace std; int s[maxn]; int c,j; int main() { int n,num; int t,cnt=0; scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&t); for(int k=0; k<t/2; k++) { scanf("%d",&num); c+=num; } if(t&1) { scanf("%d",&s[cnt]); cnt++; } for(int k=0; k<t/2; k++) { scanf("%d",&num); j+=num; } } sort(s,s+cnt); bool flag=1; for(int i=cnt-1; i>=0; i--) { if(flag) c+=s[i]; else j+=s[i]; flag=!flag; } printf("%d %d",c,j); return 0; }
View Code
相关文章推荐
- 推荐系统知识点汇总
- Android 中的SparseArray——来源于源代码(翻译)
- crawler 爬虫介绍
- JSP:访客计数实现的几种方式利与弊
- real210移植记录-u-boot2013.10引导linux3.10.30进入控制台
- text-decoration 入门Demo
- 关于成长的九封信
- 通过给密码加salt增强安全性
- SQL Server 2008可视化设置外键
- POI操作Excel
- C++实现的位图法去除重复出现的元素
- Android 动态加载布局
- 一种低效但逻辑简单清晰的Delaunay三角网生成算法
- PHP的ISAPI和FastCGI比较
- 高凌风遗产风波 金爸改口认助理录音说
- 高凌风遗产风波 金爸改口认助理录音说
- OC成员变量的默认属性
- 大端序(big-edian)和 小端序(little-endian)
- 提取百度贴吧无水印图片
- Android 实现全屏 无标题栏