原题链接

题意描述

一共有两堆石子,第一堆有 \(a\) 个,第二堆有 \(b\) 个,牛牛和牛妹轮流取石子,牛牛先手,每次取石子的时候只能从以下 \(2\) 种方案种挑一种来取(对于选择的方案数必须保证当前石子 \(\ge\) 取的石子个数才能取):

  1. 第一堆取 \(1\) 个,第二堆取 \(2\) 个
  2. 第一堆取 \(2\) 个,第二堆取 \(1\) 个

谁先无法取石子,谁就输了。假设牛牛和牛妹都很聪明,请问谁会获胜?

多组数据,(\(1 \le T\le 10^5,1 \le a,b\le 10^{18}\))

做法分析

题中是两堆石子,但是我们可以先简化下,假如只有一堆石子是什么情况,就是说,有一堆石子,每次最多取2个,不能不取,最后取光者胜利,这样的胜负情况是怎么样的,也就是著名的巴什博弈

结论是,当石子不为\(3\)的倍数时,先手必胜。

现在我们再回到原题,发现其实我们只要讨论最小的内堆就行了,因为假设最小的内堆显示牛牛胜,无论牛妹怎么取,牛牛都可以和牛妹做相反取法,也就是牛妹取\(1,2(2,1)\),牛牛就取\(2,1(1,2)\),正好相反,这样的话最后肯定是最小的内堆先结束,再假设最小的内堆显示牛妹胜,牛妹同样会做和牛牛相反的取法,这时最小的时候同样会先结束。

那我们就考虑,牛牛先手能否造成牛妹取时是输的局面,也就是说牛牛能否让取后最小数变为\(3\)的倍数。

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int T;
int main()
{
cin >> T;
while(T--)
{
ll a, b;
cin >> a >> b;
if( min(a - 2, b - 1) % 3 == 0)
printf("niuniu\n");
else if( min(a - 1, b - 2) % 3 == 0)
printf("niuniu\n");
else printf("niumei\n");
} return 0;
}

牛客小白月赛65 D题 题解的更多相关文章

  1. 牛客小白月赛6 水题 求n!在m进制下末尾0的个数 数论

    链接:https://www.nowcoder.com/acm/contest/135/C来源:牛客网 题目描述 其中,f(1)=1;f(2)=1;Z皇后的方案数:即在Z×Z的棋盘上放置Z个皇后,使其 ...

  2. 牛客小白月赛65——D-牛牛取石子

    链接:https://ac.nowcoder.com/acm/contest/49888/D来源:牛客网 牛牛和牛妹在玩游戏,他们的游戏规则是这样的: 一共有两堆石子,第一堆有 aaa 个,第二堆有 ...

  3. 【牛客小白月赛70】A-F题解【小d和超级泡泡堂】【小d和孤独的区间】【小d的博弈】【小d和送外卖】

    比赛传送门:https://ac.nowcoder.com/acm/contest/53366 难度适中. 作者:Eriktse 简介:19岁,211计算机在读,现役ACM银牌选手力争以通俗易懂的方式 ...

  4. 树的最长链-POJ 1985 树的直径(最长链)+牛客小白月赛6-桃花

    求树直径的方法在此转载一下大佬们的分析: 可以随便选择一个点开始进行bfs或者dfs,从而找到离该点最远的那个点(可以证明,离树上任意一点最远的点一定是树的某条直径的两端点之一:树的直径:树上的最长简 ...

  5. 【牛客小白月赛21】NC201605 Bits

    [牛客小白月赛21]NC201605 Bits 题目链接 题目描述 Nancy喜欢做游戏! 汉诺塔是一个神奇的游戏,神奇在哪里呢? 给出3根柱子,最开始时n个盘子按照大小被置于最左的柱子. 如果盘子数 ...

  6. 牛客小白月赛16 小石的妹子 二分 or 线段树

    牛客小白月赛16 这个题目我AC之后看了一下别人的题解,基本上都是线段树,不过二分也可以. 这个题目很自然就肯定要对其中一个进行排序,排完序之后再处理另外一边,另一边记得离散化. 怎么处理呢,你仔细想 ...

  7. 牛客小白月赛65ABCD(E)

                          比赛链接:牛客小白月赛65_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) A:牛牛去购物 题意 ...

  8. 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?

    牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...

  9. 牛客小白月赛8 - E - 诡异数字 数位DP

    牛客小白月赛8 - E - 诡异数字 题意: 求区间中,满足限制条件的数字的个数. 限制条件就是某些数字不能连续出现几次. 思路: 比较裸的数位DP, DP数组开一个dp[len][x][cnt] 表 ...

  10. 牛客小白月赛18 Forsaken给学生分组

    牛客小白月赛18 Forsaken给学生分组 Forsaken给学生分组 链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 ​ Forsaken有 ...

随机推荐

  1. JUC并发编程原理精讲(源码分析)

    1. JUC前言知识 JUC即 java.util.concurrent 涉及三个包: java.util.concurrent java.util.concurrent.atomic java.ut ...

  2. 大家都在用-神奇的Markdown格式

    概述 Markdown 是一种轻量级标记语言,它可以使我们专注于写作内容,而不用过多关注排版,很多博主.作家等都用它来撰写文章~ 本文将给各位小伙伴介绍 Markdown 语法的使用,本篇文章索奇就是 ...

  3. 2022-11-26:给定一个字符串s,只含有0~9这些字符 你可以使用来自s中的数字,目的是拼出一个最大的回文数 使用数字的个数,不能超过s里含有的个数 比如 : 39878,能拼出的最大回文数是

    2022-11-26:给定一个字符串s,只含有0~9这些字符 你可以使用来自s中的数字,目的是拼出一个最大的回文数 使用数字的个数,不能超过s里含有的个数 比如 : 39878,能拼出的最大回文数是 ...

  4. 2020-09-24:jvm监控系统是通过jmx做的么?

    福哥答案2020-09-24:#福大大架构师每日一题# [此答案来自知乎:](https://www.zhihu.com/question/422632973) 一般都是,但是要是记录比较详细的性能定 ...

  5. Java 网络编程 —— 非阻塞式编程

    线程阻塞概述 在生活中,最常见的阻塞现象是公路上汽车的堵塞.汽车在公路上快速行驶,如果前方交通受阻,就只好停下来等待,等到公路顺畅,才能恢复行驶. 线程在运行中也会因为某些原因而阻塞.所有处于阻塞状态 ...

  6. Spring Boot 配置文件总结

    前言 Spring Boot 中提供一个全局的配置文件:application.properties,这个配置文件的作用就是,允许我们通过这个配置文件去修改 Spring Boot 自动配置的默认值. ...

  7. lec-6-Actor-Critic Algorithms

    从PG→Policy evaluation 更多样本的均值+Causality+Baseline 减少variance 只要拟合估计Q.V:这需要两个网络 Value function fitting ...

  8. 微软Build 2023两大主题:Copilots和插件

    在本周大型微软人工智能 2023 开发者大会的开幕式上,人工智能站到了舞台中央--前台和后台以及介于两者之间的所有舞台. 贯穿会议的两个主要主题是Copilots - 涵盖广泛产品和服务的AI助手 - ...

  9. BFF层聚合查询服务异步改造及治理实践 | 京东云技术团队

    首先感谢王晓老师的[接口优化的常见方案实战总结]一文总结,恰巧最近在对稳健理财BFF层聚合查询服务优化治理,针对文章内的串行改并行章节进行展开,分享下实践经验,主要涉及原同步改异步的过程.全异步化后衍 ...

  10. deepin系统更新谷歌浏览器chrome的方法

    deepin系统更新谷歌浏览器chrome的方法 1 为什么要更新谷歌浏览器谷歌浏览器更新频繁,隔一段时间不更新,打开浏览器时会自动弹出一个提示更新的窗口,有点烦,如果使用python自动处理程序时, ...