Problem Statement

Takahashi and Aoki are playing a stone-taking game. Initially, there are N piles of stones, and the i-th pile contains Ai stones and has an associated integer Ki.

Starting from Takahashi, Takahashi and Aoki take alternate turns to perform the following operation:

  • Choose a pile. If the i-th pile is selected and there are X stones left in the pile, remove some number of stones between 1 and floor(XKi) (inclusive) from the pile.

The player who first becomes unable to perform the operation loses the game. Assuming that both players play optimally, determine the winner of the game. Here, floor(x) represents the largest integer not greater than x.

Constraints

  • 1≤N≤200
  • 1≤Ai,Ki≤109
  • All input values are integers.

Input

Input is given from Standard Input in the following format:

N
A1 K1
:
AN KN

Output

If Takahashi will win, print Takahashi; if Aoki will win, print Aoki.

Sample Input 1

2
5 2
3 3

Sample Output 1

Aoki

Initially, from the first pile at most floor(5⁄2)=2 stones can be removed at a time, and from the second pile at most floor(3⁄3)=1 stone can be removed at a time.

  • If Takahashi first takes two stones from the first pile, from the first pile at most floor(3⁄2)=1 stone can now be removed at a time, and from the second pile at most floor(3⁄3)=1 stone can be removed at a time.
  • Then, if Aoki takes one stone from the second pile, from the first pile at most floor(3⁄2)=1 stone can be removed at a time, and from the second pile no more stones can be removed (since floor(2⁄3)=0).
  • Then, if Takahashi takes one stone from the first pile, from the first pile at most floor(2⁄2)=1 stone can now be removed at a time, and from the second pile no more stones can be removed.
  • Then, if Aoki takes one stone from the first pile, from the first pile at most floor(1⁄2)=0 stones can now be removed at a time, and from the second pile no more stones can be removed.

No more operation can be performed, thus Aoki wins. If Takahashi plays differently, Aoki can also win by play accordingly.

Sample Input 2

3
3 2
4 3
5 1

Sample Output 2

Takahashi

Sample Input 3

3
28 3
16 4
19 2

Sample Output 3

Aoki

Sample Input 4

4
3141 59
26535 897
93 23
8462 64

Sample Output 4

Takahashi

    这种题只能打表找规律啊QWQ
把k<=10,n<=30的sg函数打表出来,找了找规律,发现:
sg(x) = ( x%k==0 ? x/k : sg(x - x/k - 1) ) 当k比较小的时候,显然 x - x/k -1 的减小速率是非常快的,大致和k同阶(可能略大一点);
当k比较大的时候,可以发现在减小的过程中很多x/k都是一样的,并且一样的都是连续的,所以我们对于 x/k == i 可以计算出 x'/k 第一次 <i 的x'是哪个,因为x/k没减小1x减小的幅度大致是和k同阶的,所以总的复杂度就大致和 x/k同阶。。 因为不管k比较大还是比较小我们都可以连续一段处理,所以算一个sg函数的复杂度就是 min ( k , x/k ),大概是1e5级别的。。。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=205; int n,A,k,Xor; inline int Get(int x){
if(x<k) return 0;
if(x%k==0) return x/k;
int der=x/k+1,lef=x%k;
if(der>=lef) return Get(x-der);
else return Get(x-lef/der*der);
} int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&A,&k);
Xor^=Get(A);
} if(Xor) puts("Takahashi");
else puts("Aoki"); return 0;
}

AtCoder - 3939 Strange Nim的更多相关文章

  1. AtCoder练习

    1. 3721 Smuggling Marbles 大意: 给定$n+1$节点树, $0$为根节点, 初始在一些节点放一个石子, 然后按顺序进行如下操作. 若$0$节点有石子, 则移入盒子 所有石子移 ...

  2. 【AtCoder】ARC091

    C - Flip,Flip, and Flip...... 只有一个这一个是反面 只有一行那么除了两边以外都是反面 否则输出\((N - 2)*(M - 2)\) #include <bits/ ...

  3. sg函数小结

    sg函数小结 sg函数是处理博弈问题的重要工具. 我们知道sg(x)=mex{sg(j)|x能到达状态j} sg(x)=0时代表后手赢,否则先手赢. 对于一个问题,如果某些子问题是相互独立的,我们就可 ...

  4. Atcoder #017 agc017 D.Game on Tree 树上NIM 博弈

    LINK 题意:树上NIM的模板题,给出一颗树,现有操作删去端点不为根节点的边,其另一端节点都将被移除,不能取者为败 思路:一看就是个NIM博弈题,只是搬到树上进行,树上DFS进行异或 记得#014D ...

  5. Atcoder #014 agc014_D 树形DP+nim变形

    LINK 题意:两人在一颗树上做游戏,先手可以将树上一个节点染白,后手染黑,到最后时,所有与黑色相邻的白色同时变黑.如果还存在白色,先手胜,否则后手胜. 思路:首先不考虑树上,单独为链时,不管找规律也 ...

  6. LeetCode 292. Nim Game

    Problem: You are playing the following Nim Game with your friend: There to stones. The one who remov ...

  7. Atcoder Grand-014 Writeup

    A - Cookie Exchanges 题面 Takahashi, Aoki and Snuke love cookies. They have A, B and C cookies, respec ...

  8. AtCoder Grand Contest 014

    AtCoder Grand Contest 014 A - Cookie Exchanges 有三个人,分别有\(A,B,C\)块饼干,每次每个人都会把自己的饼干分成相等的两份然后给其他两个人.当其中 ...

  9. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

随机推荐

  1. 前端&后端程序员必备的Linux基础知识

    一 从认识操作系统开始 1.1 操作系统简介 我通过以下四点介绍什么操作系统: 操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石: 操作 ...

  2. Chinese Rings (九连环+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目: Problem Description Dumbear likes to play th ...

  3. 关于auto-keras训练cnn模型

    # 我在训练自己的人脸分类模型的时候发现图片的维度不能太高,经过很多次测试过后觉得一般人脸图片分为28*28大小训练的效果比较好.建议在使用其训练自己的物体识别模型的时候,尽量把图片压缩到28*28# ...

  4. position的用法与心得

    position的四个属性值: relative absolute fixed static 为了便于理解,首先创建对应的div <div class="main"> ...

  5. jq_$.extend和$.fn.extend插件开发和方法的封装

    --------杂谈-------- 随着使用的使用js和jq使用的越来越娴熟,也就是说日常产品经理给的一些需求,已经在自己的能力范围内了.空出来了一点时间,来研究如何优化你的代码, 不管是性能上,还 ...

  6. O(1)时间复杂度实现入栈、出栈、获得栈中最小元素、获得栈中最大元素(转)

    题目要求:定义栈的数据结构,添加min().max()函数(动态获取当前状态栈中的最小元素.最大元素),要求push().pop().min().max()的时间复杂度都是O(1). 思路解析:根据栈 ...

  7. Linux后台研发面试题

    本系列给出了在复习过程中一些C++后台相关面试题,回答内容按照笔者的知识点掌握,故有些问题回答较为简略 1.信号的生命周期 一个完整的信号生命周期可以用四个事件刻画:1)信号诞生:2)信号在进程中注册 ...

  8. 浅谈分布式一致性与CAP/BASE/ACID理论

    ##转载请注明 CAP理论(98年秋提出,99年正式发表): C( Consistency)一致性:在分布式系统中,数据一致更新,所有数据变动都是同步的: A( Availability)可用性:分布 ...

  9. CF625D Finals in arithmetic-构造,贪心,细节

    题目链接:http://codeforces.com/contest/625/problem/D 题意: 给你一个数字字符串s,长度1e6,算是一个大数吧,让你找到一个x,使得,x加上  逆转(x)= ...

  10. Pylot网站Web服务器性能和负载压力测试-适用Windows可绘制图表

    为了能够准确地评估网站服务器对网络流量的承受能力,我们一般会采取模拟网站用户访问,通过不断地增加并发数,延长访问时长,从而最终得出网站Web服务器的性能和负载能力.当然也可以通过Web压力测试,来完善 ...