
博弈
S atur
要变成萤火虫~
展开
-
Codeforces C. Number Game (数学 / 博弈) (Round #651 Div.2)
传送门题意: Ashishgup 与 FastestFinger 比赛,给出一个初值n,可进行一下操作:如果n > 1,便 n –除以一个大于 1 并且必须是奇数的因数,可以除以自己,如果自己是奇数的话最先不能动的输掉比赛,输出游戏最后的赢家。思路:因为A先操作,若n为奇数,除以自己,A赢。若n为偶数,只要有一个因数是奇数,那么一定存在最大的奇因数,除以这个最大的,一定变为偶数,若不为 2 ,对手减一后 ,则A 一定赢。代码实现:#include <cstdio&g原创 2020-06-25 19:11:02 · 313 阅读 · 0 评论 -
Codeforces B. Sequential Nim (思维 / 博弈) (Round #658 Div.2)
传送门题意: 有n堆石子,每次可从某一堆拿正数颗石子,最后无石子可拿的输掉比赛。先手赢输出"First",否则输出"Second"。思路:若整个序列都是1,那么奇数堆就是先手赢,反正后手赢。若开头连续的1有奇数个,那么后手一定会有办法赢;反之就一定是先手赢。代码实现:#include<bits/stdc++.h>#define endl '\n'#define null NULL#define ll long long#define int long long#def原创 2020-07-23 16:52:34 · 274 阅读 · 0 评论 -
Codeforces C. Game On Leaves (贪心 / “博弈”) (Round #646 Div.2)
传送门题意: 给你一个n个节点的无根树和一个特殊节点x。Ayush和Ashish轮流在树上进行游戏:找到一个叶节点(度大于或等于零)将其删除(包括以其为端点的边),删除特殊点的就是赢家,且Ayush为先手。输出每个测试的赢家名字。思路: 这道题看起来是博弈,其实就是个贪心的思维题若特殊点就是叶节点则直接先手Ayush赢将特殊点看做根节点,必须删除其他n - 2个点后再看谁是先手谁就是赢家(也就相当于n % 2 == 0则最后一局依旧是Ayush先手,否则就是Ashish赢)。代码实现:#i原创 2020-06-02 16:57:08 · 223 阅读 · 0 评论 -
A. Alice and Bob (博弈?思维&暴力)(2021牛客暑期多校训练营1)
传送门题意:Alice先手,与Bob轮流进行拿石子操作,每次从一堆石子中拿出 k(k>0) 颗石子则从另外一堆拿出 k*s(s>=0) 颗石子。谁无法进行操作谁输掉比赛。思路:说实话是不怎么知道这个博弈该怎么写的,听说赛中许多人都是打表过的这题(就很绝)。赛后看其他大佬题解才知道这个题其实是可以暴力卡过去的。我们初始化标记 f[i][j] ==1 表示初始两堆石子为 i和j 时为必赢态,反之为必输态。然后我们枚举 i 和j,再分别枚举 k和s 处理 f[i+k][j+k*s] .原创 2021-07-29 11:29:39 · 298 阅读 · 0 评论