草庐IT

abc_backend

全部标签

AtCoder ABC 270 题解(D-F)

AtCoderABC270题解(D-F)D-Stones(博弈DP)题目:​ 现在有一堆石子,一个序列a表示每次可以从石头里拿走多少个石子。当无法再拿出石头的时候,游戏结束。两边都以最佳策略游玩,请问先手者最多能拿走几个石子。思路:​ 对于这种两边都采取最佳策略的最优解问题,我们可以很轻易的想到博弈DP的模型。通过记忆化搜索,枚举玩家A拿的所有情况,分割成子问题,取最优解即可。因为对手B也会采取最佳策略,所以减去B拿的最优解就是A所得的最优解。\[f[u]=max\{(f[u],\;a[i]+(u-a[i])-f[u-a[i]]),\;a[i]\leu\};\]实现:​ 建议使用记忆化搜索实现

atcoder补题题解 abc_292 a~e

目录A-CAPSLOCKB-YellowandRedCardC-FourVariablesD-UnicyclicComponentsE-Transitivity(补)A-CAPSLOCK题意:将输入字母转成大写代码:#include#defineintlonglongusingnamespacestd;signedmain(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);//freopen(".in","r",stdin);//freopen(".out","w",stdout);stringtemp;ci

atcoder补题题解 abc_292 a~e

目录A-CAPSLOCKB-YellowandRedCardC-FourVariablesD-UnicyclicComponentsE-Transitivity(补)A-CAPSLOCK题意:将输入字母转成大写代码:#include#defineintlonglongusingnamespacestd;signedmain(){std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);//freopen(".in","r",stdin);//freopen(".out","w",stdout);stringtemp;ci