【算法】博弈论
文章平均质量分 65
cz_xuyixuan
这个作者很懒,什么都没留下…
展开
-
【CodeForces】CodeForces Round #460 (Div. 2) 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【A】Supermarket【思路要点】选取单价最低的店进行购买。时间复杂度\(O(N)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 5005;template <typename T> void read(T &x) { ...原创 2018-02-13 16:20:14 · 453 阅读 · 0 评论 -
【AtCoder】AtCoder Regular Contest 094 题解
【比赛链接】点击打开链接【题解链接】点击打开链接【C】找到原序列的两个中位数\(X\),\(Y\),不妨令\(X≤Y\)。若\(X_i≤X\),\(B_i=Y\),否则\(B_i=X\)。时间复杂度\(O(NLogN)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 200005;template...原创 2018-06-12 18:23:40 · 343 阅读 · 0 评论 -
【CodeForces】Manthan, Codefest 18 (Div. 1 + Div. 2) 题解
【比赛链接】 点击打开连接 【题解链接】 点击打开链接 **【A】**Packets 【思路要点】 可以用 1,2,4,...,2i,N−2i+1+11,2,4,...,2i,N−2i+1+11,2,4,...,2^i,N-2^{i+1}+1 构造一组最优的可行方案。 其中 iii 为使得 N−2i+1+1&amp;gt;0N−2i+1...原创 2018-09-05 11:34:15 · 344 阅读 · 0 评论 -
【LOJ2327】「清华集训 2017」福若格斯
【题目链接】点击打开链接【思路要点】 Matrix67Matrix67Matrix67 一篇关于 surreal&nbsp;numbersurreal\ numbersurreal&nbsp;number 的博客 。考虑用 surreal&nbsp;numbersurreal\ numbersurreal&nbsp;number 解决不平等博弈问题。手动绘制转移图,计算出各个...原创 2018-10-12 13:08:46 · 820 阅读 · 0 评论 -
【CodeForces】CodeForces Round #406 (Div. 1) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Berzerk【思路要点】博弈搜索,将状态按先后手拆点,建出游戏图。若一个点存在出边指向必败态,则该点为必胜态。若一个点所有出边指向必胜态,则该点为必败态。不满足上述两点的点为平局态。用一个类似拓扑排序的过程实现即可。时间复杂度 O(N2)O(N^2)O(N2) 。【代码】#inclu...原创 2018-09-27 18:13:18 · 332 阅读 · 0 评论 -
【CodeChef】September Challenge 2018 (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接**【ANDSQR】**AND Square Subsegments【思路要点】离线询问,按左端点排序。枚举区间的左端点 lll ,区间 [l,i][l,i][l,i] 的 andandand 和至多变化 O(LogV)O(LogV)O(LogV) 次,二分找到分界点,并找到其中是完全平方数的。每一段 andandand 和相同的区间 [l,i][l...原创 2018-10-06 16:04:18 · 319 阅读 · 0 评论 -
【CodeForces】Lyft Level 5 Challenge 2018 - Elimination Round (Div. 1 + Div. 2) 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**King Escape【思路要点】皇后会攻击到 888 条直线,其中 444 条斜向的可以跨过,因此可以忽略。判断起始点和目标点是否在其余 444 条线分割出的同一个联通块内即可。时间复杂度 O(1)O(1)O(1) 。【代码】#include<bits/stdc++.h>us...原创 2018-10-10 15:16:22 · 361 阅读 · 0 评论 -
【CodeForces】CodeForces Global Round 1 题解
【比赛链接】点击打开连接【题解链接】点击打开链接**【A】**Parity【思路要点】分 bbb 的奇偶性讨论即可。时间复杂度 O(k)O(k)O(k) 。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;typedef long long l...原创 2019-02-14 13:55:38 · 847 阅读 · 2 评论 -
【省内训练2019-06-02】互膜
【思路要点】记 aia_iai 为卡牌的当前价值, Mini=Min{ai,ai+1,…,aN}Min_i=Min\{a_i,a_{i+1},\dots,a_N\}Mini=Min{ai,ai+1,…,aN} 。引理: Ans=Min1+∑i≡1 (mod 2)Max{ai,Mini+1}Ans=Min_1+\sum_{i\equiv1\ (mod\ 2)}M...原创 2019-06-04 17:00:39 · 271 阅读 · 0 评论 -
【省内训练2019-06-06】纳什均衡
【思路要点】显然最终会达到一个叶子结点,考虑枚举它,并枚举其权值 (i,j)(i,j)(i,j) 。想要使得状态纳什均衡,则要求任何玩家不能够通过改变自身的决策使得自己的权值增加,即选择进入路径上任意一点的另一个子树均不能得到更大的权值。则记 auxi,0/1,jaux_{i,0/1,j}auxi,0/1,j 表示 iii 子树中先 / 后手玩家任意改变自己的决策可以到达 jjj 的状...原创 2019-06-11 10:33:35 · 464 阅读 · 0 评论 -
【CodeForces1045F】Shady Lady
题目链接点击打开链接题目解法首先考虑对于一个给定的多项式,如何判定其是否存在下界。由于要考虑下界的问题,变量 x,yx,yx,y 中至少要有一个趋向于无穷。特判 x,yx,yx,y 中存在 000 的情况,接下来考 x,yx,yx,y 绝对值为正的情况。考虑枚举实数 kkk ,使得 ∣x∣k=∣y∣|x|^k=|y|∣x∣k=∣y∣ ,那么多项式中每一项的绝对值应当等于 ∣x∣|x|∣...原创 2019-08-28 14:00:04 · 308 阅读 · 0 评论 -
【CodeForces457F】An easy problem about trees
题目链接点击打开链接题目解法不难想到二分答案,二分答案后,问题转化为了权值均为 0/10/10/1 的版本。我们称一棵非叶节点数为奇数的树为奇树,非叶节点数为偶数的树为偶树。对于一棵奇树,先手玩家拥有最后一次操作的权利,因此,奇树先手胜,当且仅当先手可以让两棵子树中的至少一棵变为己方权值。考虑一棵奇树拥有两棵偶子树的情况,此时先手胜当且仅当在任意一颗偶子树内先手胜。这是因为当后者成立时...原创 2019-08-31 21:15:10 · 671 阅读 · 0 评论 -
【BZOJ1228】【SDOI2009】E&D
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1005int get(int x, int y) { if (x % 2 == 1 && y % 2 == 1) return 0; else return get((x + 1) / ...原创 2018-04-19 18:23:28 · 200 阅读 · 0 评论 -
【BZOJ1443】【JSOI2009】游戏Game
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 105#define MAXP 10005#define INF 1e9struct edge {int dest, flow; unsigned pos; };vector <edge> ...原创 2018-04-19 17:33:21 · 232 阅读 · 0 评论 -
【BZOJ1022】【SHOI2008】小约翰的游戏John
【题目链接】点击打开链接【思路要点】SJ定理:若把SG游戏中SG函数为0的状态定义为必胜状态,那么状态是先手必胜当且仅当下述条件同时成立或同时不成立:1、\(SG_{S}=0\)2、\(\forall x\in S\ SG_{x}≤1\)然后就做完了。时间复杂度\(O(TN)\)。【代码】#include<bits/stdc++.h>using namespace std;#def...原创 2018-02-18 20:18:04 · 251 阅读 · 0 评论 -
【CodeForces】CodeForces Round #468 (Div. 1 + Div. 2) 题解
【比赛链接】Div.1Div.2【题解链接】点击打开链接【Div.2 A】Friends Meeting【思路要点】模拟两个角色向中间移动即可。时间复杂度\(O(B-A)\)。【代码】#include<bits/stdc++.h>using namespace std;const int MAXN = 100005;template <typename T> void...原创 2018-03-06 15:41:31 · 363 阅读 · 0 评论 -
【BZOJ1299】巧克力棒
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005int a[MAXN], n;bool solved;void work(int pos, int sum, int cnt) { if (pos > n) { if (sum == ...原创 2018-04-14 15:05:10 · 380 阅读 · 0 评论 -
【BZOJ2463】【中山市选2009】谁能赢呢?
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005int main() { int n; for (cin >> n; n; cin >> n) { if (n & 1) cout << "Bob"...原创 2018-04-14 17:38:06 · 164 阅读 · 0 评论 -
【BZOJ1115】【POI2009】石子游戏Kam
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 5005int a[MAXN];int main() { int T; cin >> T; while (T--) { int n; cin >> n; for (int...原创 2018-04-16 15:53:25 · 206 阅读 · 0 评论 -
【BZOJ2819】Nim
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 500005#define MAXLOG 20struct Binary_Index_Tree { int value[MAXN], n; void modify(int x, int y, int v...原创 2018-04-16 18:25:49 · 242 阅读 · 0 评论 -
【BZOJ1188】【HNOI2007】分裂游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 105int sg[MAXN], value[MAXN];bool mark[MAXN];int main() { sg[0] = 0; for (int i = 1; i < MAXN; i+...原创 2018-04-11 15:56:43 · 231 阅读 · 0 评论 -
【BZOJ1874】【BeiJing2009 WinterCamp】取石子游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 1005int a[MAXN], b[MAXN];int sg[MAXN], mark[MAXN];int n, m, num;int main() { scanf("%d", &n); f...原创 2018-04-12 14:57:41 · 312 阅读 · 0 评论 -
【BZOJ1457】棋盘游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 105#define MAXV 405int sg[MAXN][MAXN], mark[MAXV];int n, T, num;bool func(int x, int y) { return x =...原创 2018-04-12 15:55:47 · 279 阅读 · 0 评论 -
【BZOJ4035】【HAOI2015】数组游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005int n, m;int num, mark[MAXN];int a[MAXN], b[MAXN];int get(int x) { if (x <= m) return a[x];...原创 2018-04-12 21:10:21 · 261 阅读 · 0 评论 -
【BZOJ2281】【SDOI2011】黑白棋
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 10005#define MAXK 20#define P 1000000007int n, k, d;long long fac[MAXN], inv[MAXN], ans[MAXK + 1][MAX...原创 2018-04-18 20:05:32 · 343 阅读 · 0 评论 -
【BZOJ2437】【NOI2011】兔兔与蛋蛋
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 45#define MAXK 1005#define MAXP 1605#define INF 1e9struct edge {int dest, flow; unsigned pos; };vect...原创 2018-04-19 13:19:38 · 315 阅读 · 0 评论 -
【BZOJ4730】Alice和Bob又在玩游戏
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005#define MAXP 20000005#define MAXLOG 20vector <int> a[MAXN];int sg[MAXN], n, m, root[MAXN]...原创 2018-04-13 20:12:11 · 1972 阅读 · 0 评论 -
【BZOJ1982】【SPOJ2021】Moving Pebbles
【题目链接】点击打开链接【思路要点】补档博客,无题解。【代码】#include<bits/stdc++.h>using namespace std;#define MAXN 100005int a[MAXN];int main() { int n; scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("...原创 2018-04-14 10:16:36 · 181 阅读 · 0 评论 -
【AtCoder】AtCoder Grand Contest 023
比赛链接点击打开链接官方题解点击打开链接Problem A. Zero-Sum Ranges即计算前缀和相同的点对数,可以用 std::map 简单实现。时间复杂度 O(NLogN)O(NLogN)O(NLogN) 。#include<bits/stdc++.h>using namespace std;const int MAXN = 2e5 + 5;typedef...原创 2019-09-11 19:23:59 · 269 阅读 · 0 评论