【博弈论 斐波那契博弈】 HRPA

news2024/11/13 15:08:28

HRPA


在这里插入图片描述

这道题就是一个斐波那契博弈的经典模型:
有一堆个数为n的石子,第一个人第一次不能全部取完,每次一个人取石子的个数都应当大于0,且小于等于上一个人取的石子个数的两倍。
问是否有先手必胜策略。
如果有,第一个人取的石子个数最少是多少?


分析:

这边我们先引入一个齐肯多夫(Zeckendorf)定理:

  • 任何正整数都可以表示成若干个不连续的斐波那契数之和。

这个定理使我们分析这道题目的理论基础。

我们先抛出一个结论:
如果n恰好是斐波那契数,那么先手必败。
为什么呢?
由于n是斐波那契数,那么 n = f x + f x + 1 n=f_x+f_{x+1} n=fx+fx+1
先手的人不能直接取>= f x f_x fx个数的石子,因为这样后手就可以直接取完剩下的石子。
那么问题就变成了,先手有没有策略分别取完 f x f_x fx f x + 1 f_{x+1} fx+1个数的石子。
由于 f x f_x fx f x + 1 f_{x+1} fx+1都是斐波那契数列,因此问题产生了迭代。
边界情况是 x = 2 x=2 x=2,即 n = 2 n=2 n=2的情况。
这个时候,先手只能取1,因此后手胜利。

综上,如果n恰好是斐波那契数,那么后手必胜。

那么,如果n不是斐波那契数列呢?
根据齐肯多夫定理,n可以分解为若干个不连续的斐波那契数列之和:
n = f x 1 + f x 2 + f x 3 + … … n = f_{x1}+f_{x2}+f_{x3}+…… n=fx1+fx2+fx3+……
这里,f数组依次递增。
那么,这个时候,先手取完 f x 1 f_{x1} fx1之后,就可以必胜。
为什么呢?
首先,我们要知道, 2 ∗ f x 1 < f x 2 ( 1 ) 2*f_{x1}<f_{x2}(1) 2fx1<fx2(1),这也就是说,如果我们取了 f x 1 f_{x1} fx1,对方也没有办法直接取完 f x 2 f_{x2} fx2,这个时候对方也就落入了第一种情况的被动局面。
但是, ( 1 ) (1) (1)怎么证明呢?
我们利用反证法,假设 2 ∗ f x 1 > = f x 2 2*f_{x1}>=f_{x2} 2fx1>=fx2,那么这个时候 x 2 x_2 x2必然等于 x 1 + 1 x_1+1 x1+1,那么 f x 1 + f x 2 = f_{x1}+f_{x2}= fx1+fx2= f x 1 + f x 1 + 1 = f x 1 + 2 f_{x1}+f_{x1+1}=f_{x1+2} fx1+fx1+1=fx1+2,也就是说,这两个斐波那契数,可以用 f x 1 + 2 f_{x1+2} fx1+2代替,那么也就不会存在 f x 1 + f x 2 f_{x1}+f_{x2} fx1+fx2这种情况了。
因此,如果想要这种斐波那契分解存在,就必须满足 条件 ( 1 ) 条件(1) 条件(1)

那么这题的分析到这里就结束了。


#include<bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1e5+100;
int n;
int f[N];
int nn;

signed main(){
	int x; cin>>x;
	f[0] = 1;
	f[++n] = 1; f[++n] = 1;
	for (int i = 3; i <= 1000; i++){
		if (f[n] > x) break;
		f[++n] = f[i-1]+f[i-2];
	}
	int now = n-1;
	while (x){
		while (f[now] > x) now--;
		x-=f[now];
		if (x == 0) cout<<f[now]<<endl;
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2151043.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一个通用OCR模型GOT-OCR2.0

通用OCR模型GOT-OCR2.0 在信息化快速发展的今天&#xff0c;光学字符识别&#xff08;OCR&#xff09;技术的应用越来越广泛。从文档数字化到自动化数据录入&#xff0c;OCR技术都发挥着重要作用。今天&#xff0c;我将为大家介绍一个开源的通用OCR模型——GOT-OCR2.0。 软件…

手把手教你-MAC虚拟环境搭建TensorFlow开发环境

参考如下代码布置&#xff0c;直接运行&#xff0c;即可: 1) 安装virtualenv $ sudo pip install virtualenv 2&#xff09;创建虚拟环境文件夹 $ virtualenv --system-site-packages -p python2.7 ./EnvPy27 3) 激活环境 $ source EnvPy27/bin/activate 4) 更新pip $ pi…

【动态规划】最大正方形

最大正方形&#xff08;难度&#xff1a;中等&#xff09; 该题对应力扣网址 思路 min_valuemin({dp[i-1][j-1],dp[i-1][j],dp[i][j-1]}) dp[i][j]min_value 关键点是正方形的右下角(n>1时)&#xff0c;通过画图&#xff0c;可以看出&#xff0c;在基础正方形22中&#x…

安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有些设备需要在长按电源键的时候,直接关机。不需要弹出对话框进行询问。 2.问题分析 过滤电源按键,需要在系统里面处理的话,那么我们需要熟悉android的事件分发,然后再…

Unsupervised Deep Representation Learning for Real-Time Tracking

摘要 我们的无监督学习的动机是稳健的跟踪器应该在双向跟踪中有效。具体来说&#xff0c;跟踪器能够在连续帧中前向定位目标对象&#xff0c;并回溯到其在第一帧中的初始位置。基于这样的动机&#xff0c;在训练过程中&#xff0c;我们测量前向和后向轨迹之间的一致性&#xf…

【专题】2024年9月直播、短视频行业报告合集汇总PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37744 在信息时代的浪潮下&#xff0c;直播短视频行业以其独特的魅力和强大的影响力&#xff0c;迅速成为了大众娱乐、信息传播以及商业营销的重要领域。从微短剧的异军突起&#xff0c;到 TikTok 在海外市场的蓬勃发展&#xff1b;…

音视频入门基础:AAC专题(3)——AAC的ADTS格式简介

音视频入门基础&#xff1a;AAC专题系列文章&#xff1a; 音视频入门基础&#xff1a;AAC专题&#xff08;1&#xff09;——AAC官方文档下载 音视频入门基础&#xff1a;AAC专题&#xff08;2&#xff09;——使用FFmpeg命令生成AAC裸流文件 音视频入门基础&#xff1a;AAC…

OpenSSH从7.4升级到9.8的过程 亲测--图文详解

一、下载软件 下载openssh 下载地址&#xff1a; Downloads | Library 下载openssl Index of /pub/OpenBSD/OpenSSH/ zlib Home Site 安装的 openssl-3.3.1.tar.gz ,安装3.3.2有问题 安装有问题&#xff0c; 二、安装依赖 yum install -y perl-CPAN perl-ExtUtils-CB…

stm32f411ceu6芯片学习

首先找到对应芯片的数据手册&#xff0c;硬件电路设计参考的是Electrical characteristics这一节&#xff0c;芯片的每一个引脚都会有推荐的电路接线。 基本每个芯片&#xff0c;都可以在数据手册中找到厂家提供的参考电路图&#xff0c;这就是绘制芯片的原理图最基本的依据。 …

【小白向】Google Play日区如何支付?Google Play日区怎么转?Google Play日区账号支付教程

1.引言 在移动应用和游戏的世界里&#xff0c;Google Play&#xff08;谷歌Play商店&#xff09;日区一直是许多用户的向往之地。日本作为全球第三大应用市场&#xff0c;拥有大量优质且独特的应用和游戏。本教程将为你详细介绍如何在Google Play商店进行日区支付、Google Pla…

mat工具的几个实用地方

背景 使用mat的过程中&#xff0c;有几个值得关注的注意点&#xff0c;可以帮助我们尽快查找到问题的答案 mat实用的注意点 一.打开直方图后排序&#xff0c;直观查看内存占用大小,如下图所示 二.查看某个对象实例的具体值&#xff0c;点击对象&#xff0c;点击List Object…

mysql使用sql函数对json数组的处理

MySQL从5.7版本开始增加了对JSON数据类型的支持。你可以使用->>操作符和JSON_EXTRACT函数来访问JSON数据中的值。 但是&#xff0c;对于JSON数组&#xff0c;如果你想要获取数组中的所有元素&#xff0c;MySQL并没有直接的函数来返回数组中的所有元素作为单独的行。不过…

甲基化组学全流程分析(适用于27k的甲基化数据)

甲基化组学全流程分析(适用于27k的甲基化数据) 前面我已经讲过450k和870k EPIC的甲基化芯片的全流程分析教程&#xff0c;分析功能更为完善和强大&#xff0c;今天讲讲甲基化位点探针较少的27k甲基化芯片的分析流程。 我开发了一款本地电脑无限使用的零代码生信数据分析作软图…

不出海等于出局?

从2023年开始&#xff0c;“出海”已经成了很多企业的主题词。我以前做过一段时间的百度竞价工作&#xff0c;所以有个习惯&#xff0c;会比较关注友商网站上的一些动态信息。2023年开始&#xff0c;以前熟悉的一些公司&#xff0c;网站上都多了一个板块&#xff0c;就是“出海…

HTML常见语法设计

HTML常见语法设计 1.HTML类和ID类id 2.HTML 响应式 Web 设计3.HTML5 语义元素4.HTML 字符实体5.HTML 编码&#xff08;字符集&#xff09; 1.HTML类和ID 类 对 HTML 进行分类&#xff08;设置类&#xff09;&#xff0c;使我们能够为元素的类定义 CSS 样式。为相同的类设置相…

鸿蒙Harmony-Next 徒手撸一个日历控件

本文将介绍如何使用鸿蒙Harmony-Next框架实现一个自定义的日历控件。我们将创建一个名为CalendarView的组件&#xff08;注意,这里不能叫 Calendar因为系统的日历叫这个&#xff09;,它具有以下功能: 显示当前月份的日历支持选择日期显示农历日期可以切换上一月和下一月 组件…

9月18日国家网络安全通报中心发布的100个高危漏洞(下)

9月18日国家网络安全通报中心发布&#xff0c;公安机关网安部门从危害程度、广泛性、漏洞利用形式、利用难度、检测难度等维度&#xff0c;梳理出了100个突出的高危漏洞&#xff0c;目前这些漏洞是各个网络安全公司检测的重点&#xff0c;广大网络运营者应尽快对照排查自己的网…

火车站高铁站站点时刻查询网站计算机毕设/动车站点时刻查询

创建一个关于火车站高铁站站点时刻查询的毕业设计项目&#xff0c;是一个非常实际且具有挑战性的任务。这样的项目不仅能帮助学生综合运用所学知识&#xff0c;还能够为用户提供便捷的服务。下面将详细说明项目的各个方面&#xff1a; 1. 需求分析 用户需求&am…

代码随想录冲冲冲 Day51 图论Part3

101. 孤岛的总面积 dfs 首先dfs的作用就是在遇到陆地的时候找到所有的周围陆地 对于这道题的dfs 会把所有的链接边缘的陆地变成海洋 这样在全部调整之后 剩下的就是孤岛了 这道题中的dfs的结束条件就是遇到海洋时 遇到每一个陆地就会把面积1&#xff0c;在每一次重新找到…

(2)leetcode 234.回文链表 141.环形链表

234.回文链表 题目链接 234.回文链表 解题思路与代码 获取链表的中间段。 我们将mid这个节点记录下来&#xff0c;然后将这段链表反转&#xff0c;以下是反转的逻辑&#xff0c;最后我们将pre返回就是结果&#xff0c;就是通过中间变量tem记录位置从而实现链表的反转 最后结果…