【习题 6-10 UVA - 246】10-20-30
【链接】 我是链接,点我呀:)
【题意】
在这里输入题意
【题解】
发牌的那个牌堆用一个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的更多相关文章
- “取出数据表中第10条到第20条记录”的sql语句+selecttop用法
1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...
- “取出数据表中第10条到第20条记录”的sql语句+select top 使用方法
1.首先.select top使用方法: 參考问题 select top n * from和select * from的差别 select * from table -- 取全部数据.返回无序集合 ...
- c# Equal函数 and 运算符'==' (原发布 csdn 2017年10月15日 20:39:26)
1.==.!=.<.>.<= 和>= 运算符为比较运算符(comparison operator).C#语言规范5.0中文版中比较运算符的描述如下: 2.通用类型系统 3.值类 ...
- 《java入门第一季》之HashSet小案例:获取10个1至20的随机数,要求随机数不能重复
这是基于HashSet集合的唯一性. /* * 编写一个程序,获取10个1至20的随机数,要求随机数不能重复. * * 分析: * A:创建随机数对象 * B:创建一个HashSet集合 ...
- 题目:企业发放的奖金根据利润提成。 利润(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万到 ...
- 代码实现:企业发放的奖金根据利润提成。利润(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%提成 ...
- UVA 246 - 10-20-30 (模拟+STL)
UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20 ...
- 给定整数a1、a2、a3、...、an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8)。
给定整数a1.a2.a3.....an,判断是否可以从中选出若干个数,使得它们的和等于k(k任意给定,且满足-10^8 <= k <= 10^8). 分析:此题相对于本节"寻找满 ...
- 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 数据 ...
- 我的新计划 《2Dof Racing Simulator》2014/3/9 20:30:00
最近好久都没来网站上了,也没心思和时间去弄VellLock和升级V&View了.一直在蕴量这做一件大玩意. 最近一直都很忙,忙着做数电课设,还有各种实验,可是我的心思不在这些东西上,当然除了数 ...
随机推荐
- FreeBSD是UNIX系统的重要分支,其命令与Linux大部分通用,少部分是其特有。
FreeBSD是UNIX系统的重要分支,其命令与Linux大部分通用,少部分是其特有. 1: man 在线查询 man ls2: ls 查看目录与档案 ls -la3: ln 建立链接文件 ln -f ...
- C/C++(C++拷贝构造器,赋值运算符重载)
拷贝构造器 由己存在的对象,创建新对象.也就是说新对象,不由构造器来构造,而是由拷贝构造器来完成.拷贝构造器的格式是固定的. class 类名 { 类名(const 类名 & another) ...
- R学习:《R语言数据分析与挖掘实战》PDF代码
分三个部分:基础篇.实战篇.提高篇.基础篇介绍了数据挖掘的基本原理,实战篇介绍了一个个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中通过案例实践获得数据挖掘项目经验,同时快速领悟看似难懂的数据 ...
- stat---显示文件的状态信息
stat命令用于显示文件的状态信息.stat命令的输出信息比ls命令的输出信息要更详细. 语法 stat(选项)(参数) 选项 -L:支持符号连接: -f:显示文件系统状态而非文件状态: -t:以简洁 ...
- [Python] Manage Dependencies with Python Virtual Environments
Virtual Environments ensure that dependencies from one Python application don’t overwrite the depend ...
- OJ刷题---猜算式
题目要求: 输入代码: #include<iostream> using namespace std; void Calc(); int main() { Calc(); return 0 ...
- 目标决定人生——没有目标就失去一切 (没有目标的奋斗是浪费青春,比如交了钱却不去参加考试、让时间白白溜走。根据目标与定位来选择最合适的企业。人生要算总账)good
没有目标就失去一切 刚毕业那会儿,幼稚得可笑,老跟同学打电话,明面上聊聊近况,暗地里比较.你要比我工资多一百块,心里特不平衡,凭什么呀,在学校那会儿公认的我比你强.你要带个头衔,而我啥也不是,普通员工 ...
- amaze ui中的icon button
amaze ui中的icon button 说明几点: 1.链接效果 连接效果的本质一般都是a标签,好像很多button的链接效果都是用的a标签,submit表单提交或者button的type为sub ...
- 5.brackets 快捷键 有大用
转自:https://blog.csdn.net/u012011360/article/details/41209223 ctrl+b 当选中一个文本时,会出现相同的文本,被高亮显示 按ctrl+b ...
- uva 11248 最小割
Dinic 1 #include<iostream> #include<string> #include<algorithm> #include<cstdli ...