大模拟,但是题目好像有些地方表述不清

根据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的更多相关文章

  1. 基于Proteus仿真的Arduino学习(1)——Arduino Uno最小系统及LED的简单使用

    一.前言:  A.Arduino简介 Arduino是由一个欧洲开发团队于2005年冬季开发.其成员包括Massimo Banzi.David Cuartielles.Tom Igoe.Gianluc ...

  2. hdu 3047–Zjnu Stadium(带权并查集)

    题目大意: 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, A B X, 代表B的座位比A多X. 然后求出这m个关系之间有多少个错误,所谓错误就是当前这个关系与之前的有冲突. 分析: 首 ...

  3. hdu 3074 Zjnu Stadium (带权并查集)

    Zjnu Stadium Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  4. Arduino uno R3 ISP刷Rootloader for arduino pro mini

    找了好久才发现的,好东西.介绍怎么使用uno对mini 刷Rootloader **SOLUTION** Reinstall the Arduino Pro Mini Bootloader using ...

  5. [Arduino] Arduino Uno R3 中文介绍

    Arduino UNO是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板.UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出 ...

  6. import uno 错误

    安装aeroolib 模块后,提示没有 uno 相关段一些模块, 原因是这些模块是 openoffice 中段,需要先安装 openoffice. 1:清除所有 libreoffice 软件,  su ...

  7. 《团队作业》五小福团队--UNO的博客链接汇总

    <团队作业>五小福团队--UNO的博客链接汇总 <团队作业第一周>五小福团队作业--UNO <团队作业第二周>五小福团队作业--UNO <团队作业第三.第四周 ...

  8. Platform.Uno介绍

    编者语:Xamarin国内很多人说缺乏可用的实例,我在写书过程中在完善一些常用场景的例子,希望帮到大家.Build 2018结束一周了,善友问我要不要谈谈Xamarin的一些变化,但碍于时间有限一直没 ...

  9. 《团队作业第一周》五小福团队作业——UNO

    <团队作业第一周>团队作业--UNO 一.团队展示 队员学号 队名:五小福 (真是个红红火火恍恍惚惚的队名)> 拟作的团队项目描述 基于安卓开发的有趣味性的UNO纸牌小游戏 队员风采 ...

随机推荐

  1. Ubuntu19.04的安装过程详解以及操作系统初始化配置

    Ubuntu19.04的安装过程详解以及操作系统初始化配置                                                                       ...

  2. python 获取cpu、内存、硬盘等实时信息 psutil

    psutil是一个跨平台库,能够轻松实现获取系统运行的进程和系统利用率(CPU,内存,磁盘,网络等)信息,主要应用于系统监控,分析和限制系统资源及进程的管理,它实现了同等命令行工具提供的功能,如ps, ...

  3. redis3.2.2 集群

    http://blog.csdn.net/imxiangzi/article/details/52431729 http://www.2cto.com/kf/201701/586689.html me ...

  4. Jrebel 远程热部署[Idea]

    服务器端 客户端-idea remote module 在服务器端,Tomcat的webapps下新建项目文件夹,如: demo/WEB-INF/classes/[jrebel.xml]

  5. read和write函数的使用

    https://blog.csdn.net/qq_33883085/article/details/88667003

  6. vue 中 {{}} 和 v-text 和 v-html 区别

    data: { message:'<h3>我是一只小小小小鸟!</h3>' }, <div class="" >{{message}}</ ...

  7. vue学习(三)组件传值

    组件 官网(https://cn.vuejs.org/v2/guide/components.html) 组件分为局部组件和全局组件 局部组件:是内容中国的一部分 只是在当前组件加载的时候 全部组件: ...

  8. linux常用命令-关机、重启

    常用命令-关机.重启 命令 含义 reboot 重新启动操作系 shutdown –r now 重新启动操作系统,shutdown会给别的用户提示 shutdown -h now 立刻关机,其中now ...

  9. slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETRY_COUNT设置和查看

    在主从复制中,有几个参数是非常重要的,包括slave_net_timeout, MASTER_HEARTBEAT_PERIOD, MASTER_CONNECT_RETRY,以及 MASTER_RETR ...

  10. CV_图像滤波[转]---python+opencv均值滤波,高斯滤波,中值滤波,双边滤波

    1.图像滤波算法(cv2) https://blog.csdn.net/qq_27261889/article/details/80822270 2.