题解 | #【模板】扩展巴什博弈#

【模板】扩展巴什博弈

https://www.nowcoder.com/practice/4b0d36a3d3884cf69f618cf4c2511d82

便于分析的定义:

  • 必胜态(记为N-position):做出最优决策,必然胜利的状态
  • 必败态(记为P-position):做出任何决策无法胜利的状态

形式化的,有定义:

  1. 无法移动的状态为P
  2. 存在移动可以到达到P的状态为N
  3. 任意移动都会到N的状态为P

注:需要将游戏考虑为一个状态图,状态指当前局面和下一步的玩家,特别的,对于这类公平组合游戏,状态图是DAG。N-position指 Next play win,即先手必胜;P-position指 Previous player win,即后手必胜。

基于以上定义,考虑题给的扩展巴什博弈,状态被量化为当前石子数量。

  • 为P
  • 可取个移动到P,故为N
  • 移动任意步数()到达范围为(左端点减最大,右端点减最小得到),全为N,故为P

后面的讨论完全同理,都是长度为的两种区间交替,因此只需要将,即可得到上述的前两种情况,小于为P,否则为N

参考资料

AC代码

注:最好开快读以及将endl改为'\n',本题的IO开销很高

#include <iostream>
using namespace std;

void solve() {
    int n, l, r;
    cin >> n >> l >> r;
    if (n % (l + r) < l) {
        cout << "NO" << '\n';
    } else {
        cout << "YES" << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false), cin.tie(nullptr);
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
}
// 64 位输出请用 printf("%lld")
全部评论

相关推荐

在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务