ZJNU 2353 - UNO
大模拟,但是题目好像有些地方表述不清
根据UNO在初中曾被别人虐了很久很久的经历
猜测出了原本的题意
本题中的+2虽然有颜色,但是也可以当作原UNO游戏中的+4黑牌
即在某人出了+2后,可以出不同颜色的+2更改场上的颜色
在+2环节,如果一个人除了+2,下一个人如果有+2,就可以把+2出出去,这一回合就不需要再出东西了
直到最后一个人没有任何颜色的+2牌了,那么这个人就要摸累积起来的数量的牌
#include<bits/stdc++.h>
using namespace std;
queue<int> q;
int have[][],haveNum[];
int gcid(char in){
switch(in){
case 'B':return ;
case 'G':return ;
case 'R':return ;
case 'Y':return ;
}
}
void getcard(int who,int num){
int i;
for(i=;i<num;i++){
have[who][q.front()]++;
q.pop();
}
haveNum[who]+=num;
}
int main(){
int i,j,turn=,nDigit,nColor,pluscard=;
bool could=false,sameColor=false;
char s[];
memset(have,,sizeof have);
memset(haveNum,,sizeof haveNum);
for(i=;i<;i++){
cin>>s;
if(s[]=='Y')
q.push(gcid(s[]));
else
q.push(gcid(s[])*+s[]-'');
}
for(i=;i<;i++)
getcard(i,);
for(i=;!could&&i<;i++)
for(j=;j<;j++)
if(have[][j*+i]){
have[][j*+i]--;
haveNum[]--;
nColor=j;
nDigit=i;
q.push(j*+i);
could=true;
break;
}
for(i=;!could&&i<;i++)
if(have[][i]){
have[][i]--;
haveNum[]--;
nColor=j;
q.push(i);
pluscard+=;
sameColor=true;
could=true;
}
while(haveNum[]&&haveNum[]&&haveNum[]&&haveNum[]&&haveNum[]){
could=false;
if(pluscard){
if(have[turn][nColor]){//同色+2
have[turn][nColor]--;
haveNum[turn]--;
pluscard+=;
q.push(nColor);
could=true;
}
for(i=;!could&&i<;i++)//异色+2
if(have[turn][i]){
have[turn][i]--;
haveNum[turn]--;
nColor=i;
pluscard+=;
q.push(i);
could=true;
}
if(could){
turn=(turn+)%;
continue;
}
else{
getcard(turn,pluscard);
pluscard=;
}
}
for(i=;!could&&i<;i++)//相同颜色选数字
if(have[turn][nColor*+i]){
have[turn][nColor*+i]--;
haveNum[turn]--;
nDigit=i;
q.push(nColor*+i);
could=true;
sameColor=false; }
for(i=;!could&&!sameColor&&i<;i++)//相同数字选颜色
if(have[turn][i*+nDigit]){
have[turn][i*+nDigit]--;
haveNum[turn]--;
nColor=i;
q.push(i*+nDigit);
could=true;
}
if(!could&&have[turn][nColor]){//同色+2
have[turn][nColor]--;
haveNum[turn]--;
pluscard+=;
q.push(nColor);
sameColor=true;
could=true;
}
for(i=;!could&&sameColor&&i<;i++)//异色+2
if(have[turn][i]){
have[turn][i]--;
haveNum[turn]--;
nColor=i;
pluscard+=;
q.push(i);
could=true;
}
if(!could)
getcard(turn,);
turn=(turn+)%;
}
getcard(turn,pluscard);
for(i=;i<;i++){
if(!haveNum[i])
puts("Winner");
else{
int score=;
for(j=;j<;j++)
if(have[i][j])
score+=*have[i][j];
for(j=;j<;j++)
if(have[i][j])
score+=(j%)*have[i][j];
printf("%d\n",score);
}
} return ;
}
ZJNU 2353 - UNO的更多相关文章
- 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用
一.前言: A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...
- hdu 3047–Zjnu Stadium(带权并查集)
题目大意: 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突. 分析: 首 ...
- hdu 3074 Zjnu Stadium (带权并查集)
Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- Arduino uno R3 ISP刷Rootloader for arduino pro mini
找了好久才发现的,好东西.介绍怎么使用uno对mini 刷Rootloader **SOLUTION** Reinstall the Arduino Pro Mini Bootloader using ...
- [Arduino] Arduino Uno R3 中文介绍
Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板.UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出 ...
- import uno 错误
安装aeroolib 模块后,提示没有 uno 相关段一些模块, 原因是这些模块是 openoffice 中段,需要先安装 openoffice. 1:清除所有 libreoffice 软件, su ...
- 《团队作业》五小福团队--UNO的博客链接汇总
<团队作业>五小福团队--UNO的博客链接汇总 <团队作业第一周>五小福团队作业--UNO <团队作业第二周>五小福团队作业--UNO <团队作业第三.第四周 ...
- Platform.Uno介绍
编者语:Xamarin国内很多人说缺乏可用的实例,我在写书过程中在完善一些常用场景的例子,希望帮到大家.Build 2018结束一周了,善友问我要不要谈谈Xamarin的一些变化,但碍于时间有限一直没 ...
- 《团队作业第一周》五小福团队作业——UNO
<团队作业第一周>团队作业--UNO 一.团队展示 队员学号 队名:五小福 (真是个红红火火恍恍惚惚的队名)> 拟作的团队项目描述 基于安卓开发的有趣味性的UNO纸牌小游戏 队员风采 ...
随机推荐
- C#常用类库简介(二)
原文出处:http://blog.csdn.net/weiwenhp/article/details/8140503 C#常用类库简介(一)的地址 System与mscorlib这两个dll中的类库是 ...
- Solve Error: Could not find the certificate xxxx.com. at ServerlessCustomDomain.<anonymous>
When runs "serverless create_domain", we may get the following error: Could not find the c ...
- 三十八、SAP设置默认语言
一.点击系统->用户参数文件->用户数据 二.设置成需要的语言 三.重新登录,并在登录时选择EN 四.进入界面
- 【LeetCode】160. 相交链表
题目 输入两个链表,找出它们的第一个公共节点. 如下面的两个链表: 在节点 c1 开始相交. 示例 1: 输入:intersectVal = 8, listA = [4,1,8,4,5], listB ...
- 动态添加,删除class样式
function hasClass(obj, cls) { //class位于单词边界,判断class样式是否已经存在 return obj.className.match(new RegExp('( ...
- VNC连接桌面
1.#yum -y install vnc *vnc-server* 2.修改VNCServer主配置文件 #vim /etc/sysconfig/vncservers 复制最后两行并去掉行首注释符, ...
- BZOJ 4901 [CTSC2017]网络
题解: 只会O(n log^2 n) O(n log n)先留坑 不开long long 0 分!!!! #include<iostream> #include<cstdio> ...
- 七、CI框架之分配变量数组,循环输出
一.添加并传递变量 二.在View界面输出 输出显示 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477247)哦,谢谢.
- JDK1.8 HashMap学习
1:源码分析 1.1:构造方法 public HashMap(int initialCapacity, float loadFactor) { ) throw new IllegalArgumentE ...
- JavaBean和json数据之间的转换(二)含有date类型的JavaBean
1.前言 上次讲了简单的JavaBean和json格式之间的转换,代码很简单,但是实际过程中,往往用到的JavaBean都是比较复杂的,其他的字段还好,如果JavaBean中包含了date类型的字段, ...