【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

发牌的那个牌堆用一个deque,7个牌堆用vector来模拟。
然后按照题意模拟就好。
不难。

【代码】

/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
8.whatch out the detail input require
*/
#include <bits/stdc++.h>
using namespace std; const int N = 8; deque <int> dl;
map <vector <int>, int > dic;
vector <int> pile[N];
bool bo[N];
int cur; int judge() {
vector <int> v;
v.clear();
for (auto i = dl.begin(); i != dl.end(); i++) {
v.push_back((*i));
} for (int i = 1; i <= 7; i++) {
v.push_back(0);
for (int x : pile[i]) {
v.push_back(x);
}
} if (dic.find(v) != dic.end()) return 1;
dic[v] = 1;
return 0;
} bool can() {
int len = pile[cur].size();
if (len<3) return false; int ju = pile[cur][0] + pile[cur][1] + pile[cur][len-1]; if (ju == 10 || ju == 20 || ju == 30) {
dl.push_back(pile[cur][0]);
dl.push_back(pile[cur][1]);
dl.push_back(pile[cur][len-1]); pile[cur].erase(pile[cur].begin());
pile[cur].erase(pile[cur].begin());
pile[cur].erase(pile[cur].end() - 1);
return true;
} ju = pile[cur][0] + pile[cur].back() + pile[cur][len - 2];
if (ju == 10 || ju == 20 || ju == 30) {
dl.push_back(pile[cur][0]);
dl.push_back(pile[cur][len - 2]);
dl.push_back(pile[cur][len - 1]); pile[cur].erase(pile[cur].begin());
pile[cur].erase(pile[cur].end() - 1);
pile[cur].erase(pile[cur].end() - 1);
return true;
} ju = pile[cur][len - 3] + pile[cur][len - 2] + pile[cur].back();
if (ju == 10 || ju == 20 || ju == 30) {
dl.push_back(pile[cur][len - 3]);
dl.push_back(pile[cur][len - 2]);
dl.push_back(pile[cur][len - 1]); pile[cur].erase(pile[cur].end() - 1);
pile[cur].erase(pile[cur].end() - 1);
pile[cur].erase(pile[cur].end() - 1);
return true;
} return false;
} int main() {
#ifdef LOCAL_DEFINE
freopen("F:\\c++source\\rush_in.txt", "r", stdin);
freopen("F:\\c++source\\rush_out.txt", "w", stdout);
#endif
ios::sync_with_stdio(0), cin.tie(0);
int x;
while (cin >> x && x) {
for (int i = 1; i <= 7; i++) bo[i] = true;
for (int i = 1; i <= 7; i++) pile[i].clear();
dic.clear();
while (!dl.empty()) dl.pop_back(); dl.push_back(x);
for (int i = 1; i <= 51; i++) {
cin >> x;
dl.push_back(x);
} judge();
int tot = 0; int ans;
cur = 1;
while (1) {
if (dl.empty()) { //lose
ans = -1;
break;
}
int cntalive = 0;
for (int i = 1; i <= 7; i++) cntalive += bo[i];
if (cntalive == 0) {//win
ans = 1;
break;
} //deal one card
if (cur > 7) cur = 1;
while (!bo[cur]) {
cur++;
if (cur > 7) cur = 1;
} pile[cur].push_back(dl.front());
dl.pop_front(); do {
} while (can()); if (pile[cur].empty()) bo[cur] = 0; tot++; int temp = judge();
if (temp == 1) {
ans = 0;//loop;
break;
}
cur++;
} if (ans == 0) {
cout << "Draw: ";
}
else if (ans == 1) {
cout << "Win : ";
}
else if (ans == -1) {
cout << "Loss: ";
}
cout << tot << endl;
}
return 0;
}

【习题 6-10 UVA - 246】10-20-30的更多相关文章

  1. “取出数据表中第10条到第20条记录”的sql语句+selecttop用法

    1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...

  2. “取出数据表中第10条到第20条记录”的sql语句+select top 使用方法

    1.首先.select top使用方法: 參考问题  select top n * from和select * from的差别 select * from table --  取全部数据.返回无序集合 ...

  3. c# Equal函数 and 运算符'==' (原发布 csdn 2017年10月15日 20:39:26)

    1.==.!=.<.>.<= 和>= 运算符为比较运算符(comparison operator).C#语言规范5.0中文版中比较运算符的描述如下: 2.通用类型系统 3.值类 ...

  4. 《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复

    这是基于HashSet集合的唯一性. /*  * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复.  *   * 分析:  * A:创建随机数对象  * B:创建一个HashSet集合 ...

  5. 题目:企业发放的奖金根据利润提成。 利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%; 40万到60万之间时高于40万元的部分,可提成 3%; 60万到100万之间时,高于60万元的部分,可提成1.5%; 高于100万元时,超过

    题目:企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%: 20万到 ...

  6. 代码实现:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%; 60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元

    import java.util.Scanner; /* 企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成 ...

  7. UVA 246 - 10-20-30 (模拟+STL)

    UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20 ...

  8. 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。

    给定整数a1.a2.a3.....an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8). 分析:此题相对于本节"寻找满 ...

  9. gitlab 迁移、升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5

    gitlab 迁移.升级打怪之路:8.8.5--> 8.10.8 --> 8.17.8 --> 9.5.9 --> 10.1.4 --> 10.2.5 gitlab 数据 ...

  10. 我的新计划 《2Dof Racing Simulator》2014/3/9 20:30:00

    最近好久都没来网站上了,也没心思和时间去弄VellLock和升级V&View了.一直在蕴量这做一件大玩意. 最近一直都很忙,忙着做数电课设,还有各种实验,可是我的心思不在这些东西上,当然除了数 ...

随机推荐

  1. 如何查看 Linux 中所有正在运行的服务

    有许多方法和工具可以查看 Linux 中所有正在运行的服务.大多数管理员会在 System V(SysV)初始化系统中使用 service service-name status 或 /etc/ini ...

  2. angular-cli6使用ng serve --o 控制台报错Invalid Host Header

    angular-cli6使用ng serve --o 运行创建的项目,能正常访问,但是控制台一直在报错,点击报错能看到是因为webpack的webpack-dev-server里报的错, 看到网上介绍 ...

  3. PMP杂谈--制约因素与如果条件

     制约因素和如果条件都是项目范围说明书的内容.它们是项目范围基准的一部分,是定义活动.估算活动持续时间.制定进度计划.估算成本.制定预算.识别风险和规划採购等多个过程的输入. 差别:制约因素是确定 ...

  4. C++ Primer高速入门之六:数组和指针

    更新:勘误,delete [] 猪 我们知道,C语言以及早期的面向结构的语言差点儿都支持数组定义.比方整形数组int 女神[2].表示有俩数: 女神[0], 女神[1].她们都是整数. C++ 语言为 ...

  5. qgis显示引擎研究(一)

    作者:朱金灿 来源:http://blog.csdn.net/clever101 Qgis是一个著名的开源地理信息系统软件.今天研究了一下它的显示那一块,算是有一点眉目了. 在Windows环境下所有 ...

  6. ajax处理响应(三)

        一旦脚本调用了send方法,浏览器就会在后台发送请求到浏览器.因为请求是在后台处理的,所以Ajax依靠事件来通知你这个请求的进度的进展情况,在上个随笔的里,使用handleResponse函数 ...

  7. Linux 交换分区swap

    Linux 交换分区swap 一.创建和启用swap交换区 如果你的服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用swap交换区作为虚拟内存 ...

  8. 【Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined) A】 Perfect Squares

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] N*1000暴力就好 [代码] #include <bits/stdc++.h> using namespace std ...

  9. 【hdu 4696】Professor Tian

    [Link]:http://acm.hdu.edu.cn/showproblem.php?pid=4649 [Description] 给你一个由位运算"与""或&quo ...

  10. CODEVS——T2744 养鱼喂妹纸

    http://codevs.cn/problem/2744/ 时间限制: 1 s  空间限制: 64000 KB 题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descr ...