在一次聚会上,Bob打算和Alice一起玩Blackjack游戏,但Alice平时很少玩扑克类游戏,Bob觉得跟Alice解释清楚Blackjack的规则有点困难,于是Bob决定和Alice玩一次简化版的Blackjack。

点数计算

游戏过程使用若干副去掉大小王的扑克牌,A代表1点,2-10即为牌面上的点数,J、Q、K均代表10点。

发牌

游戏包含两位玩家,一位玩家做庄家负责发牌, 另一位玩家为闲家。 发牌时依次派发牌堆最上方的牌。 庄家会向闲家派发一张暗牌(即不被揭开的牌), 然后向自己派发一张暗牌, 接着庄家会向闲家派发一张明牌(即被揭开的牌), 然后又向自己派发一张明牌。 之后庄家会询问闲家是否继续要牌,并以明牌的形式派发。 闲家在看完自己的暗牌和明牌之后决定是否继续要牌。

爆煲

如果闲家要牌后手上拥有的牌的总点数超过21点(俗称爆煲),便要揭开手上所有的牌,算作庄家赢。 如果闲家手上拥有的牌的总点数不超过21点, 该闲家可决定是否继续要牌。 当闲家决定不再要牌后,庄家就必须揭开自己手上所有的牌,然后决定是否继续要牌,直到爆煲或者决定不再要牌为止。 如果庄家爆煲,算作闲家赢。

点数决胜

如果庄家最终没有爆煲,闲家便要揭开手上所有的牌,比较点数决定谁胜谁负。 如果闲家的点数比庄家大,算作闲家赢。 如果闲家的点数和庄家相等或者比庄家小,则算作庄家赢。

现在Bob是庄家,Alice是闲家,在Bob开始发牌的时候Alice借助好朋友Cara的超能力已经知道了牌堆最上方的若干张牌,Alice想知道她是否一定可以赢下这一局呢?

Input

输入包含不超过100组数据。 每组数据的第一行为一个整数n(5 ≤ n ≤ 42),即Alice已经知道的牌的数量。 接下来一行包含n个1-13之间的整数,依次描述了牌堆从上至下最上方的n张牌的牌面。 这里我们用整数1代表扑克牌的A,整数11、12、13分别代表扑克牌的J、Q、K。 数据保证这n张牌的总点数不少于42。

Output

对于每组数据,如果Alice一定可以赢下这一局,输出“Yes”,否则输出“No”。

Sample Input

9
12 5 13 5 2 7 3 1 5
9
5 13 5 5 5 5 1 3 4
5
11 11 11 11 2
8
8 11 9 6 2 3 2 4

Sample Output

Yes
Yes
No
No

Hint

对于第一个样例,Alice手中的暗牌和明牌分别为Q、K,Bob手中的暗牌和明牌分别为5、5。Alice选择不要牌即可,总点数为20,无论Bob接下来要几张牌,Alice都可以赢。

对于第二个样例,Alice手中的暗牌和明牌分别为5、5,Bob手中的暗牌和明牌分别为K、5。Alice可以选择要三张牌,总点数为21,无论Bob接下来要几张牌,Alice都可以赢。Alice也可以选择只要两张牌,总点数为20,同样可以确保赢下这一局。

对于第三个样例,Alice手中的暗牌和明牌分别为J、J,Bob手中的暗牌和明牌分别为J、J。Alice只能选择不要牌,否则会爆煲,总点数为20。此时Bob如果也不要牌,总点数为20,庄家赢。因此Alice不能保证一定可以赢Bob。

对于第四个样例,Alice手中的暗牌和明牌分别为8、9,Bob手中的暗牌和明牌分别为J、6。无论Alice要几张牌,Bob都有可能赢Alice。

题目很长,粗看一眼没有任何做的欲望(比赛时候就是这么想的)。

坑点: 需要枚举每张牌,要或者不要。具体看代码吧!

特殊数据: 10 8 6 2 3 10 13

输出:Yes

// Asimple
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <vector>
#include <string>
#include <cstring>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#define INF 0x3f3f3f3f
#define debug(a) cout<<#a<<" = "<<a<<endl
#define test() cout<<"============"<<endl
#define CLS(a,v) memset(a, v, sizeof(a))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int maxn = ;
const ll mod = ;
int n, m, T, len, cnt, num, ans, Max, k;
int a[maxn]; bool check(int x, int z, int i) {
int t = i;
while( x > z ) {
z += a[t];
t ++;
}
if( z> ) return true;
return false;
} void input(){
while( cin >> n ) {
CLS(a, );
for(int i=; i<=n; i++) {
cin >> a[i];
if( a[i]> ) a[i] = ;
}
int x = a[] + a[];
int z = a[] + a[];
bool flag = false, f = false;
for(int i=; i<=n; i++) {
if( check(x, z, i) ) {
flag = true;
break;
} else {
if( !f ) {
if( x+a[i]> ) {
f = true;
i --;
} else x += a[i];
} else {
if( z+a[i]> ) {
break;
} else z += a[i];
//debug(z);
}
}
}
//debug(x);
if( flag || x>z ) cout << "Yes" << endl;
else cout << "No" << endl;
}
} int main() {
input();
return ;
}

2017第十三届湖南省省赛B - Simplified Blackjack CSU - 1998的更多相关文章

  1. 2017第十三届湖南省省赛A - Seating Arrangement CSU - 1997

    Mr. Teacher老师班上一共有n个同学,编号为1到n. 在上课的时候Mr. Teacher要求同学们从左至右按1, 2, …, n的顺序坐成一排,这样每个同学的位置是固定的,谁没来上课就一目了然 ...

  2. 湖南省第十三届大学生计算机程序设计竞赛 Football Training Camp 贪心

    2007: Football Training Camp[原创-转载请说明] Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 1 ...

  3. i春秋第二届春秋欢乐赛RSA256writeup

    i春秋第二届春秋欢乐赛writeup 下载之后进行解压 发现四个文件 0x01看到题目是RSA的  又看到public.key 所以直接用kali linux的openssl 0x02可以看到e就是E ...

  4. 第九届蓝桥杯国赛+第二天的第11届acm省赛的总结

    第九届蓝桥杯国赛+第二天的第11届acm省赛的总结 25号坐的去北京的火车,10个小时的火车,然后挤了快两个小时的地铁,最终达到了中国矿业大学旁边的订的房间.12个小时很难受,晕车症状有点严重,吃了快 ...

  5. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 M. Frequent Subsets Problem【状态压缩】

    2017 ACM-ICPC 亚洲区(南宁赛区)网络赛  M. Frequent Subsets Problem 题意:给定N和α还有M个U={1,2,3,...N}的子集,求子集X个数,X满足:X是U ...

  6. ACM总结——2017湖南省省赛总结

    2017省赛已经结束了2天了,今天终于有时间,也有勇气来写下这一篇总结.的确,这是我第一次正式的ACM线下赛,我本以为再不济,也可以拿个三等奖,没想到,实力打铁.确实对我打击比较大,以前的确是知道自己 ...

  7. 记第十四届省赛参赛体会&第十三届

    emmm....时间还是很久远了 还是流水账 这次比赛我还是挺开心的 因为感觉我们余神就是一把宝剑,然后我是她的Buff 前面四道题就挺顺利都1A过了,十年余神就是强无敌呀 最后两分钟过了第五题,银牌 ...

  8. 2016第十三届浙江省赛 D - The Lucky Week

    D - The Lucky Week Edward, the headmaster of the Marjar University, is very busy every day and alway ...

  9. 第十三届北航程序设计竞赛决赛网络同步赛 B题 校赛签到(建树 + 打标记)

    题目链接  校赛签到 对每个操作之间建立关系. 比较正常的是前$3$种操作,若第$i$个操作属于前$3$种,那么就从操作$i-1$向$i$连一条有向边. 比较特殊的是第$4$种操作,若第$i$个操作属 ...

随机推荐

  1. element

    <el-table-column label="地址" prop="address"> <template slot-scope=" ...

  2. root_objectlist, root_object, container_objectlist, container_object 之间的关系。

  3. mybatis级联

    mybatis中有时候表不能都分成单表进行查询,表之间会有联系,这时候需要将表进行级联 下面讲一下如何将mybatis中 的表进行级联.映射表关系如下 1:创建数据表 DROP TABLE IF EX ...

  4. Python第三弹--------文件和异常

    文件读取: pi_digits.txt 3.1415926535 8979323846    2643383279 file_reader.py with open('pi_digits.txt') ...

  5. jenkins 的一个BUG

    最近更新了一批jenkin插件,更新完问题来了全局设置无法保存了... 报错如下 Stack trace net.sf.json.JSONException: null object at net.s ...

  6. AFNetworking 源码解析

    3.0 之后,就取消了NSOperation的控制. 因为根据Apple Developer Document的文档 https://developer.apple.com/documentation ...

  7. CentOS6.5安装kafka-2.10-0.8.2(单机)

    1.下载 地址:https://kafka.apache.org/downloads 本文中下载版本:kafka_2.10-0.8.2.2.tgz 2.安装 安装目录:/usr/local [root ...

  8. 20165321 2017-2018-2《Java程序设计》课程总结

    每周作业链接汇总 预备作业1:20165321 我期望的师生关系 预备作业2:20165321 学习基础与C语言学习心得 预备作业3:20165321预备作业3:Linux安装及命令入门 第一周作业: ...

  9. 看开源代码利器—用Graphviz + CodeViz生成C/C++函数调用图(call graph) - 转

    From http://www.linuxidc.com/Linux/2015-01/111501.htm 实际按照上文操作,主要是安装gcc-4.6.2出现一些问题,原先在cygwin下安装,结果提 ...

  10. python的赋值,深拷贝和浅拷贝的区别

    原文地址https://www.cnblogs.com/xueli/p/4952063.html 赋值:a = [1,2,3,["a","b"]]  b=a,那 ...