原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655

简单博弈问题,A,B手里各有n,m张牌,牌有颜色,两人轮流出牌(A先出),一个人只能打出对放未打出过的颜色的牌(可以打出自己打出过的颜色的牌),当一方不能再打出牌时,对方获胜。

博弈策略:优先选择双方都有该颜色的牌(对方没有的颜色和自己没有的颜色放在最后,不影响),再优先选择双方牌数相加最大的颜色的牌。

存储方法:读入之后离散化,统计数量,放入结构体数组,最后排序

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn=5e5+5;
int a[maxn],b[maxn];
int aa[maxn],bb[maxn];
int ab[maxn];
struct node{
int an,bn;
}c[maxn];
bool cmp(node a,node b){
if(a.an==0||a.bn==0) return 0;//一方没有的放后面
if(b.an==0||b.bn==0) return 1;
return a.an+a.bn>b.an+b.bn;
}
unsigned long long k1, k2,mod;
unsigned long long rng() {
unsigned long long k3 = k1, k4 = k2;
k1 = k4;
k3 ^= k3 << 23;
k2 = k3 ^ k4 ^ (k3 >> 17) ^ (k4 >> 26);
return k2 + k4;
}
int main(){
int t;
cin>>t;
while(t--){
int n,m,p;
scanf("%d%d%d",&n,&m,&p);
for(int i=0;i<=n+m;i++) c[i].an=c[i].bn=0;
if(p==1){
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=m;i++) scanf("%d",&b[i]);
}
if(p==2){
scanf("%lld%lld%lld",&k1,&k2,&mod);
for (int i = 1; i <=n; ++i)
a[i] = rng() % mod;
scanf("%lld%lld%lld",&k1,&k2,&mod);
for (int i = 1; i <=m; ++i)
b[i] = rng() % mod;
}
for(int i=1;i<=n;i++) ab[i]=a[i];
for(int i=n+1;i<=n+m;i++) ab[i]=b[i-n];
sort(ab+1,ab+1+n+m);
int size=unique(ab+1,ab+1+n+m)-(ab+1);
for(int i=1;i<=n;i++) aa[i]=lower_bound(ab+1,ab+1+size,a[i])-(ab+1);
for(int i=1;i<=m;i++) bb[i]=lower_bound(ab+1,ab+1+size,b[i])-(ab+1);
for(int i=1;i<=n;i++) c[aa[i]].an++;;
for(int i=1;i<=m;i++) c[bb[i]].bn++;
sort(c,c+size,cmp);//c[0]也有值
int suma=0,sumb=0;
for(int i=0;i<size;i++){
if(c[i].an && c[i].bn){
if(i&1)
sumb+=c[i].bn;
else suma+=c[i].an;
}
else{
suma+=c[i].an;
sumb+=c[i].bn;
}
}
if(suma>sumb)printf("Cuber QQ\n");
else printf("Quber CC\n");
}
}

HDU6655 Just Repeat(2019杭电多校J题)的更多相关文章

  1. [2019杭电多校第七场][hdu6655]Just Repeat

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655 题意是说两个人都有一些带有颜色的牌,两人轮流出牌,但是不能出对面出过的颜色的牌,最后谁不能出牌谁 ...

  2. 2019杭电多校&CCPC网络赛&大一总结

    多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网 ...

  3. 2019杭电多校第一场hdu6581 Vacation

    Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也 ...

  4. 2019杭电多校第二场hdu6601 Keen On Everything But Triangle

    Keen On Everything But Triangle 题目传送门 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大--直到找到连续的三个数可以构成一个三角形.因为对于 ...

  5. 2019杭电多校第二场hdu6602 Longest Subarray(线段树)

    Longest Subarray 题目传送门 解题思路 本题求一个最大的子区间,满足区间内的数字要么出现次数大于等于k次,要么没出现过.给定区间内的数字范围是1~c. 如果r为右边界,对于一种数字x, ...

  6. Rikka with Game[技巧]----2019 杭电多校第九场:1005

      Rikka with Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Othe ...

  7. 2019杭电多校 hdu6662 Acesrc and Travel (树形dp

    http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻 ...

  8. 2019杭电多校 hdu6659 Acesrc and Good Numbers

    http://acm.hdu.edu.cn/showproblem.php?pid=6659 题意:给你d,x,让求满足f(d,n)=n的最大n(n<=x),其中f(d,n)表示数字d在从1到n ...

  9. 2019杭电多校6 hdu6638 Snowy Smile(二维最大矩阵和 线段树)

    http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意:给你一些点的权值,让找一个矩形圈住一部分点,问圈住点的最大权值和 分析:由于是稀疏图,明显要先把x, ...

随机推荐

  1. PAT_A1071#Speech Patterns

    Source: PAT A1071 Speech Patterns (25 分) Description: People often have a preference among synonyms ...

  2. 3年Java,鏖战腾讯

    作者:codegoose https://segmentfault.com/a/1190000017864721 经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次 ...

  3. 创建调用Consul的客户端项目

    创建调用Consul的客户端项目 创建项目 源码 Github仓库:https://github.com/sunweisheng/spring-cloud-example

  4. Python做个小游戏

    Ps.可去知乎搜索“雨露浅歌”大神,他写的帖子里有详细讲解和源码. 游戏概述.玩法:通过键盘的↑键来控制小球往上走,当松开↑键时,小球以一定速度向下掉,小球每越过一根棒加1000分,越过一个飞镖加20 ...

  5. SVD和SVD++

    参考自:http://blog.csdn.net/wjmishuai/article/details/71191945 http://www.cnblogs.com/Xnice/p/4522671.h ...

  6. 二、python基础之列表、元组

    一.列表 列表的概念: 列表由一系列按特定顺序排列的元素组成.你可以创建包含字母表中所有字母.数字0-9或所有家庭成员姓名的列表:也可以将任何东西加入列表中,其中的元素之间没有任何关系.鉴于列表通常包 ...

  7. 【问题解决方案】单个文件夹嵌套时github仓库中最外层文件夹直接显示所有嵌套文件夹名的问题

    上传文件的时候遇到这样一个问题: 这么看着好像有什么问题,直觉不应该这么显示吧 折腾半天,从github新建了嵌套文件夹并同步到本地,然后从本地push了文件,结果依然显示是这样 好吧,那这个问题应该 ...

  8. springmvc 异常统一处理的三种方式详解

    1 描述  在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的.不可预知的异常需要处理.每个过程都单独处理异常,系统的代码耦 ...

  9. Git--将已有的项目添加到github(转)

    转自:https://blog.csdn.net/north1989/article/details/53471439 1. 目标: 把本地已经存在的项目,推送到github服务端,实现共享. 2. ...

  10. Node.js定时邮件的那些事儿

    近开发一个项目,需要在Node.js程序里实现定期给管理员发邮件的功能. 笔者平时只会在Web界面收发邮件.对邮件的原理完全不懂(可能大学教过,然而全忘了),直到要解决这个问题.请教了几个业务的同事, ...