K倍动态规划减法游戏(博弈论)_动态减法问题策略-程序员宅基地

ZOJ 3599 :http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3599

先放一道例题:

问的是在n的范围内,取不超过前一次K倍的石子数,从x个石子开始才是必赢(取走最后一个的人赢)

首先得了解斐波那契博弈,其实也是2倍推广到一般,之后考虑当不是2倍是n的时候,也就是K倍动态规划减法,

个人也是接触博弈论不久,参考别人的博客才明白点:https://blog.csdn.net/bless924295/article/details/51365505

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX=1000100;
ll a[MAX],b[MAX];
int main()
{
	ll n;
    int k,T=0;
	scanf("%d",&T);
	while(T--)
	{
        scanf("%d%lld",&k,&n);
        a[0]=b[0]=1;
        int i=0,j=0;
        while(n>a[i])
		{
            i++;
            a[i]=b[i-1]+1;
            while(a[j+1]*k<a[i])
                j++;
            if(k*a[j]<a[i])
                b[i]=b[j]+a[i];
            else
				b[i]=a[i];	
        }
        if(n==a[i])
			printf("%lld\n", n-i-1);
		else
			printf("%lld\n",n-i);
    }
    return 0;
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43958964/article/details/98871771

智能推荐

Java高级-----多线程(八)_java 提高controller接口线程优先级-程序员宅基地

文章浏览阅读356次。JAVA高级--多线程_java 提高controller接口线程优先级

【VUE】前端阿里云OSS断点续传,分片上传_vue文件上传 oss-程序员宅基地

文章浏览阅读619次,点赞4次,收藏10次。前端使用Vue2+elementUI分片上传、断点续传文件到阿里云OSS_vue文件上传 oss

vue3+elementPlus el-select 增加全选和取消全选_elmentplus的select多选,点击全部时全部选中-程序员宅基地

文章浏览阅读780次。要求el-select支持多选,并增加全选和取消全选功能,缺点是提交的数据中会有全选这个字段。multiple是实现下拉框多选的属性。_elmentplus的select多选,点击全部时全部选中

【数据结构与算法】栈(Stack)之 浅谈数组和链表实现栈各自的优缺点_堆栈选择链表还是数组-程序员宅基地

文章浏览阅读1.4k次,点赞45次,收藏18次。C语言实现栈结构。栈是一种特殊的线性表,只允许在栈顶(Top)进行插入和删除元素操作,另一端称为栈底,栈中的数据元素遵守后进先出LIFO(Last In First Out)或先进后出的原则。栈的插入操作(Push):称为压栈 或 入栈 或 进栈,。栈的删除操作(Pop):也叫出栈 或 弹栈。_堆栈选择链表还是数组

Python代码写好了怎么运行?_python代码怎么运行-程序员宅基地

文章浏览阅读970次,点赞18次,收藏22次。Python代码写好了怎么运行?相信问这样问题的朋友一定是刚刚入门Python的初学者。本文就来为大家详细讲讲如何运行Python代码。一般来讲,运行Python代码的方式有两种,一是在Python交互式命令行下运行;另一种是使用文本编辑器,在命令行中直接运行。这两种方法各有优缺点,下面我们以hello world来举例,为大家打开Python学习的大门,现在就一起看看吧!

poj1144-程序员宅基地

文章浏览阅读67次。http://poj.org/problem?id=1144求图中割点数目,只是输入处理比较麻烦,由于不知道有多长,所以需要字符输入然后转换成数字 1 #include <stdio.h> 2 #include <string.h> 3 #define SIZE 101 4 #define MIN(a,b) ((a)<(b)?(a):(b)) 5 bool..._poj1144 import java.io

随便推点

基于javaweb的在线小说阅读系统(读者+作者+管理员)(java+ssm+jsp+mysql)_基于java web的在线阅读课程设计与实现-程序员宅基地

文章浏览阅读839次。基于javaweb的在线小说阅读系统(读者+作者+管理员)(java+ssm+jsp+mysql)运行环境Java≥8、MySQL≥5.7、Tomcat≥8开发工具eclipse/idea/myeclipse/sts等均可配置运行适用课程设计,大作业,毕业设计,项目练习,学习演示等功能说明![20220519002739](https://pic1.imgdb.cn/files/52560/project20/20220519002739.jpg)_基于java web的在线阅读课程设计与实现

VMware Centos7 安装Mysql、Node、NVM、Nginx等_centos nvm-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏13次。为啥选择Mysql而不选择Oracle。MySQL一个关系数据库管理系统。中小型数据库。而Oracle是一个对象关系数据库管理系统,它属于大型数据库。其次Mysql的话体积小、速度快、维护成本低,重点它是开源免费的。所以各方面对于我们学习而言Mysql简直不要太贴合,对于前端开发人员来说,会执行sql脚本,会一些基本的CRUD(增加(Create)、读取(Read)、更新(Update)和删除(Delete))语法就差不多了。后面会继续更新后面会继续更新我是Etc.End。_centos nvm

GCC编译过程_在gcc的目录下不能编译-程序员宅基地

文章浏览阅读2.7k次,点赞3次,收藏30次。1. GCC定义目前 Linux 下最常用的 C 语言编译器是 GCC ( GNU Compiler Collection ),它是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C 、 C++ 和 Object C 等语言编写的程序。 GCC 不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java 、 Fortran 、 Pas..._在gcc的目录下不能编译

接口调用-【3】讯飞离线命令词识别Windows/Linux_java调用讯飞离线版语音识别 linux-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏4次。1、离线命令词识别调用主函数package com.iflytek;import com.iflytek.util.Step2_asr_thread;import com.iflytek.util.Step3_audioFormat;import java.util.Scanner;import javax.sound.sampled.AudioFormat;import javax.sound.sampled.AudioSystem;import javax.sound.sampled._java调用讯飞离线版语音识别 linux

关于BIOS的那些事----不要老整三岁的脑筋急转弯,咱们来整点五岁的(中)_整点五岁以下的-程序员宅基地

文章浏览阅读1.8k次。 现在来看第二部分,第二部分其实是把要用的模块文件压缩了一个接一个放在一起就行了。压缩算法的名字叫lh5,一提到算法,国内研究这种“低层次”东西的人就少了(大家都搞往窗体上拖放几个控件就能实现功能的高层次的应用程序)。好在我在国外的网站上无意中发现了lh5压缩算法的源码,用TC写的,我又从网上把TC这个老古董下载下来,最后居然编译成功了(当然做过一些修改),编译生成的文件名叫ar.exe(文中_整点五岁以下的

微信小程序 uniapp+vue课程教学在线学习考试系统-程序员宅基地

文章浏览阅读574次,点赞21次,收藏12次。本在线学习系统使用的框架为开源框架,在开发部署上具有一定的优势,可以帮助程序开发者快速构建基本的程序框架出来,通过调用开源框架可以减少程序开发者编写的代码量,从而提升在线学习系统的安全性和稳定性,这有益于程序开发者完成功能模块的处理和数据调用。本文设计目标为设计在线学习系统,在线学习系统是一种创新的系统,创新点包含了系统框架进行结合,在仔细研究了前后端开源框架之后,最后选择使用开源框架SpringBoot,且在开源框架的基础上实现了在线学习系统。(1)确定项目名称、项目研究内容,开题报告提交及修改。

推荐文章

热门文章

相关标签