题目分析:

这是一个经典的Multi-SG游戏的问题。

相较于普通的Nim游戏,该游戏仅仅是多了拆成两堆这样的一个状态。即多了一个SG(x+y)的过程。

而根据SG定理,SG(x+y)这个游戏的结果可以拆成SG(x)和 SG(y)游戏的结果的xor。

因此,在我们求SG函数的过程中,我们只需要再枚举一下拆成两堆的状态,即可获得Multi-SG游戏每个状态的SG函数。

但是题目中的数据范围较大(达到了1e5的级别),因此我们考虑先打表找规律。打出SG函数后不难发现,存在规律:

顺着上面的规律即可求出每一个状态的SG函数,最后将这些SG函数结果全都xor起来即可。

#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 100;
typedef long long ll;
ll n, a[N];
string Answer[2] = { "Alice\n","Bob\n" }; ll gsg(int x) {
if (x % 4 == 0)return x - 1;
else if (x % 4 == 3)return x + 1;
else return x;
} int main() {
//freopen("in.txt", "r", stdin);
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
int t; cin >> t;
while (t--) {
ll cnt = 0;
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i];
cnt ^= gsg(a[i]);
}
if (cnt == 0)cout << Answer[1];
else cout << Answer[0];
}
}

SG打表代码:

//SG打表的代码
const int maxn = 105;
int vis[maxn];
int sg[maxn];
void init() {//SG函数打表
for (int i = 0; i < 100; i++) {//枚举100个状态
memset(vis, 0, sizeof(vis));
for (int j = 1; j <= i; j++) {
vis[sg[i - j]] = true;
}
for (int j = 1; j < i; j++) {//枚举分成两块的状态
vis[sg[j] ^ sg[i - j]] = true;
}
for (int j = 0;; j++) {
if (!vis[j]) {
sg[i] = j;
break;
}
}
}
for (int i = 0; i < 100; i++) {
cout << i << " " << sg[i] << endl;
}
}

HDU-3032--Nim or not Nim?(博弈+SG打表)的更多相关文章

  1. HDU 1847-Good Luck in CET-4 Everybody!-博弈SG函数模板

    Problem Description 大学英语四级考试就要来临了,你是不是在紧张的复习?也许紧张得连短学期的ACM都没工夫练习了,反正我知道的Kiki和Cici都是如此.当然,作为在考场浸润了十几载 ...

  2. 51nod_1714:B君的游戏(博弈 sg打表)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714 nim游戏的一个变形,需要打出sg函数的表 #incl ...

  3. 51nod 1714:B君的游戏(博弈 sg打表)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1714 nim游戏的一个变形,需要打出sg函数的表 #incl ...

  4. hdu 2147 kiki's game(DP(SG)打表找规律)

    题意: n*m的棋盘,一枚硬币右上角,每人每次可将硬币移向三个方向之一(一格单位):左边,下边,左下边. 无法移动硬币的人负. 给出n和m,问,先手胜还是后手胜. 数据范围: n, m (0<n ...

  5. hdu 3032 Nim or not Nim? (SG函数博弈+打表找规律)

    Nim or not Nim? Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Sub ...

  6. HDU 3032 Nim or not Nim?(博弈,SG打表找规律)

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  7. hdu 3032 Nim or not Nim? sg函数 难度:0

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. HDU 3032 Nim or not Nim? (sg函数)

    Nim or not Nim? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  9. HDU 3032 Nim or not Nim? (sg函数求解)

    Nim or not Nim? Problem Description Nim is a two-player mathematic game of strategy in which players ...

  10. hdu 3032 Nim or not Nim?(搜索打SG表)

    题意: 有n堆石子,alice先取,每次可以选择拿走一堆石子中的1~x(该堆石子总数) , 也可以选择将这堆石子分成任意的两堆.alice与bob轮流取,取走最后一个石子的人胜利. 思路: 因为数的范 ...

随机推荐

  1. java中ArrayList和LinkedList的区别

    Java中ArrayList和LinkedList都是List集合的实现类,它们都可以用来存储一组有序的元素,但是它们的内部实现方式不同,在使用时也有不同的适用场景. ArrayList是一个基于动态 ...

  2. C#中LINQ的使用知多少?LINQ常功能整理,实例源代码解析

    LINQ(Language-Integrated Query)是C#语言中的一个强大的查询技术,它提供了一种统一的查询语法,可以用于查询和操作各种数据源,包括集合.数据库.XML等.下面详细描述了LI ...

  3. 【死亡小学期第二章:没头脑和不高兴】数据库jdbc系统

    自己做一个JDBC的数据库系统,因为这个一直做嘛,所以很简单啦,并没有想提高技术拔拔高啥的,就想做一个简单的,然后自己感兴趣的内容.让自己快乐快乐那才叫做意义~~~~~~~kkkk 学到的东西: 展示 ...

  4. 深度解读DBSCAN聚类算法:技术与实战全解析

    探索DBSCAN算法的内涵与应用,本文详述其理论基础.关键参数.实战案例及最佳实践,揭示如何有效利用DBSCAN处理复杂数据集,突破传统聚类限制. 关注TechLead,分享AI全维度知识.作者拥有1 ...

  5. [ABC238G] Cubic?

    Problem Statement Given a sequence $A$ of $N$ numbers, answer the following $Q$ questions. In the $i ...

  6. Cloudeye对接Prometheus实现华为云全方位监控

    本文分享自华为云社区<Cloudeye对接Prometheus实现华为云全方位监控>,作者:可以交个朋友 . 一. 背景 云眼系统Cloudeye服务为我们提供了针对弹性云服务器.宽带等资 ...

  7. 华企盾DSC客户端连不上服务器(客户端在回收站)

    解决方法:确保该计算机在CLIENT表recyclebin列中的值为False,最好把所有计算机都改成False,改好后重启DSC服务器,最后重新安装客户端. 或者将客户端从回收站移动到正常的工作组.

  8. 【Python】【ChatGPT】本地部署ChatGPT学习记录

    学习一下GPT项目的相关使用和部署 一.GPT4ALL模型 Github:https://github.com/nomic-ai/gpt4all GPT4ALL项目部署简易,但是在运行体验上一般,并且 ...

  9. Javascript Ajax总结——其他跨域技术之图像Ping和JSONP

    在CORS出现之前,为实现跨域Ajax通信,开发人员利用DOM中能够执行跨域请求的功能,在不依赖XHR对象的情况下也能发送某种请求.1.图像Ping这里使用<img>标签.一个网页可以从任 ...

  10. IDM HOSTS本地注册 屏蔽的网址

    127.0.0.1 registeridm.com127.0.0.1 www.registeridm.com127.0.0.1 www.internetdownloadmanager.com127.0 ...