【Foreign】Game [博弈论][DP]】的更多相关文章

传送门 题意简述:m个石子,有两个队每队n个人循环取,每个人每次取石子有数量限制,取最后一块的输,问先手能否获胜. 博弈论+dp. 我们令f[i][j]f[i][j]f[i][j]表示当前第i个人取石子,石子还剩下j个时能否获胜. 显然如果有取法让轮到第(i+1)(i+1)(i+1) modmodmod 2n2n2n 个人有必败状态,那么的当前就是必胜状态. 再令k=(i+1)k=(i+1)k=(i+1) modmodmod 2n2n2n 于是f[i][j]=f[k][j−1]∣f[k][j−2…
题目描述 给出 $n$ 和 $m$ ,$m$ 次询问.每次询问给出 $a$ 和 $b$ ,两人轮流选择:将 $a$ 加一或者将 $b$ 加一,但必须保证 $a^b\le n$ ,无法操作者输,问先手是否必胜. $n\le 10^9$ ,$m\le 10^5$ ,$a\ge 2$ ,$b\ge 1$ ,$a^b\le n$ 题解 博弈论+dp 显然可以想到预处理 $f[i][j]$ 表示 $a$ 为 $i$ ,$b$ 为 $j$ 时先手能否胜利.显然由 $f[i+1][j]$ 和 $f[i][j+…
题目描述 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色.最左边是白色棋子,最右边 是黑色棋子,相邻的棋子颜色不同.   小奇可以移动白色棋子,提比可以移动黑色的棋子,它们每次操作可以移动1到d个棋子.每当移动某一个棋子时, 这个棋子不能跨越两边的棋子,当然也不可以出界.当谁不可以操作时,谁就失败了.小奇和提比轮流操作,现在 小奇先移动,有多少种初始棋子的布局会使它有必胜策略? 输入 共一行,三个数,n,k,d.对于100%的数据,有1<=d<=k<=n&…
题目描述 Yasuo 和Riven对一排\(n\)个假人开始练习.斩杀第\(i\)个假人会得到\(c_i\)个精粹.双方轮流出招,他们在练习中互相学习,所以他们的剑术越来越强.基于对方上一次斩杀的假人数量\(k\),可以斩杀掉剩余假人中位置最靠前的\([1,2k]\)范围内数量的连续假人.最初Yasuo先出招,斩杀\(1\)或\(2\)个假人.Yasuo偷偷把你叫到一边,问在双方都采取最优策略的情况下, 他最多能够获取多少精粹. 输入 第一行一个正整数\(n\),表示假人的个数. 接下来\(n\…
BZOJ_2017_[Usaco2009 Nov]硬币游戏_博弈论+DP Description 农夫约翰的奶牛喜欢玩硬币游戏,因此他发明了一种称为“Xoinc”的两人硬币游戏. 初始时,一个有N(5 <= N <= 2,000)枚硬币的堆栈放在地上,从堆顶数起的第I枚硬币的币值为C_i (1 <= C_i <= 100,000). 开始玩游戏时,第一个玩家可以从堆顶拿走一枚或两枚硬币.如果第一个玩家只拿走堆顶的一枚硬币,那么第二个玩家可以拿走随后的一枚或两枚硬币.如果第一个玩家拿…
Game Time Limit: 20 Sec  Memory Limit: 512 MB Description 从前有个游戏.游戏分为 k 轮. 给定一个由小写英文字母组成的字符串的集合 S, 在每轮游戏开始时,双方会得到一个空的字符串, 然后两人轮流在该串的末尾添加字符,并且需要保证新的字符串是 S 中某个串的前缀,直到有一方不能操作,则不能操作的一方输掉这一轮. 新的一轮由上一轮输的人先手,最后一轮赢的人获得游戏胜利. 假定双方都采取最优策略,求第一轮先手的一方能否获胜. Input 输…
题目大意 不会博弈论的 yww 在和博弈论大师 yxq 玩一个游戏. 有 \(n\) 种卡牌,第 \(i\) 种卡牌有 \(b_i\) 张. yww 会先把所有 \(B=\sum_{i=1}^nb_i\) 张卡分成两堆,每堆 \(\frac{B}{2}\) 张.保证 \(B\) 是偶数. 他们会轮流从第一堆中取卡牌,每次取一张,yww 先取,直到取完为止. 然后他们会轮流从第二堆中取卡牌,每次取一张,yxq 先取,直到取完为止. 取完卡牌后,他们会计算自己的得分.假设某人在某一堆中取了 \(x\…
链接:https://ac.nowcoder.com/acm/contest/338/I 来源:牛客网 题目描述 IG won the S championship and many people are excited, ii and gg are no exception. After watching the game, the two of them also want to play a game. There is now an infinite chessboard with on…
http://poj.org/problem?id=2068 博弈论的动态规划,依然是根据必胜点和必输点的定义,才明白过来博弈论的dp和sg函数差不多完全是两个概念(前者包含后者),sg函数只是mex操作处理多个博弈游戏的一种方法,mdzz要改以前的标签了. f [ i ] [ j ] [ k ] 表示: i队伍在第j个队员取前还剩下k个石头的状态为i队伍必胜还是必输. 代码 #include<cstdio> #include<cstring> #include<algori…
题目大意 A和B两个人在玩一个游戏,这个游戏是他们轮流操作一对整数(x,y). 初始时(x,y)=(1,0),可以进行三种操作: 将(x,y)变成(1,x+y). 将(x,y)变成(2x,y). 将(x,y)变成(3x,y). 给定正整数n (n<=30,000),如果x+y>=n时就不能进行后两种操作. 如果某个人操作后y>=n,他就输掉了 分析 当一个人操作前x+y>=n时,他就输掉了 博弈论问题的一般方法 可以是操作后变成一个子问题 此题中每次操作相当于减少离n的距离 我们考…
2016 ACM-ICPC NEERC F. Foreign Postcards 题意:有一串由C.W组成的字符串,每次截取长度为k(1<=k<=n且k随机)的前缀,如果该前缀首位为W,则该前缀取反(即C->W,W->C),放到桌上,否则直接放到桌上:重复前面步骤直至字符串被截为空.求最后桌上W的个数期望. 思路:定义dp[i]:以s[i]为首的后缀的W个数期望 则dp[i]=Σ{ (dp[k]+"s[i]到s[k-1]的W或C的个数")/(n-i) }(i+1…
题目描述 有三堆石子,它们的石子个数分别为$x,y,z$.$A$和$B$正在博弈,由$A$先手,双方轮流操作.每次操作是指,选择若干堆($1-3$堆)石子,从中各取出相同数量的石子(不能$1$个都不取).不能操作的人失败.请判定是否先手必胜. 输入格式 第一行一个整数$T$,表示数据组数.接下来$T$行,每行三个整数$x,y,z(1\leqslant x,y,z\leqslant 300)$,描述一组数据. 输出格式 每组数据输出一行:$\bullet$若先手必胜,输出$Yes$,否则输出$No…
貌似洛谷的题面是没有翻译的 QWQ 大致题面是这个样子,但是可能根据题目本身有不同的地方 完全懵逼的一个题(果然博弈论就是不一样) 首先,我们考虑把题目转化成一个可做的模型. 我们分别从\(s\)和\(t\)跑两边全图最短路,这样,对于每个点,我们就能得到\(dis[i]\)和\(disn[i]\). 这时候,我们把每个图上的点,看成一个平面上的点\((dis[i],disn[i])\),那么对于\(Alice\)来说,一次就相当于取若干行,\(Bob\)就是取若干列.然后两个人最大化分数差 不…
Description 黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是黑色棋子,相邻的棋子颜色不同. E 小A可以移动白色棋子,小B可以移动黑色的棋子,他们每次操作可以移动1到d个棋子. 每当移动某一个棋子时,这个棋子不能跨越两边的棋子,当然也不可以出界.当谁不可以操作时,谁就失败了. 小A和小B轮流操作,现在小A先移动,有多少种初始棋子的布局会使他胜利呢? Inpu…
登山 Time Limit: 10 Sec  Memory Limit: 256 MB Description 恶梦是一个登山爱好者,今天他来到了黄山 俗话说的好,不走回头路.所以在黄山,你只能往前走,或者往上走. 并且很显然的是,当你走到山脊的时候,你不能够往上走,你只能往前走一步再往上走. 抽象一点而言就是,你可以把黄山视为一个N * N格点图,恶梦从(0,0)开始出发,要走到 (N,N). 当他走到位置(x,y)的时候,它可以往(x + 1,y),或(x,y+1)走. 并且当他走到(x,x…
传送门 Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼. 该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x+K]区间的整数,游戏按顺时针方向进行.每只动物报的数字都不能超过M.若一只动物报了M这个数,它所在的种族就输了.问以第i只动物为游戏的开始,最后哪种动物会赢? Input 第一行输入三个正整数N,M,K. 接下来一行N个正整数,分别表示N只动物的种类,以顺时针的方向给出.0代表羊,1代表狼…
题目传送门(内部题135) 输入格式 第一行包含一个整数$T$,表示数据组数. 对于每组数据,第一行两个整数$h,w$,表示棋盘大小. 接下来$h$行,每行一个长度为$w$的字符串,每个位置由为$o,x,e$中一个.如果这个位置为$e$表示没有硬币,如果是$o$表示正面朝上,否则表示反面朝上. 输出格式 共$T$行,每行一个整数表示小$M$的分数. 样例 样例输入: 12 5exexexeoex 样例输出: 数据范围与提示 $10\%$的数据,保证答案都为$0$或$1$. $30\%$的数据,保…
首先看出终止状态是全都堆在左边或者右边,然后发现黑的向左白的向右是最优策略(如果不能这样了也就该输了) 然后就不会了 参考 http://www.cnblogs.com/CQzhangyu/p/7707746.html 发现黑白之间的距离一定是不断缩小的,就相当于k堆石子,每次从1~d堆里拿走一些,根据nimk,二进制位下每一位的和都是d+1的倍数则先手必输(可以看成高配的巴什博奕) 然后设f[i][j]为前i位用了j石子,用组合数转移:f[i+1][j]=(f[i+1][j]+f[i][j-(…
正题 题目链接:https://www.luogu.com.cn/problem/P2490 题目大意 一个长度为\(n\)的棋盘上放下\(k\)个棋子. 第一个要是白色,下一个要是黑色,在下一个是白色以此类推. 先手操控白,后手操控黑.白色只能往右,黑色只能往左.每次操作的可以移动\(d\)个棋子任意步. 求先手必胜的初始状态数 \(1\leq d\leq k\leq n\leq 10^4,1\leq k\leq 100\)且\(k\)为偶数 解题思路 把两个黑白棋子之间的长度看为石头堆就是一…
序 任何一种具有递推或者递归形式的计算过程,都叫做动态规划 如果你一开始学的时候就不会DP,那么你在考试的时候就一定不会想到用动态规划! 需要进行掌握的内容 1)DP中的基本概念 2)状态 3)转移方程:状态与状态之间的关系 4)无后效性 DP写代码的方式 1)For 2)记忆化搜索  两种转移的方式    1) 顺推 2)逆转 大致的几个过程: 1)根据题意划分阶段 2)根据阶段确定状态 3)根据状态书写方程 一些DP的种类 区间DP 数位DP 状压DP 插头DP(out) 树形DP 背包 博…
还是前置: 动态规划的三种实现方法: 递推,递归,记忆化搜索 然后还是从斐波那契数列开始引入: 两种求斐波那契数列的方法: 1.用其他位置的结果得到自己的结果: 2.用自己的结果算其他的结果: 以上两种方法都需要掌握,不同的题对应不同的写法: 3.记忆化搜索(虽然zhx说不是特别重要但lz比较喜欢写的) 没有记忆化之前:O(f[n])与2^n差不多是一个级别的: 记忆化之后: DP的一些一些要求: 无后效性:所有状态之间组成了一个DAG 阶段性: 转移方程:怎么算这个东西 状态:要算的东西对应的…
博弈论/DP 这是Nim?这不是巴什博奕的变形吗…… 我也不会捉啊,不过一看最多只有20个人,每人最多拿16个石子,总共只有8196-1个石子,范围好像挺小的,嗯目测暴力可做. so,记忆化搜索直接水过去了…… 出口应该很好判断:当前只有一个石子的时候输,石子数<=m[i]+1则赢(保证拿完后只给对方留一个) Source Code Problem: User: sdfzyhy Memory: 1416K Time: 32MS Language: G++ Result: Accepted Sou…
今天是钟神讲课,讲台上照旧摆满了冰红茶 目录时间到: $1. 动态规划 $2. 数位dp $3. 树形dp $4. 区间dp $5. 状压dp $6. 其它dp $1. 动态规划: ·以斐波那契数列为例,简单讲一下dp 1)对于斐波那契数列,有f0=0,f1=1,f2=1……fn=fn-1+fn-2 2)在上面的式子中,我们称f0=0为边界条件.推广到动态规划中,我们称不受其它元素的影响的元素为边界条件 3)在上面的式子中,我们称fn=fn-1+fn-2为转移方程 4)在上面的式子中,我们称f1…
听说KPM初二暑假就补完了啊%%% 先刷Gold再刷Silver(因为目测没那么多时间刷Silver,方便以后TJ2333(雾 按AC数降序刷 ------------------------------------------------------------------------------------------------------- bzoj1597: [Usaco2008 Mar]土地购买  斜率优化DP h升序,w降序. f[i]=min(f[j]+h[i]*w[j+1])…
全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是NOIP难题级别.先明确动态规划里的一些概念: 状态:可看做用动态规划求解问题时操作的对象. 边界条件:不需要.或不能由别的状态推出,且已知.或可算出的状态.递推时就用边界条件推出所有状态. 状态转移方程:由已知状态推出未知状态所用的方式.或原则等,依照它可用已知状态推出未知状态. 动态规划(DP)主要有:线性DP,数位DP,区间DP,树形DP,状压DP和其他DP(难度较高的还有数据结构优化DP,博…
动态规划 DP和前几天学的东西不大一样,动态规划和数据结构相比是一个非常抽象的东西 先来看看斐波那契数列 定义是F0=0,F1=1,Fn=F(n-1)+F(n-2) 0,1,1,2,3,5,8,13,这个数列的定义域是零到正无穷,他有一个边界条件就是F0=0,F1=1, 我们把这个固定的值叫做边界条件 而看一看Fn=F(n-1)+F(n-2),会发现Fn的值是依赖F(n-1)和F(n-2)的,所以这些就不是边界条件,也就是说,边界条件是不需要计算其他斐波那契数列的值就能得到的 Fn=F(n-1)…
今天是钟皓曦老师的讲授~ 今天的内容:动态规划 1.动态规划 动态规划很难总结出一套规律 例子:斐波那契数列  0,1,1,2,3,5,8,…… F[0]=0 F[1]=1 F[[n]=f[n-1]+f[n-2] n>=2 符合动态规划: 1.有边界条件:f[0]=0,f[1]=1,因为前两项不依赖任何斐波那契数列的值 2.有转移方程:F[[n]=f[n-1]+f[n-2] n>=2 3.有状态:f[0],f[1],f[2]……f[n-1],f[n],用已有的状态f[0]=0,f[1]=1来求…
博弈论+dp+概率 提交链接- 题意不是很好懂 Ai 表示剩 i 个石头. A 先手的获胜概率. Bi 表示剩 i 个石头. B先手的获胜概率. 如果想选,对于 Ai: 有 p 的概率进入 Bi−1 :有 1−p 的概率进入 Bi 所以 fi=p∗Bi−1+(1−p)∗Bi 如果想选,对于 Bi: 有 q 的概率进入 Ai−1 :有 1−q 的概率进入 Ai 所以 gi=q∗Ai−1+(1−q)∗Ai 如果不想选, 把 p 变成 1 - p, q 变成 1 - q 即可 为了满足递推关系,我们把…
博弈论+dp 依旧是博弈论的壳子,但问的是最大值,所以要dp 设 dp[i][j] 表示该取 i 号硬币,上一次取了 j 个的先手能取的最大值, 因为每次从小到大枚举复杂度太高,所以我们要从 dp[i][i - 1] 转移,每次新加两个状态即可 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> using n…
博弈论+dp 从未做过博弈论... 思路是这样的,我们倒着考虑,分别设f[i]表示先手选了a[i]后能取得的最大值,g[i]表示先手取了a[i]后后手能获得的最大值 g[i]=f[mx],f[mx]是[i+1,n]中最大的f,因为现在先手选了a[i],那么后手就变成先手了,自然选最大能获得的收益,f[i]=a[i]+g[mx],f[i]钦定了选a[i],然后先手变成了后手,后手变成了先手,那么现在的先手肯定会选f[mx],因为肯定要选最大的,那么现在的后手自然就等于g[mx]了,更新mx当f[i…