「日常训练」 Soldier and Cards (CFR304D2C)
题意 (Codeforces 546C)
按照指定的规则打牌,问谁胜或无穷尽。
分析
又是一条模拟,用set+queue(这里手写了)处理即可。注意到两种局势“1 234”和“123 4”的差别,所以用set处理的时候需要在两方手牌中间加上相关的分割符号以示区分。
代码
#include <bits/stdc++.h>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO                  \
    ios::sync_with_stdio(false); \
    cin.tie(0);                  \
    cout.tie(0);
using namespace std;
using ll = long long;
using ull = unsigned long long;
using pi = pair<int,int>;
int carda[1005],cardb[1005];
int aStart=0,aEnd=0,bStart=0,bEnd=0;
set<string> s;
bool addStatus()
{
    string str="";
    for(int i=aStart;i!=aEnd;++i)
        str+='0'+carda[i];
    str+=" "; // important here!
    for(int i=bStart;i!=bEnd;++i)
        str+='0'+cardb[i];
//    cout<<str<<endl;
    if(s.find(str)!=s.end()) return false;
    else
    {
        s.insert(str);
        return true;
    }
}
int isEnd()//1 a win 0 not End -1 b win
{
    if(aStart>=aEnd) return -1;
    else if(bStart>=bEnd) return 1;
    else return 0;
}
int main()
{
    int n; cin>>n;
    int k1; cin>>k1;
    rep(i,1,k1)
    {
        cin>>carda[aEnd++];
    }
    int k2; cin>>k2;
    rep(i,1,k2)
    {
        cin>>cardb[bEnd++];
    }
    int cnt=0;
    while(isEnd()==0 && addStatus())
    {
        int aTop=carda[aStart++],bTop=cardb[bStart++];
        if(aTop>bTop)
        {
            carda[aEnd++]=bTop;
            carda[aEnd++]=aTop;
        }
        else
        {
            cardb[bEnd++]=aTop;
            cardb[bEnd++]=bTop;
        }
        cnt++;
    }
    if(isEnd()==0)
    {
        cout<<-1<<endl;
    }
    else cout<<cnt<<" "<<int(isEnd()==1?1:2)<<endl;
    return 0;
}「日常训练」 Soldier and Cards (CFR304D2C)的更多相关文章
- 「日常训练」 Soldier and Traveling (CFR304D2E)
		题意 (CodeForces 546E) 对一个无向图,给出图的情况与各个节点的人数/目标人数.每个节点的人只可以待在自己的城市或走到与他相邻的节点. 问最后是否有解,输出一可行解(我以为是必须和答案 ... 
- 「日常训练」 Soldier and Number Game (CFR304D2D)
		题意 (Codeforces 546D) 给定一个数x=a!b!" role="presentation">x=a!b!x=a!b!的形式,问其中有几个质因数. 分 ... 
- 「日常训练」Soldier and Badges (CFR304D2B)
		题意 (Codeforces 546B) 问对一个序列最少需要增减几个1能使其彼此不同. 分析 模拟处理.需要注意的是,尽管题目中说了an<=3000,问题是,如果一群a全是3000呢(滑稽), ... 
- 「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
		题意与分析(CodeForces 551B) 这他妈哪里是日常训练,这是日常弟中弟. 题意是这样的,给出一个字符串A,再给出两个字符串B,C,求A中任意量字符交换后(不限制次数)能够得到的使B,C作为 ... 
- 「日常训练」 Fire!(UVA-11624)
		与其说是训练不如说是重温.重新写了Java版本的代码. import java.util.*; import java.math.*; import java.io.BufferedInputStre ... 
- 「日常训练」COMMON 约数研究(HYSBZ-1968)
		题意与分析 感谢https://www.cnblogs.com/Leohh/p/7512960.html的题解.这题话说原来不在我的训练范围,正好有个同学问我,我就拿来做做.数学果然不是我擅长的啊,这 ... 
- 「日常训练」 Mike and Fun (CFR305D2B)
		题意(CodeForces 548B) 每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度. 分析 非常非常简单,但是我当时训练的时候WA了四次...无力吐槽了,人间 不值得.jpg 代 ... 
- 「日常训练」Common Subexpression Elimination(UVa-12219)
		今天做的题目就是抱佛脚2333 懂的都懂. 这条题目干了好几天,最后还是参考别人的代码敲出来了,但是自己独立思考了两天多,还是有收获的. 思路分析 做这条题我是先按照之前的那条题目(The SetSt ... 
- 「日常训练」Magic Stones(CodeForces-1110E)
		题意 给定两个数组c和t,可以对c数组中的任何元素变换\(c_i\)成\(c_{i+1}+c_{i-1}-c_i\),问c数组在若干次变换后能否变换成t数组. 分析 这种魔法题目我是同样的没做过. ... 
随机推荐
- [SCOI2014]方伯伯运椰子
			嘟嘟嘟 01分数规划思维题. 题中要求交通总量不减少,那么如果总量增加的话,总费用就会增加,所以一定不是更优的解.那么总量守恒. 这是不是就想到了网络流?对于每一个节点流入量等于流出量.然后就是很有思 ... 
- AQS(一) 对CLH队列的增强
			基本概念 AQS(AbstractQueuedSynchronizer),顾名思义,是一个抽象的队列同步器. 它的队列是先进先出(FIFO)的等待队列 基于这个队列,AQS提供了一个实现阻塞锁的机制 ... 
- eclipce导出项目发布到tomcat
			1.右击项目-Except 2.在弹出框中输入“WAR file” 3.点击“next” 在Destinatin选择保存路径,即可 4.将保存的文件复制到tomcat下,启动tomcat之后,会自动解 ... 
- 数据恢复顾问(DRA)
			(1)DRA介绍 数据恢复顾问(Data Recovery Advise)是一个诊断和修复数据库的工具,DRA能够修复数据文件和(某些环境下)控制文件的损坏,它不提供spfile和logfile的修复 ... 
- 卸载MySQL以及重装卡到Start Services的解决办法(亲测有效,刚重装成功)
			卸载MySQL以及重装卡到Start Services的解决办法 重装系统永远是个好办法,但是对于我们程序员来说只要一想到电脑上的环境变量和其他的配置就蔫了.所以这一条就当作是废话吧. 一般来说装My ... 
- 简明 ES6 模块
			简明 ES6 模块 1.什么是模块 模块就是一段代码,这段代码可以反复使用,经常单独写成一个文件,一旦加载会立即执行. 2.导出 导出有 2 种方式:命名导出和默认导出,分别用关键字export和ex ... 
- 20181009noip HZ EZ 两校联考trade(优先队列,贪心)
			题面戳这里 思路: 裸的,贪心... 考场上写了一个数据分治(70ptsDP,30pts线段树优化贪心,GG了后30分) 这道题其实很简单的 我们看图: 我们在A时刻买一个东西,在B时刻卖出去,我们可 ... 
- 【赛事总结】◇赛时·8◇ AGC-027
			[赛时·8]AGC-027 日常AGC坑……还好能涨Rating +传送门+ ◇ 简单总结 感觉像打多校赛一样,应该多关注一下排名……考试的时候为了避免影响心态,管都没有管排名,就在那里死坑B题.最后 ... 
- php获取客户端IP地址、所在地、操作系统、浏览器信息
			本实例主要实现获取客户端的IP,再根据获取的IP获取所在地,还可以获取用户当前电脑使用的操作系统以及用户是通过什么浏览器进行访问的. 您可以在这里查看具体演示和下载demo http://www.j ... 
- PHP入门笔记--基础语法一
			一.基本语法 php标记 <?php ?> php代码结束标记 三种注释 // /**/ # 二.类型 四种标量类型:boolean, integer, float, string 三种复 ... 
