洛谷P1290欧几里德游戏
题目地址
题目大意:
两个人st和ol博弈
有两个整数n,m
每次轮到一个人时候,需要选择用大的那个数减去小的那个数的倍数(不能减为负数)
最后得到0的为胜利者
思路:
(以下讨论均在n<m的条件下)
一.
首先考虑一种简单的情况m/n==1
那么每次轮到的人就只有一种选择m-n
然后还满足上述条件,则重复
二.
m/n>=2
假设m=kn+p
假设(n,p)是一个必胜点
当前状态为(n,m)
但是当前的操作者不想把这个必胜点留给对方
所以这个操作者选择转移到(n,m-(k-1)*n) -->(n,n+p)
因为p的范围是[0,n-1]
轮到第二个操作者的时候,他只能选择一种操作(即第一种情况)然后这个必胜点就又回到来一号操作者的手中
假设(n,p)是一个必败点
那么一号操作者可以由(n,m)直接转移到(n,z)把这个必败点留给对方
综上:
n/m>=2时,当前操作者必胜
具体操作:
就是第一种情况就是一直while循环过来循环过去就行, 遇到第二种情况就退出
复杂度不太会分析
这种方法的时间复杂度是多少呢?不难发现,当ii和jj为斐波那契数列的相邻两项时,所需次数最多。得出,复杂度上界略大于O(logn)O(logn)。肯定是不会炸的!
--来自洛谷一位大佬
Code:
n = read(), m = read();
if(n > m) swap(n, m);
if(m / n >= 2)
puts("Stan wins");
else
{
int flag = 1;
while(1)
{
if(n > m) swap(m, n);
if(m % n == 0||m/n>=2) break;
ll t = n;
m -= t;
n = n;
flag = 1 - flag;
}
if(flag)
puts("Stan wins");
else
puts("Ollie wins");
}
洛谷P1290欧几里德游戏的更多相关文章
- 洛谷——P1290 欧几里德的游戏
P1290 欧几里德的游戏 题目描述 欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的.给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的 ...
- 洛谷P1290 欧几里德的游戏
题目:https://www.luogu.org/problemnew/show/P1290 只要出现n>=2*m,就可以每次把较大的数控制在较小的数的一倍与二倍之间,则控制了对方的走法: 每次 ...
- 洛谷 P2197 nim游戏
洛谷 P2197 nim游戏 题目描述 甲,乙两个人玩Nim取石子游戏. nim游戏的规则是这样的:地上有n堆石子(每堆石子数量小于10000),每人每次可从任意一堆石子里取出任意多枚石子扔掉,可以取 ...
- 洛谷 P1965 转圈游戏
洛谷 P1965 转圈游戏 传送门 思路 每一轮第 0 号位置上的小伙伴顺时针走到第 m 号位置,第 1 号位置小伙伴走到第 m+1 号位置,--,依此类推,第n − m号位置上的小伙伴走到第 0 号 ...
- 洛谷 P1000 超级玛丽游戏
P1000 超级玛丽游戏 题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级 ...
- 【流水调度问题】【邻项交换对比】【Johnson法则】洛谷P1080国王游戏/P1248加工生产调度/P2123皇后游戏/P1541爬山
前提说明,因为我比较菜,关于理论性的证明大部分是搬来其他大佬的,相应地方有注明. 我自己写的部分换颜色来便于区分. 邻项交换对比是求一定条件下的最优排序的思想(个人理解).这部分最近做了一些题,就一起 ...
- $loj10156/$洛谷$2016$ 战略游戏 树形$DP$
洛谷loj Desription Bob 喜欢玩电脑游戏,特别是战略游戏.但是他经常无法找到快速玩过游戏的方法.现在他有个问题. 现在他有座古城堡,古城堡的路形成一棵树.他要在这棵树的节点上放置最少数 ...
- 洛谷P1000 超级玛丽游戏(洛谷新手村1-1-1)
题目背景 本题是洛谷的试机题目,可以帮助了解洛谷的使用. 建议完成本题目后继续尝试P1001.P1008. 题目描述 超级玛丽是一个非常经典的游戏.请你用字符画的形式输出超级玛丽中的一个场景. *** ...
- 洛谷P1080 国王游戏 python解法 - 高精 贪心 排序
洛谷的题目实在是裹脚布 还编的像童话 这题要 "使得获得奖赏最多的大臣,所获奖赏尽可能的少." 看了半天都觉得不像人话 总算理解后 简单说题目的意思就是 根据既定的运算规则 如何排 ...
随机推荐
- SEO All In One
SEO All In One website SEO https://www.google.com/search?newwindow=1&safe=active&sxsrf=ALeKk ...
- Async Programming All in One
Async Programming All in One Async & Await Frontend (async () => { const url = "https:// ...
- Flutter & APP & UI Components
Flutter & APP & UI Components 下拉刷新或者上拉加载 https://github.com/OpenFlutter/flutter_screenutil h ...
- search cascade select & AntD
search cascade select & AntD Antd https://ant.design/components/cascader-cn/#components-cascader ...
- SVG viewBox & coordinate system
SVG viewBox & coordinate system https://codepen.io/xgqfrms/pen/abOOrjp <html> <body> ...
- Flutter: 显示&关闭系统叠加层ui
import 'package:flutter/services.dart'; /// 关闭 SystemChrome.setEnabledSystemUIOverlays([]); /// 显示 S ...
- js引入jquery问题
写jsp的时候明明已经引入了jquery组件,但是总是报错如下图 jsp代码如下 <%@ page language="java" contentType="tex ...
- [计算机图形学]视图变换:MVP变换、视口变换
目录 一.MVP变换 1. 模型变换 1.1 缩放矩阵 1.2 旋转矩阵 1.3 平移矩阵 2. 视角变换 3. 投影变换 二.Viewport变换 一.MVP变换 MVP变换是模型变换(M).视角变 ...
- SpringBoot Test 多线程报错:dataSource already closed
1:前言 最近在项目中使用多线程对大任务拆分处理时,进行数据库操作的时候报错了. 业务代码大概是这样的: @Service public calss TestServiceImpl implement ...
- Spring IoC总结
Spring 复习 1.Spring IoC 1.1 基本概念 1.1.1 DIP(Dependency Inversion Principle) 字面意思依赖反转原则,即调用某个类的构造器创建对象时 ...