ICode9

精准搜索请尝试: 精确搜索
  • 【CF1375F】Integer Game2021-01-22 15:01:58

    题目 题目链接:https://codeforces.com/problemset/problem/1375/F 这是一道交互题。 有三堆石子,个数分别为\(a,b,c\)。游戏的规则如下: 先手每次给定一个数\(k\),后手需要给这三堆石子的某一堆的个数加上\(k\)。 后手不能连续对同一堆石子进行操作。 当存在两堆石子个数相等时,先手

  • 【数学】博弈模型2021-01-17 23:02:44

    Bash博弈 一堆石子,总共n个,两个人轮流取,每次取[1,m]个,不能操作的人输。 剩余石子为[1,m]时,显然是先手必胜,必胜策略是全取。 剩余石子为m+1时,是先手必败,无论第一步如何操作第二步都可以全取。 那么从[m+1+1,m+1+m]都是先手必胜,因为可以一步取到先手必败态。 故剩余石子为k(m+1)时,先

  • [学习笔记] 博弈论2021-01-08 09:03:13

    Nim 游戏 定义 有 \(n\) 堆石子, 每堆有 \(a_i\) 个石子, 每次从一堆中取任意个石子, 无法操作者败 结论 先手必胜的条件: \(\bigoplus_{i = 1}^n a_i \not = 0\), SG 函数 定义 设一个局面为 \(A\), 它的后继状态集合为 \(E_A\), 则 \[SG(A) = \begin{cases} 0 &E_A = \emptyse

  • Leetcode题库:动态规划在猜石子游戏中的应用(Python语言)2020-12-17 11:33:40

    动态规划 关于什么是动态规划,这里不再赘述,网上有大把教程和概念,阅读本文前提是你对动态规划已经有了初步的认识。 概括来说,动态规划有四个步骤: 定义状态。寻找状态转移方程状态压缩(如果可行的话)得出结果 LeetCode上的猜石子游戏 LeetCode有很多猜石子的游戏,大多是角色都能发

  • LC5627 石子游戏VII2020-12-13 21:04:58

    区间DP+博弈论 题目描述: 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获得与该行中剩余石头值之 和 相等的得分。当没有石头可移除时,得分较高者获胜。 鲍勃发现他总是输掉游戏

  • 算法——石子游戏(区间DP,博弈)2020-12-13 14:57:24

    简介 石子游戏其实就是多人博弈,如何求最优结果。它存在很多变种,比如不同的取石方式,不同的计算输赢的方式,在这里做一个汇总。 只能从两端取 石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。 有 n 块石子排成一排。每个玩家的回合中,可以从行中 移除 最左边的石头或

  • 取石子(0-1背包问题变形)2020-12-06 18:59:05

    思路:用dp[i]表示,总石子数为i时最少需要拿多少次石头,最后从k到0进行判断次数在m以内的最大石头数即可 题目链接 #include<bits/stdc++.h> using namespace std; const int N = 105; int arr[N]; int dp[3005]; const int inf =0x7ffffff; int main(){ int n,m,k; cin

  • 1729石子合并问题(DP)2020-12-05 18:35:37

    Description 在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。对于给定n堆石子,计算合并成一堆的最小得分

  • 区间DP(石子合并) & 计数类DP(整数划分)2020-12-04 12:58:21

    区间DP AcWing 282. 石子合并 设有N堆石子排成一排,其编号为1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,合并后与这两堆石子相邻的石子将和新堆相邻,合并时由于选择的顺序不同

  • 石子合并2020-11-12 02:31:28

    区间dp问题,其基本思路就是 对于每段区间,他们的最优值都是由几段更小区间的最优值得到,是分治思想的一种应用,将一个区间问题不断划分为更小的区间直至一个元素组成的区间,枚举他们的组合 ,求合并后的最优值。设F[i,j](1<=i<=j<=n)表示区间[i,j]内的数字相加的最小代价最小区间F[i,i]=0(一

  • 【数学】SG函数2020-11-10 11:32:30

    取石子游戏,每次移动可以取 \(1,2,k\) 个石子,无法移动则输。 int k; int sg[1005]; int SG(int x) { if(sg[x] != -1) return sg[x]; int res = 0; if(x >= 1) res |= 1 << SG(x - 1); if(x >= 2) res |= 1 << SG(x - 2); if(x &

  • 【洛谷P5675】取石子游戏2020-10-12 21:01:52

    题目 题目链接:https://www.luogu.com.cn/problem/P5675 Alice 和 Bob 在玩一个古老的游戏。现在有若干堆石子,Alice 和 Bob 轮流取,每次可以选择其中某一堆的石子中取出任意颗石子,但不能不取,谁先取完使得另一个人不能取了算赢。 现在场地上有\(N\)堆石子,编号为 \(1\) 至 \(N\)。Alic

  • Codeforces Round #666 (Div. 1)2020-10-03 11:35:16

    Codeforces Round #666 (Div. 1) A-Multiples of Length 题意 给一个序列,每回可以选择一个区间,并给这个区间的每个数都减去这个区间长度的倍数(每个减去的数可以不同,但都是区间长度的倍数)。 构造一种方案使得每个位置的数都被减成 0. 并且只能选择三个区间。 题解 小清新智力题。

  • POJ 2315(Nim k 博弈)2020-10-02 19:31:23

    题意 问题转化成, 有 \(N\) 堆石子, 博弈双方每次可以选择不超过 \(M\) 堆, 每堆取不超过 \(X\) 个, 总的取石子数至少为一. 问胜利方. 题解 对于单堆来说是一个巴什博弈, \(SG\) 值为石子数模 \(X+1\). 我们回忆 \(M=1\) 时的 \(Nim\) 博弈, 它利用了这样的性质: 设石子数为 \(

  • 10147. 「一本通 5.1 例 1」石子合并2020-09-29 19:00:58

       区间合并石子 每次合并相邻的两堆,求最大和最小能获得的值 cao。。一开始直接排序然后贪心,想了半天不知道哪里错了,原来是我眼瞎了抱歉 然后区间DP一下  不会写循环  DP只会写搜索 嘻嘻 #include<bits/stdc++.h> #define fi first #define se second #define io std::ios::

  • [LOJ10242] 「一本通 6.7 例 2」取石子游戏 2 - SG定理,SG函数2020-09-13 13:33:31

    Description ICG 游戏,有 \(n\) 堆石子,数量分别为 \(x_1,x_2,...,x_n\),每次操作选一堆,并从这堆中取走若干石子但不能不取,取走最后一颗石子的人胜利。问先手是否有必胜策略。 Solution 根据 SG 定理,我们只需要将每一个独立游戏(即每一堆)的 SG 值异或起来,即可得到合游戏的 SG 值。 对

  • GarsiaWachs算法2020-09-07 21:32:27

    在一个操场上摆放着一排 NN 堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的 22 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。 试设计一个算法,计算出将 NN 堆石子合并成一堆的最小得分。 输入格式 第一行一个整数 NN。 接下来 NN 行,第 

  • P3235 [HNOI2014]江南乐2020-09-03 21:33:37

    题目描述 小A是一个名副其实的狂热的回合制游戏玩家。在获得了许多回合制游戏的世界级奖项之后,小A有一天突然想起了他小时候在江南玩过的一个回合制游戏。 游戏的规则是这样的,首先给定一个数F,然后游戏系统会产生T组游戏。每一组游戏包含N堆石子,小A和他的对手轮流操作。每次操作时,

  • P4279 [SHOI2008]小约翰的游戏(Anti_nim)2020-09-03 07:33:42

    题面 题目描述 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有 \(n\) 堆石子,小约翰和他的哥哥轮流取石子,每个人取的时候,可以随意选择一堆石子, 在这堆石子中取走任意多的石子,但不能一粒石子也不取,我们规定取到最后一粒石子的人算输。小约翰相当固执,他坚持认为先取的人有很大 的

  • WAR的写题集哦~2020-08-31 03:31:36

    前言 建立这个文档呢,主要是因为感觉做了题目很快又忘掉了,或者做到某一道题目的时候觉得跟以前自己做过的某道题目很像就想找一找,但是却找不到jhlp。 因此这个文档应运而生啦~一方面增加自己做题的成就感,另一方面方便自己查看和查询。 按时间顺序 2020/08/31 CF 1397A Juggling Let

  • Nim Game2020-07-23 17:35:12

    题目概述         有n堆石子,每堆的数量分别为\(a_1,a_2,\cdots,a_n\),两个人轮流取石子,每次可以从一堆石子中取任意数量的石子,交替进行,最后没法取石子的输,两人都采取它们情况下的最优策略,判断是先取的输还是后取的输. 解法         如果只有一堆石子,显然

  • [CF603C] Lieges of Legendre - SG函数2020-07-17 09:34:55

    Description 有 \(n\) 堆石子,每次可以对一堆石子进行操作,如果当前石子是偶数,那么可以选择将这 \(2x\) 个石子分成 \(k\) 堆石子数为 \(x\) 的石子堆,还有一种没有前提的操作是取走当前堆的一个石子,问先手赢还是后手赢。 Solution 若 \(x\) 为偶数,则 \(SG(x)=\text{mex}(\{ SG(\frac

  • NOI1995]石子合并 题解2020-07-10 17:02:15

    NOI1995]石子合并 题解 题面 这是一道区间dp经典模板题 思路 - 容易想到设数组 \(Fmax[i][j],Fmin[i][j]-->\) 表示区间 \(i\)-\(j\) 的最大最小分数 - 分析样例,考虑状态转移方程 - Fmax[1][1]=a[1],Fmax[2][2]=a[2] - Fmax[1][2]=Fmax[1][1]+Fmax[2][2]+a[1-2] Fma

  • 博弈论题目集 (持续更新)2020-06-30 19:40:55

    巴什博弈  HDU 1846 1、  本游戏是一个二人游戏; 2、  有一堆石子一共有n个; 3、  两人轮流进行; 4、  每走一步可以取走1…m个石子; 5、  最先取光石子的一方为胜; 这个应该比较好推: 如果 n % (m+1)==0 后手胜利 否则 先手胜利 #include<cstdio> #include<cstring>

  • 【数学】C081_LC_移动石子直到连续(脑筋急转弯 + 分类讨论)2020-06-28 11:08:31

    一、Problem 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。从位置 x 或者是位置 z 拿起一枚石子,并将该石子移动到某一整数位置 k 处,其中 x < k < z 且 k != y。 当你无法进行任何移动时,即,这些石子的位置连续时,

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有