POJ - 2068 Nim NP状态定理

【小组专题二:博弈论入门综述(1)】NP状态 | SG函数 | 巴什博奕、威佐夫博弈、斐波那契博弈、Nim游戏、SJ定理 博弈论综述【1】前言博弈与博弈论博弈树NP状态SG函数(Sprague-Grundy)Sprague-Grundy Theorem巴什博奕 Bash Game威佐夫博弈扩展威佐夫博弈斐波那契博弈Nim博弈拓展Nim博弈与Nim博弈的各个变种(1)拓展维度(2)先手怎么取(3)求先手一开始有多少种取得方式能够赢(4) 变形:有拿取上限(NYOJ-135)(5) 阶梯博弈(**Nim Staircase**博弈)最后的最后:SJ定理与Anti-SG游戏各种练习题啦!可能下期会将的内容(?) 博弈与博弈论 阅读详情

题目:有S个石子,有两个队,每个队有n个人,每个人每次有数量限制,取最后一个石子的输,0,2,4,6,...属于1队,其余的属于2队,按0,1,2,3,4,..,2n,0,1,2,....的顺序轮流操作,问先手必胜还是先手必败,1队先手。

思路:利用NP状态定理解决

代码:

#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 0x3f3f3f3f
#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=1e4+5;
int sg[25][maxn];
int num[25];
int n,S;
int get_sg(int id,int stone){
    if(sg[id][stone]!=-1)
        return sg[id][stone];
    if(stone==1) return sg[id][stone]=0;
    if(stone==0) return sg[id][stone]=1;
    sg[id][stone]=0;
    for(int i=1;i<=num[id]&&stone-i>=0;i++)
        if(get_sg((id+1)%(2*n),stone-i)==0)
            sg[id][stone]=1;
    return sg[id][stone];
}
int main(){

    while(~scanf("%d",&n)){
        if(!n) break;
        scanf("%d",&S);
        for(int i=0;i<2*n;i++)
            scanf("%d",&num[i]);
        mm(sg,-1);
        int ans=get_sg(0,S);
        if(ans>0) printf("1\n");//先手必胜
        else printf("0\n");//先手必败
    }
    return 0;
}


(精读)揭示多元时间序列的高阶组织 时间序列分析已经被证明是刻画生物学、神经科学和经济学中的一些现象以及理解它们的一些潜在动力学特征的有力方法。尽管针对多元时间序列的分析已经提出了很多方法,但大多数方法都忽略了非成对相互作用对涌现动力学的影响。在这里,我们提出了一个新的框架来刻画多元时间序列中高阶依赖关系的时间演化。利用网络分析和拓扑学,我们表明,与传统的基于成对统计的工具不同,我们的框架鲁棒地区分了耦合混沌映射的各种时空状态,包括混沌动力学阶段和各种类型的同步。 阅读详情

相关推荐

编程_三大编程思想:POP、OOP、AOP

简单介绍POP、OOP、AOP三大编程思想的区别和优缺点~

mikimo的博客 3895

Calendar Game HDU - 1079(博弈 NP状态定理)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1079 非常经典的 NP状态博弈,有三种方法,记忆化搜索,逆序递推,找规律。 NP状态定理:P是“胜利终止状态”或者它的一切后继状态都是N状态,N是“失败终止状态”或者至少拥有一个后继状态是P状态。 也就是说后继状态为P的一定为N状态,不存在后继状态为N的为P状态。 进行记忆化搜索 将年份-1900...

呼吸 388

用RK3588+FPGA搞定Cameralink高速相机?这份保姆级硬件选型与接口配置指南请收好

本文详细介绍了如何利用RK3588与FPGA构建Cameralink高速相机系统,涵盖硬件选型、接口配置及性能优化等关键步骤。通过异构计算架构和精准的带宽分配,实现工业视觉检测和科研成像领域的高效解决方案,特别适合需要实时处理的复杂应用场景。

weixin_30493401的博客 642

POJ - 2599 A funny game NP状态定理

题目:有一棵无向树,从某个结点出发,两个人轮流移动,走过的结点不能再走,不能移动的人输。判断先手必胜还是先手必败,如果先手必胜,输出必胜到达的节点。 思路:利用NP状态定理,把起点的SG值算出来。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #i

ACVevtor的博客 895

【Linux0.11代码分析】之 系列文章链接汇总(全)

【Linux0.11代码分析】00 之 系列文章链接汇总(全)

|~~~热爱生活、努力学习的小伙汁~~~| 1449

【100%通过率】2023华为od机试C卷【围棋的气】Python 实现

围棋棋盘由纵横各19条线垂直相交组成,棋盘上一共19 x 19 = 361 个交点,对奔双方一方执白棋,一方执黑棋,落子时只能将棋子置于交点上。 “气”是围棋中很重要的一个概念,某个棋子有几口气,是指其上下左右方向四个相邻的交叉点中,有几个交叉点没有棋子,由此可知:

MISAYAONE的博客 1855

ZOJ - 3057 Beans Game NP状态定理

题目:有3堆石子,分别有a,b,c个石子,两个游戏者轮流操作,每次可以选择取走某一堆x个石子,或选择某2堆石子在2堆石子中取走相同数目的石子。问先手必胜(输出1),还是先手必败(输出0)。 思路:利用NP状态定理,把所有状态预处理出来 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #

ACVevtor的博客 616

嵌套学习 (Nested Learning, NL):赋予AI持续学习能力的革命性范式

嵌套学习(Nested Learning, NL)的核心哲学在于彻底颠覆传统深度学习中将模型架构(Architecture)与优化算法(Optimization)视为两个独立组件的“扁平化”视角 。传统方法通常将神经网络的结构设计和其训练过程分离开来,模型架构是预先定义好的静态蓝图,而优化算法(如SGD、Adam)则是一个外部的、统一的规则引擎,负责在训练期间调整模型参数 。这种分离的视角隐藏了模型内部不同组件之间复杂的梯度流和动态更新过程,将整个学习系统视为一个单一层次的优化问题。然而,嵌套学习范式提出,

步子哥的博客 487

HDU 1079 Calendar Game(NP状态交替)

It's a easy Game Theory...... 网上是这么说的,思想到时不难,但操作起来自己遇到些麻烦。作为一只博弈论入门级别弱脊,于是来写一篇题解总结一下吧,虽然是自己模拟出来的,但中间还是遇到了一丝丝麻烦。大家都知道,所有的后继状态是N状态的某个状态叫做P状态,后继状态中存在一个或多个状态为P状态的某个状态叫做P状态,哎,当时写的时候不知道咋想的,写×了,于是WA了好多次,但今天

yo_bc的博客 487

uniapp [全端兼容] - 实现省市区选择器三四级联动组件,uniapp选择地址自定义省市区三级联动插件,弹框式多级联动选择器区域选择(全平台兼容苹果安卓App、支付宝微信小程序、移动端H5网页)

uni-app省市区选择器,省市区街道三级四级联动选择器,uniapp自定义多列选择器省市两级联动,uniapp picker组件实现多级联动,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniApp选择器省市区县街道乡镇,uniapp实现省市区选择联动,uniapp城市三级联动(自定义组件)_uniapp三级联动,picker插件省市区联动,uniapp小程序省市区选择器,uni-app 省市区街道的四级联动选择,uniapp怎样实现省市区地址三级联动uni

🏆 前端领域优质创作者 1万+

基于风机和水轮机互补发电系统的Simulink仿真

随着全球对清洁能源的需求不断增长,风力发电和水力发电作为两种重要的可再生能源发电方式,受到了广泛关注。风机和水轮机互补发电系统结合了两者的优势,能够在不同的自然条件下稳定地输出电能,提高能源利用效率和供电可靠性。本文将详细介绍风机和水轮机互补发电的原理,包括风力发电原理、水力发电原理以及两者互补的机制和优势,并通过相关数学公式进行深入分析。水轮机也有其特定的特性曲线,包括流量 - 水头曲线、功率 - 流量曲线等。在不同的水头和流量条件下,水轮机的输出功率会发生变化。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 167

NP、OSPF链路状态数据库

OSPF是一种基于链路状态的动态路由协议,每台OSPF路由器都会生成相关的LSA,并将这些LSA通告出去。路由器收到LSA后,会将它们存放在链路状态数据库LSDB中。 LSA有多种不同类型,不同类型的LSA的功能和作用是不同的。 Type-1 LSA(Router LSA):每台路由器都会产生,用来描述路由器的直连链路状态和开销值。Type-1 LSA只能在所属区域内部泛洪,不能泛洪到其它区域。 Type-2 LSA(Network LSA):它是由DR产生的,主要用来描述该DR所在网段的网络掩码以及该网段

weixin_44551911的博客 1093

C++软件异常分析概述

本文将详细讲述Windows系统中软件异常的分类以及常用的排查方法,给大家提供一个借鉴与参考。

dvlinker的技术专栏 4万+

(博弈)NP图法kiki's game

kiki's game Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 40000/10000 K (Java/Others) Total Submission(s): 9543    Accepted Submission(s): 5725 Problem Description Recently kiki ha

昨日明眸 1282

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

POJ - 2311 Cutting Game SG函数

题目:给你一个w*h的矩形,每次可以选择横向或纵向切割矩形,将其分成2个矩形,N次操作后,就会有N+1个矩形,谁先切割出1*1谁就获胜。 思路:谁先切割出1*1谁就胜,那么就是说谁切割出1*x或x*1谁就输了。然后求SG函数就可以了。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #

ACVevtor的博客 977

jre9下载 jdk9

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

HDU - 1527 取石子游戏

题目: 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数

ACVevtor的博客 947

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

HDU - 2177 取(2堆)石子游戏 威佐夫博弈

题目: 有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。如果你胜,你第1次怎样取子?  Input输入包含若干行,表示若干种石子的初始情

ACVevtor的博客 796

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

题目:有n个石子,两个游戏者轮流操作,第一个操作的人最多能拿走n-1个石子,以后,每个游戏者最多能拿走前一个游戏者拿走数目的k倍,如果先手必败输出lose,否则输出必胜的情况下第一步拿走的石子数。 (2 思路:k=1时必败态是2^i。k=2时必败态是斐波那契数列。k>=3时要构造数列,将n写成数列中一些项的和,使得这些被取到的项的相邻两个倍数差距>k 那么每次去掉最后一个1 还是符合上面的

ACVevtor的博客 753

HDU - 1524 A Chess Game 有向无环图上的博弈

题目:在有n个顶点的有向无环图上玩游戏,一些顶点上面有象棋,游戏者轮流操作,每次可以选择一个象棋将其移动到他的后继节点,不能进行操作的人输,问先手必胜还是先手必败。 思路:把节点的sg值全部求出来就行了。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #includ

ACVevtor的博客 634

HDU - 1846 Brave Game

题目: 游戏是这样定义的:  1、  本游戏是一个二人游戏;  2、  有一堆石子一共有n个;  3、  两人轮流进行;  4、  每走一步可以取走1…m个石子;  5、  最先取光石子的一方为胜;  如果游戏的双方使用的都是最优策略,请输出哪个人能赢。  思路:我们可以发现sg[n]=n%(m+1) 代码: #pragma comment(linker, "/STAC

ACVevtor的博客 622

HDU - 3094 A tree game 树的删边博弈

题目:有一棵树,每一次操作有两步,第一步选择一条边删除,第二步把没有和根相连的边和点全部删除。不能进行操作的人输。 思路:每一个节点的sg值都是其子节点的sg值加1的异或和 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #incl

ACVevtor的博客 591

HDU - 1847 Good Luck in CET-4 Everybody!

题目: 总共n张牌;  双方轮流抓牌;  每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…)  抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;  假设Kiki和Cici都是足够聪明,并且每次都是Kiki先抓牌,请问谁能赢呢?  思路:求出n的sg值,sg>0先手必胜,sg=0先手必败 代码: #pragma comment(linker, "/STACK:1024

ACVevtor的博客 583

POJ - 3317 Stake Your Claim 极大极小搜索+alpha-beta剪枝+记忆化搜索

题目:给出一个n*n包含0或1或.的矩阵,两个依次找一个空格子,放入0和1,最终看连通0多还是连通的1多,得分是一个选手的最大连通数减去另一个选手的。问当前局面的操作者能够得的最大的分数,及最大分数下最小字典序的操作。 思路:有的说alpha-beta剪枝和记忆化搜索不能一起使用,有的说只要把参数记下来就可以一起用   代码: #pragma comment(linker, "/STACK:

ACVevtor的博客 564

UVALive - 3668 A Funny Stone Game

题目:David 玩一个石子游戏。游戏中,有 n 堆石子,被编号为 0..n-1。两名玩家轮流取石子。 每一轮游戏,每名玩家选取 3 堆石子 i,j,k(i 思路:利用SG函数来做。可以把每个石头看作是独立的游戏,那么对于某个在第i位的石头,它的后续状态是所有的在第j、k位的两个石头,这两个石头也是独立的游戏,那么sg[i] = mex{sg[j] ^ sg[k]},对于每个位置的sg[i]可以

ACVevtor的博客 562

HDU - 2999 Stone Game, Why are you always there? 求sg值

题目:给出一串连续的K个石头,一个集合allow,每次取出若干个连续的石头(数量必须为集合allow中的),最后取完的获胜,问有没有必胜策略。 思路:求出sg值 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #i

ACVevtor的博客 555

ZOJ - 1039 Number Game 状态压缩

题目:2-20这19个数字的游戏。每取走一个数之后,这个数的倍数便不能再取,而且某两个取过的数的倍数的和,也不能再取。给出当前可取数字的状态,问当前状态是不是先手必胜状态。如果是,输出取法 思路:利用NP状态定理和状态压缩做。 代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #incl

ACVevtor的博客 535
上一篇: POJ - 1678 I Love this Game! 记忆化dp
下一篇: POJ - 2599 A funny game NP状态定理
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值