题意:有A,B两组牌各n张,每张牌有个点数,每次A,B各出一张牌,谁的点数大谁得到3块巧克力,另一个人得到1块巧克力,若点数相同,两人各得到2块巧克力。求B能获得的最多和最少巧克力数。

刚看到这题的时候我就觉得这跟“田忌赛马”特别像,于是我们可以就着这个思路想下去。首先我们知道B得到最少的巧克力,也就是A得到最多巧克力时,B得到的巧克力数,因此问题可以转化为求一个人能获得的最多巧克力数。先将点数从小到大排序,要获得更多的巧克力,我们就要尽可能多地赢,对于一张牌,它的点数越大,赢的可能性也越大,因此我们要留着大的来赢,利用田忌赛马的思想,如果我们的大马赢不了别人的大马,那就赢他的中马,我们的小马赢不了别人的小马就和他的大马比试,因为本来就赢不了,不如把别人的大马给浪费了。

于是就有了以下的思路:
(1)如果B的大点数牌能赢A的大点数牌,则进行比较,否则执行(2);
(2)如果B的小点数牌能赢A的小点数牌,则进行比较,否则执行(3);
(3)如果B的小点数牌能和A的大点数牌,则进行比较,否则执行(4);
(4)将B的小点数牌和A的大点数牌进行比较;

(1)、(2)的正确性很容易看出来,但(3)、(4)还需要证明一下,对于不能战胜对方任何一张牌的牌,我们应当将它与对方最大的牌比较,这样显然更优,假如我们的小牌能与对方的大牌相等则用小牌与大牌比较比用大牌与大牌比较更优,因为大牌是要拿来赢的。

可能讲的不是很清楚,配合代码就好懂了。

#include<stdio.h>
#include<algorithm>
#include<iostream>
#define M 1005
using namespace std;
template <class T>
inline void Rd(T &res){char c;res=0;int k=1;while(c=getchar(),c<48&&c!='-');if(c=='-'){k=-1;c='0';}do{res=(res<<3)+(res<<1)+(c^48);}while(c=getchar(),c>=48);res*=k;
}
int n;
int A[M],B[M];
int solve(int a[],int b[]){int ans=0;int l1=1,r1=n,l2=1,r2=n;while(l1<=r1&&l2<=r2){if(b[r2]>a[r1]){r2--;r1--;ans+=3;}//(1)else if(b[l2]>a[l1]){l1++;l2++;ans+=3;}//(2)else if(b[l2]==a[r1]){l2++;r1--;ans+=2;}//(3)else{r1--;l2++;ans++;}//(4)}return ans;
}
int main(){while(1){Rd(n);if(!n)break;for(int i=1;i<=n;i++)Rd(A[i]);for(int i=1;i<=n;i++)Rd(B[i]);sort(A+1,A+n+1);sort(B+1,B+n+1);printf("%d %d\n",solve(A,B),4*n-solve(B,A));}return 0;
}

OpenJudge 2986 拼点游戏相关推荐

  1. C#的winform拼数字游戏

    C#的winform拼数字游戏 声明:阅读了别人的代码学习修改而来,增加了美观度和游戏乐趣.(作者出处忘了不好意思) 程序截图 关键代码 using System; using System.Coll ...

  2. 拼字游戏 html5,拼字游戏攻略

    拼字游戏是一款趣味性十足的游戏方式会让大家快乐的游戏.游戏十分益智.这款游戏风格独特,画面精美好看,音效逼真动听,操作简单易上手.相信你一定会喜欢的,如果你喜欢的话就加入我们吧,以下是关于这个游戏的一 ...

  3. 经典拼数字游戏NumPuzzle C# By Red_angelX

    NumPuzzle 设计说明书 背景 开发环境:Microsoft Visual Studio .Net 2003 开发语言:C# 开发者:Red_angelX 1 总体设计 设计思路:根据玩家设置的 ...

  4. 拼点游戏(类似于田忌赛马)

    描述 C和S两位同学一起玩拼点游戏.有一堆白色卡牌和一堆蓝色卡牌,每张卡牌上写了一个整数点数.C随机抽取n张白色卡牌,S随机抽取n张蓝色卡牌,他们进行n回合拼点,每次两人各出一张卡牌,点数大者获得三颗 ...

  5. Bailian4005 拼点游戏【贪心】

    4005:拼点游戏 总时间限制: 1000ms 内存限制: 65536kB 描述 C和S两位同学一起玩拼点游戏.有一堆白色卡牌和一堆蓝色卡牌,每张卡牌上写了一个整数点数.C随机抽取n张白色卡牌,S随机 ...

  6. 使用A* (AStar)算法自动求解拼数字游戏

    原文链接: 使用A* (AStar)算法自动求解拼数字游戏 上一篇: js Heap 的简单使用 下一篇: vue router 技巧 效果 主要思想 设置两个数组 close 保存已经走过的状态 o ...

  7. s2020gc53拼数游戏

    3. 拼数游戏 (c.cpp) [题目描述] 幼儿园的N名小朋友,每位小朋友手中都有一个非0数字,他们在玩自由组合的拼数游戏,可以拼数出很多很多种情况.为了考一考大家,现在老师提出要拼出一个最大的K位 ...

  8. FB社交游戏2011盘点:街机游戏、拼字游戏、博彩游戏排行前三

    2011年,Facebook上的游戏类型区域多样化,诸如寻宝游戏.赛车游戏.和即时多人战略游戏等游戏类型纷纷登陆Facebook.那么,今年推出的游戏中哪些类型的表现更好呢?通过AppData的数据, ...

  9. 拼多多-游戏化设计-彻底被撩到

    每到春末夏初,总会发誓减肥,尽管知道为时已晚,但还是不甘心,于是开始置办健身装备,首先是运动服. 在淘宝上搜了半天,关键字为"运动服 速干 女",较为便宜的.还看的过去的一般在12 ...

最新文章

  1. C语言的链表—完整代码
  2. R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(自定义色彩、形状)实战
  3. 若兰-nvjdc 1.3新版本安装及老版本升级教程
  4. [转]RedHat Enterprise Linux 7关闭防火墙方法
  5. Wifi模块—源码分析Wifi热点扫描(Android P)
  6. (一)Linux基础(1)
  7. 前端学PHP之面向对象系列第六篇——简单图形面积计算器实现
  8. 【HDU - 3974】 Assign the task (dfs序 + 线段树维护 区间更新+ 单点查询)
  9. 开发必备知识点--django项目启动时,url加载之前,执行某个.py文件
  10. (37)System Verilog类外方法示例
  11. linux中用户 机器名,Python 在linux下获得当前工作目录,主机名,用户名,操作系统平台等信息...
  12. [轉]PHP命名空间规则解析及高级功能
  13. 微信小程序云开发教程-JavaScript入门(4)-捕捉异常
  14. IOS-Run loop学习总结
  15. 彻底解决git中.gitignore文件失效原因及解决办法
  16. 谁能告诉我war包的作用及使用方法。。。。。。
  17. 发布javaweb网站教程(简单易懂)
  18. Vim,人类史上最好用的文本编辑器!从此以后你就是一个善良的极客!
  19. 不是吧,还有人不会做国庆头像小程序(可开通流量主,赚零花钱)
  20. Credit card dataset: SVM Classification --- PCA效果/不平衡数据

热门文章

  1. 遥控车钥匙算法之KeeLoq
  2. 计算机与地球科学,地球科学与遥感
  3. android安卓-开源框架汇总
  4. python,分析网页,使用 bs4和requests 爬取网页指定图片
  5. vue中echarts纵轴添加点击事件
  6. 华为云ModelArts的使用教程(超详细)
  7. 甲骨文oracle的ocp和ocm认证难不难考?
  8. 学习可爱彩色线条PS极简马克笔简笔画:鞋子篇
  9. 计算机网络安全工作室介绍,计算机网络技术专业 “网络工作室”做法简介
  10. win7下用VS2008写视频聊天程序,求VFW教程?qzvgK