HDU - 2486 A simple stone game k倍动态减法游戏

从“k倍动态减法游戏”出发探究一类组合游戏问题 算法合集之《从“k倍动态减法游戏”出发探究一类组合游戏问题》. 立即下载

题目:有n个石子,两个游戏者轮流操作,第一个操作的人最多能拿走n-1个石子,以后,每个游戏者最多能拿走前一个游戏者拿走数目的k倍,如果先手必败输出lose,否则输出必胜的情况下第一步拿走的石子数。

(2<=n<=10^8,1<=k<=10^5)

思路:k=1时必败态是2^i。k=2时必败态是斐波那契数列。k>=3时要构造数列,将n写成数列中一些项的和,使得这些被取到的项的相邻两个倍数差距>k 那么每次去掉最后一个1 还是符合上面的条件。设这个数列已经被构造了i 项,第 i 项为a[ i ],前 i 项可以完美对1..b[ i ] 编码使得每个编码的任意两项倍数>k 那么有a[i+1]=b[i]+1;这是显然的,因为b[ i ] + 1没法构造出来,只能新建一项表示。然后计算b[i+1]既然要使用 a[ i+1 ] 那么下一项最多只能是某个a[j]使得a[j]* k<a[i+1]于是b[i+1]=b[j]+a[i+1],如果不存在这样的j,b[i+1]=a[i+1]。

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 0x3f3f3f3fn
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
//0x3f3f3f3f

const int maxn=2e6+50;
int a[maxn],b[maxn];
int main(){

    int T,cas=0,n,k;
    scanf("%d",&T);
    while(T--){
        scanf("%d%d",&n,&k);
        int i=0,j=0;
        a[0]=b[0]==1;
        while(a[i]<n){
            i++;
            a[i]=b[i-1]+1;
            while(a[j+1]*k<a[i])
                j++;
            if(a[j]*k<a[i])
                b[i]=b[j]+a[i];
            else
                b[i]=a[i];
        }
        printf("Case %d: ",++cas);
        if(a[i]==n){//先手必败
            printf("lose\n");
        }
        else{
            int ans;
            while(n){
                if(n>=a[i]){
                    ans=a[i];
                    n-=a[i];
                }
                i--;
            }
            printf("%d\n",ans);//输出第一步拿走多少石子
        }
    }
    return 0;
}


从“k倍动态减法游戏”出发探究一类组合游戏问题1 摘要组合游戏是指,信息完全轮流操作的双人游戏。本文将从一个游戏——k 倍动态减法游戏(k-based dynamic subtraction game)的解答出 立即下载

相关推荐

自建智能算力中心与第三方算力租赁的深度分析

自建智算中心和第三方算力租赁的主要区别如下:对比维度自建算力中心第三方算力租赁初期成本数千万至数亿元硬件采购+机房基建零硬件投入,按需付费(如1元/卡时)部署速度6-12个月(采购、部署、调试)即时开通,分钟级资源调度运维难度需专业IT团队,承担断电、故障等风险服务商全托管,SLA保障99.95%可用性弹性扩展扩容需重新采购硬件,周期长、成本高支持秒级弹性伸缩,应对流量峰值技术迭代硬件更新周期长,易被淘汰自动升级。

2501_90999758的博客 2353

【hdu 2486】A simple stone game

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 592 Accepted Submission(s): 341 Problem Description After he has learned ho...

205

一文讲透 .claude/ 文件夹:Claude Code 团队配置指南和最佳实践

本文系统梳理了ClaudeCode配置框架,旨在解决实际落地中的常见困惑。文章从五层作用域体系(组织策略、命令行参数、本地覆盖、项目级、用户级)切入,详细解析了CLAUDE.md、rules、skills、agents等核心组件的定位与配合关系。重点强调了"确定性规则"与"概率性建议"的分层设计:权限控制和安全边界应通过settings.json和hooks实现,而工作约定和编码规范适合放在CLAUDE.md。文中提供了可直接套用的最小配置方案,并总结了10大常见踩坑

973

博弈论总结

我只是个搬运工……   博弈论小结 by xaphoenix 写在前面 第一次写一个专题的总结,由于笔者水平有限,所以里面肯定会有很多不恰当之处,希望读者不吝赐教。此外,这个小结中,有大约2000字的直接复制粘贴的知识介绍,有几道题的题目分析或者题意概括来源于网上各位大牛的博客,所以笔者不具有著作权,具体的参考资料在本文最后列出。另外,为了节省页数(准备把这个带到现场),所以排版比较凌乱...

qq1169091731的博客 9257

RPA 财务共享中心与RPA赋能

在和集团财务官交流的时候,客户经常会提到FSSC,其中有准备建立FSSC,正在建立FSSC,以及已建成FSSC正使用的,当中会有些对FSSC的疑虑和问题,所以花费些时间对FSSC进行了深入调研,从而也有幸拜读了王兴山、陈剑、梅震、钱自严等专业人士写的几本关于FSSC的书,对FSSC的前因后果有了更深入的认识,同时结合自己在FSSC的一些项目经验,故做了本次分享。 本文章主要分享财务共享中心以及R...

weixin_40244959的博客 2755

态路小课堂丨三款800G光模块方案介绍—SR8/DR8/2FR4

800G QSFP-DD 2FR4光模块使用CWDM4波长(1271/1291/1311/1331nm),单通道速率为100G,通过MUX减小光纤的数目,其光学接口采用CS接口或双芯LC接口。

poposu的博客 2386

hdu 2486 A simple stone game

题目:hdu 2486 A simple stone game 思路:类似于斐波那契博弈的一个扩展,比较专业的名字叫“k倍动态减法游戏”   百度文库里有一篇专门的论文 再次膜拜 中学生 同时参考了 这里  #include #include #include #include #include using namespace std; const int ma

shiyuan的专栏 1840

0032期基于深度学习的大米识别-含数据集

083基于深度学习的手势识别小程序版本_含10多种模型包括alexnet、DenseNet、DLA、GoogleNet、Mobilenet、ResNet、ResNeXt、ShuffleNet、VGG、EfficientNet和Swin transformer等10多种模型。117nlp自然语言处理-文本情感分类-joy-sadness-anger-fear-love-surprise。运行02深度学习模型训练.py就会将txt文本中记录的训练集和验证集进行读取训练,训练好后会保存模型在本地。

grehtsfrs的博客 1504

HDU2486 A simple stone game

K倍动态减法游戏

Vibrant 319

QT5.14.2离线安装包保姆级教程:断网、选组件、避坑全记录

本文详细介绍了QT5.14.2离线安装包的完整流程,特别针对Windows平台开发者提供断网安装、组件选择及避坑指南。作为QT5系列中最后一个免费离线版本,5.14.2具有免注册、全组件离线安装等独特优势,是开源开发者的理想选择。文章涵盖从环境准备到安装后配置的全方位指导,帮助开发者高效完成安装并避免常见问题。

weixin_30924087的博客 576

《PCI Express体系结构导读1》-- PCI简介

请先阅读完一遍此书再来看文章哦,这样效率更高~

HoneyIC的博客 151

K倍动态减法(hdu 2486)

题意:两人取一堆石子,石子有n个。 先手第一次不能全部取完但是至少取一个。之后每人取的个数不能超过另一个人上一次取的数的K倍。拿到最后一颗石子的赢。先手是否有必胜策略?若有,先手第一步最少取几个? 先来篇论文 再来篇博客(感觉人家讲的比我好,我就不献丑了)#include<cstdio> #include<cstring> #include<iostream> #include<algorith

ACMer_ZP的博客 806

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

hdu2486 A simple stone game K倍动态减法游戏

巨坑的一道博弈...思路太奇葩了...理解能力强的推荐去看2009年国家集训队论文  曹钦翔《从“k倍动态减法游戏”出发探究一类组合游戏问题》里面给有详细的证明过程... 先说一下题意,N个石子,第一次可以去1---N-1中任意数量的,之后每次最少取1个,最多取k*上次去的石子数,取走最后一颗的胜利,网上题解也不少,我是感觉都不怎么好懂, 我做的时候参考了这里的文章:http://blog.cs

Broken Wings 1096

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HDU 2486 (HDU 2580, POJ 3922) A simple stone game K倍动态减法游戏

题目大意: 就是现在有一堆石子, 然后先手第一次取走任意数量(至少1颗, 不能取完), 然后双方轮流拿石子的时候, 拿走的数量不能超过上一次被拿走石子数的K倍, 拿走最后一颗石子的人获胜, 给出n, k, 求出先手是否必败, 如果必胜, 则输出第一次应该拿走的最少数量 大致思路: 首先可以参考2009年国家集训队冬令营论文 : 《从"k"倍动态减法游戏"出发探究一类组合游戏问题》

Gatevin的专栏 1078

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

hdu2486 hdu2580 poj3922 A simple stone game--K倍动态减法游戏 博弈

A simple stone game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 182    Accepted Submission(s): 86 Problem Description After he ha

Shirley 3442

HDU 2486 A simple stone game (K 倍动态减法博弈游戏,还未理解)

大神博客:http://www.cnblogs.com/jianglangcaijin/archive/2012/12/19/2825539.html #define _CRT_SECURE_NO_WARNINGS #include #include #include #include using namespace std; int a[2100000]; int b[2100000]; in

Jason 767

HDU2486 A simple stone game 博弈论

题目链接:HDU2486 A simple stone game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 568    Accepted Submission(s): 324 Problem Descr

teddywang 1015

A simple stone game HDU - 2486(博弈,k倍动态减法)

思路: 博弈论中的 K倍动态减法游戏,难度较大,参看了好多资料才懵懂! 此题可以看作 Fibonacci 博弈的扩展,建议没弄懂 Fibonacci博弈的先学那个,个人整理 http://blog.youkuaiyun.com/tbl_123/article/details/24033245 ; 而说扩展体现在数列不再是Fib数列,是根据 k 的值自行构造的,其它换汤不换药,具体构造方法如下: 这儿方便说明白...

呼吸 367

【原创】 POJ 3922 HDU 2486 HDU 2580 A simple stone game K倍动态减法

K倍动态减法 Description After he has learned how to play Nim game, Mike begins to try another stone game which seems much easier. The game goes like this: Two players start the game with a pile of n stones...

致上 462

博弈/k倍动态减法(HDU2486 A simple stone game)

题目链接 最近搞了搞博弈论。发现了这个k倍动态减法。。看了不少题解仍然是不知所云。无奈只能先记下来板子。 对于我们构造出的序列a。如果n在这个序列n里面,就得出先手必输。否则,先手可以那最小的构成a[h]数量的石块。 下面是ac代码: #include <iostream> #include <cstdio> #include <cmath> #include ...

平凡人Kalzn的博客 321

HDU 2486 HDU2580 POJ3922 a simple stone game

题意:一堆石子,两个人从这一堆中相互取石子,规则如下:给定整数k

leodestiny 693

HDU2486_A simple stone game

这个题目是这样的,一堆石子有n个,首先第一个人开始可以去1-(n-1)个,接下来两人轮流取石子,每个人可取的石子数必须是一个不超过上一次被取的石子的K倍的整数。 现在求对于一堆数量为n的石子是否为必胜态,如果是的话,先手者第一次最少可以取多少石子? 这个题目是一个典型的K倍动态减法游戏。构造两个数列,然后直接判断就好了。 至于数列的构造原理,我自己弄得也不是很透彻,等我透彻了再写写...

weixin_30905133的博客 95

[K倍动态减法问题] HDU 2486 & HDU2580 & POJ3922 a simple stone game

这就是斐波那契博弈的加强版 对于某些特定的KK 我们有结论 K=1K=1 后手必胜当且仅当nn是22的次幂 先手的策略是取lowbit(n)lowbit(n) K=2K=2 后手必胜当且仅当nn是斐波那契数 先手的策略是取nn的斐波那契拆分中最小的数 这道题 我们仿照斐波那契博弈的构造方法 构造一个数列ana_n 将每个自然数都表示成ana_n中不连续的几项的和 f1+f2+⋯+fnf_1

雯舞 682

hdu 2486/2580 / poj 3922 A simple stone game 博弈论

思路: 这就是K倍动态减法游戏,可以参考曹钦翔从“k倍动态减法游戏”出发探究一类组合游戏问题的论文。 首先k=1的时候,必败态是2^i,因为我们把数二进制分解后,拿掉最后一个1,那么会导致对方永远也取不完,我们可以拿到最后一个1. k=2的时候,必败态是斐波那契数列,因为任何一个整数n都可以写成两项斐波那契数的和,所以我们拿掉1,对方永远取不完高两位的数。 k的时候我们必须构造数列,将n写...

weixin_30243533的博客 182

A simple stone game HDU 2486

A simple stone game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 815    Accepted Submission(s): 474   Problem Description ...

几许情愁的博客 165
上一篇: HDU - 2177 取(2堆)石子游戏 威佐夫博弈
下一篇: HDU - 3404 Switch lights Nim乘法
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值