合集-博弈
摘要:原题链接 题解 1.在一次op后,哪些东西发生了变化?哪些东西没变? 2.题目要求当一个u都没有的时候先手输,那么我一次op能减几个u? 3.通过分类讨论发现一次op总是使u的数量加减一个奇数,所以如果alice要赢,那么起始u的数量必须是奇数 code #include<bits/stdc++.h
阅读全文
摘要:原题链接 题解 突破口:我要让bob早点没得减,我肯定选最小的那个 code #include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; int x; cin
阅读全文
摘要:原题链接 题解 1.经过样例证明,双方的交换策略一定是自己最小值去换对面最大值 2.双方交换的最大值一定局限在双方各自初始最大值之间,最小值也是 code #include<bits/stdc++.h> #define ll long long using namespace std; int ma
阅读全文
摘要:原题链接 题解 真tm麻烦 先考虑只有一个数的情况 假如我是后手,由于每次可以减123,无论对手减多少,我总可以使这一轮这个数总共减去的值为四的倍数 恰好当n位4的时候先手必败,所以如果一个数为四的倍数时,先手必败 考虑多个数 数组里,有的数是4的倍数,有的不是。 此时假设我是先手,遇到四的倍数,我
阅读全文
摘要:原题链接 题解 1.alice的策略一定是从小到大一个一个拿 2.为了让alice拿不到某特定值的蛋糕,bob需要在alice拿它之前把它拿完 3.在最优策略中,bob一定可以从小拿到大 4.设此时bob要拿完第 类蛋糕,该类蛋糕个数为 则拿完这个蛋糕bob还有 \(i-k-
阅读全文
摘要:原题链接 题解 在bob操作之后,alice可以选一个与bob一样的数补充,因此,最后的s为初始s加初始alice添加的元素,所以alice第一次要添加mex初始s code #include<bits/stdc++.h> #define ll long long using namespace s
阅读全文
摘要:原题链接 code #include<bits/stdc++.h> #define ll long long using namespace std; void solve() { int n; cin>>n; vector<int> p(n+4); for(int i=1;i<=n;i++) ci
阅读全文