首页 > 其他分享 >「CF78C」 Beaver Game

「CF78C」 Beaver Game

时间:2024-03-12 20:57:05浏览次数:28  
标签:CF78C puts 必败 ll Game && 操作 Beaver

题意

一场博弈游戏,有 \(n\) 个长度为 \(m\) 木棍。两人轮流进行操作,每次操作可选择一根木棒把它进行任意等分,使得分完后每段长度都小于 \(k\)。最终无法操作的人判负。

两人都执行最优操作,先手名为 Timur,后手名为 Marsel,输出最终赢家。

分析

可以分为两种情况:

  1. \(n\) 为偶数,此时无论先手怎么分,后手都可以进行同样操作,先手必败。
  2. \(n\) 为奇数,则先手需把多出来的一根分完,从而转换为第一种情况的后手,此时先手必胜,否则先手必败。

对于一根木棍,因为是等分,所以最多分成 \(\sqrt m\) 份,然后进行 \(O(1)\) 判断。

总时间复杂度 \(O(\sqrt m)\)。

Code

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
inline ll read(){ll x=0,f=1;char c=getchar();while(c<48||c>57){if(c==45)f=0;c=getchar();}while(c>47&&c<58)x=(x<<3)+(x<<1)+(c^48),c=getchar();return f?x:-x;}
ll n,m,k;
signed main(){
    n=read(),m=read(),k=read();
    if(!(n&1))puts("Marsel"),exit(0);//n为偶数
    for(ll i=1;i*i<=m;++i){
        if(m%i)continue;//无法等分成n/i份
        if(i>=k&&m/i>1||i!=1&&m/i>=k)puts("Timur"),exit(0);//i为每份长度或i为份数
    }
    puts("Marsel");//先手必败
    return 0;
}

标签:CF78C,puts,必败,ll,Game,&&,操作,Beaver
From: https://www.cnblogs.com/run-away/p/18069252

相关文章

  • Infinite Card Game
    先看这篇题解这篇题解最开始的贪心我在赛时的时候想到了的,所以说博弈论完全是可以用贪心的,不要怕但是这里贪心还有一个问题,在对手攻击力比这张牌防御力大的区间中,对手可能有多张牌的防御力最大,这个时候难道每一个点都要连边吗?其实不用,连接其中随便一个就好了,因为我们发现,在每一......
  • 基础GamePlay知识-扇形检测
    将会持续更新gameplay的一些基础知识,一同学习。扇形检测扇形检测是Gameplay里面很常见的场景。比如荒野乱斗中,大部分的近战角色都是扇形攻击。在扇形范围内就认为是受击。扇形检测只有两个参数,一个是扇形的角度一个是扇形的半径大小。效果获取鼠标朝向技能必然是和鼠标朝......
  • DBeaver 23.2 最新版 全系列版本、全平台(Win+Mac+Linux)永久激活破解!
    DBeaver简介DBeaver是一个SQL客户端和数据库管理工具。对于关系数据库,它使用JDBCAPI通过JDBC驱动程序与数据库交互。对于其他数据库(NoSQL),它使用专有数据库驱动程序。它提供了一个编辑器,支持代码完成和语法高亮。它提供了一种插件体系结构(基于Eclipse插件体系结构),允许用户修改应......
  • SP20848 IGAME - Interesting Game 题解
    分析数位DP一眼题。对于一个\(k\)位的数\(s\),我们不妨将其看做由数字\(s_1,s_2,s_3,\dots,s_k\)这\(k\)个数字拼接起来的。而题意是每个人可以将\(s_1,s_2,s_3,\dots,s_k\)中的任意一个减去任意数字,保证不减去\(0\)且结果\(\ge0\)。显然,在我们将这\(k\)个数看......
  • 29. 绑定 Gameplay Panel 数据
    本节目标当玩家抽卡、弃卡的时候,抽牌堆和弃牌堆的数量要与实际的保持一致实现方法添加抽牌堆数量和弃牌堆数量变更事件抽牌弃牌的时候发布事件绑定广播事件GameplayPanel接收事件首先GameplayPanel需要在OnEnable的时候,绑定相关的UI元素当事件到来的时候,调用Up......
  • 28. 制作 Gameplay Panel
    本节目标实现以下UI功能实现创建GameplayPanel在UI目录下创建一个GameplayPanel,编辑GameplayPanel,增加VisualElement、Label、Button注意,需要将它们的Attributes->PickingMode都修改为Ignore,避免鼠标在拖拽卡牌的时候碰到UI物体后,系统认为鼠标松开了Top......
  • 二刷GAMES11 Transformation
    齐次坐标引入齐次坐标是想把包含平移在内的变换写成一个矩阵乘以一个向量的形式。HomogenousCoordinates2Dpoint\((x,y,1)^T\)其实是\((x/w,y/w,w)^T\)w不等于02Dvector\((x,y,0)^T\)2DTransformations缩放,Scale\[\mathbf{S}(s_x,s_y)=\begin{pmatrix}s_x&0&0\\0......
  • XOR Break — Game Version
    其实做了两道博弈的交互题后可以知道,博弈的交互题一般是需要你找到一种必胜的策略的,而且这种必胜的策略与非交互题还不同,因为对方可能不是按照最优策略走的,所以我们要找的是在任意一种情况下对面怎么走都能胜的条件,而且要对每一种情况都做出对应的策略(非交互题的话,我们是知道对方......
  • UE5 Gameplay一些类的生命周期备忘
    作为一个初学者,尽管能够在UE中能够使用蓝图和简单在C++中做一些逻辑更改,但对 Gameplay框架的使用上还是一脸懵逼,比如:玩家的本地数据存在哪里?游戏的数据存在哪?如果我切换了关卡,放在哪的数据会丢?如果玩家死亡了,放在哪的数据会丢?如果我想要存储一个全局数......
  • games101_Homework3
    摘要:在Raster部分实现数值插值,然后实现四种不同的像素着色器作业描述:作业1:修改函数rasterize_triangle(constTriangle&t)inrasterizer.cpp:在此处实现与作业2类似的插值算法,实现法向量、颜色、纹理颜色的插值。在rasterize_triangle函数中重复上次的包围盒进行点采样,......