当前位置:网站首页>Alice and Bob (2021牛客暑期多校训练营1)
Alice and Bob (2021牛客暑期多校训练营1)
2022-07-06 09:25:00 【是小张张呀 zsy】
Alice and Bob
2021牛客暑期多校训练营1第一题,当时没做出来,看了这个博主的博客,瞬间懂了
题目链接:https://ac.nowcoder.com/acm/contest/11166/A
来源:牛客网
题目描述
Alice and Bob like playing games. There are two piles of stones with numbers n and m. Alice and Bob take turns to operate, each operation can take away k(k>0) stones from one pile and take away s×k(s≥0) stones from another pile. Alice plays first. The person who cannot perform the operation loses the game.
Please determine who will win the game if both Alice and Bob play the game optimally.
输入描述:
The first line contains an integer T(1≤T≤10^4 ) denotes the total number of test cases.
Each test case contains two integers n,m(1≤n,m≤5×10^ 3) in a line, indicating the number of two piles of stones.
输出描述:
For each test case, print “Alice” if Alice will win the game, otherwise print “Bob”.
示例1
输入
复制
5
2 3
3 5
5 7
7 5
7 7
输出
复制
Bob
Alice
Bob
Bob
Alice
题目大意:
两人博弈,每次一个人从一堆中拿走一个,同时从另一堆中拿走k*s个,问能谁先不能拿;
思路:
枚举,暴力,其实思路还是很简单的,如果能一次操作能取光石头此时为必胜态,我们用一个二维数组f[i][j]来表示第一堆石头数量为i第二堆石头数量为j的情况,f[i][j]=1表示状态面临两堆石头数量为i,j时可以一步取光石头,f[i][j]=0表示状态面临两堆石头数量为i,j时无法一次取光石头。根据题目f[k][sk]或f[sk][k]一定能够一次性取完,所以枚举s与k找出所有先手必胜的状态
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <math.h>
#include <string.h>
using namespace std;
bool f[5001][5001];
int main()
{
for(int i=0;i<=5000;i++)
{
for(int j=0;j<=5000;j++)
{
if(f[i][j]==0)
{
for(int k=1;k+i<=5000;k++)
{
for(int s=0;s*k+j<=5000;s++)
f[i+k][j+s*k]=1;
}
for(int k=1;k+j<=5000;k++)
{
for(int s=0;s*k+i<=5000;s++)
f[i+s*k][j+k]=1;
}
}
}
}
int t,n,m;
cin>>t;
while(t--)
{
scanf("%d%d",&n,&m);
if(f[n][m]==0)
cout<<"Bob"<<endl;
else
cout<<"Alice"<<endl;
}
}
边栏推荐
- Stm32 dossiers d'apprentissage: saisie des applications
- Leetcode notes - dynamic planning -day7
- 毕业才知道IT专业大学生毕业前必做的1010件事
- [C language] twenty two steps to understand the function stack frame (pressing the stack, passing parameters, returning, bouncing the stack)
- 动态规划前路径问题优化方式
- JS --- JS function and scope (II)
- Cost accounting [20]
- VS2019初步使用
- Take you to use wxpy to create your own chat robot (plus wechat interface basic data visualization)
- Market trend report, technical innovation and market forecast of Chinese hospital respiratory humidification equipment
猜你喜欢
Learning record: STM32F103 clock system overview working principle
Crawler series of learning while tapping (3): URL de duplication strategy and Implementation
Intensive learning notes: Sutton book Chapter III exercise explanation (ex17~ex29)
学习记录:STM32F103 时钟系统概述工作原理
Learning record: Tim - capacitive key detection
LeetCode#62. Different paths
What is "test paper test" in software testing requirements analysis
Learning record: Tim - Basic timer
Introduction to safety testing
STM32 learning record: input capture application
随机推荐
Cost accounting [15]
JS --- detailed explanation of JS DOM (IV)
学习记录:使用STM32F1看门狗
Jupyter installation and use tutorial
Market trend report, technical innovation and market forecast of lip care products in China and Indonesia
Report on the market trend, technological innovation and market forecast of printing and decorative paper in China
Accounting regulations and professional ethics [3]
How to do agile testing in automated testing?
Es6--- two methods of capturing promise status as failed
LeetCode#237. Delete nodes in the linked list
STM32学习记录:LED灯闪烁(寄存器版)
ucore lab5
How to build a nail robot that can automatically reply
What are the commonly used SQL statements in software testing?
[C language] twenty two steps to understand the function stack frame (pressing the stack, passing parameters, returning, bouncing the stack)
Learning record: Tim - capacitive key detection
ucorelab4
UCORE Lab 1 system software startup process
Research Report on market supply and demand and strategy of China's medical chair industry
Do you know the advantages and disadvantages of several open source automated testing frameworks?