题目大概

有两堆石子,有两个人拿,一个人从一堆中拿\(k\)个,那么就必须从另一堆中拿\(s*k\)个,Alice先拿,问是否必赢。

解题:

数据不大,看到前\(20\)名队伍没有推结论做的。。除了打表就是暴力,其实打表还是暴力,但是打1000多行的表也太恐怖了吧。。暴力就是暴力处理每一种状态下\(SG\)所有情况,\(SG[n][m]\)就表示当前第一堆石子数量为\(n\),第二堆石子数量为\(m\)的\(SG\)函数,那么再枚举一个\(k\)和\(s\),暴力即可,这打眼一看好像复杂度很恐怖,这难道就是高手们的经验吗。。

注意:一开始我用了\(int\)数组判断\(true\),\(false\,\,\,\,T\)到飞起,后来换成\(bool\)数组,八百毫秒就过了。

哦记得,不要忘了处理\(SG(0,0)\)的情况

#include <iostream>

using namespace std;

const int N = 5002;
bool sg[N][N]; void cal(int n, int m) {
for (int k = 1; n + k < N; k++) {
for (int s = 0; m + s * k < N; s++) {
sg[n + k][m + k * s] = 1; //先拿第一堆
}
}
swap(n, m);
for (int k = 1; n + k < N; k++) {
for (int s = 0; m + s * k < N; s++) {
sg[m + k * s][n + k] = 1; //先拿第二堆
}
}
} int main() {
cal(0 ,0);
for (int i = 1; i < N; i++) {
for (int j = 0; j < N; j++) {
if (!sg[i][j]) {
cal(i, j);
}
}
} int t;
cin >> t;
while (t--) {
int n, m;
cin >> n >> m;
if (!sg[n][m]) puts("Bob");
else puts("Alice");
} return 0;
}

牛客多校第一场 A. Alice and Bob (暴力SG)的更多相关文章

  1. 2019年牛客多校第一场 C题Euclidean Distance 暴力+数学

    题目链接 传送门 题意 给你\(n\)个数\(a_i\),要你在满足下面条件下使得\(\sum\limits_{i=1}^{n}(a_i-p_i)^2\)最小(题目给的\(m\)只是为了将\(a_i\ ...

  2. 2019牛客多校第一场 I Points Division(动态规划+线段树)

    2019牛客多校第一场 I Points Division(动态规划+线段树) 传送门:https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点有 ...

  3. 牛客多校第一场 B Inergratiion

    牛客多校第一场 B Inergratiion 传送门:https://ac.nowcoder.com/acm/contest/881/B 题意: 给你一个 [求值为多少 题解: 根据线代的知识 我们可 ...

  4. 2019年牛客多校第一场B题Integration 数学

    2019年牛客多校第一场B题 Integration 题意 给出一个公式,求值 思路 明显的化简公式题,公式是分母连乘形式,这个时候要想到拆分,那如何拆分母呢,自然是裂项,此时有很多项裂项,我们不妨从 ...

  5. 2019牛客多校第一场E ABBA(DP)题解

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 ABBA 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语 ...

  6. 牛客多校第一场 A Equivalent Prefixes 单调栈(笛卡尔树)

    Equivalent Prefixes 单调栈(笛卡尔树) 题意: 给出两个数组u,v,每个数组都有n个不同的元素,RMQ(u,l,r)表示u数组中[l,r]区间里面的最小值标号是多少,求一个最大的m ...

  7. 2019牛客多校第一场A-Equivalent Prefixes

    Equivalent Prefixes 传送门 解题思路 先用单调栈求出两个序列中每一个数左边第一个小于自己的数的下标, 存入a[], b[].然后按照1~n的顺序循环,比较 a[i]和b[i]是否相 ...

  8. 2019年牛客多校第一场 I题Points Division 线段树+DP

    题目链接 传送门 题意 给你\(n\)个点,每个点的坐标为\((x_i,y_i)\),有两个权值\(a_i,b_i\). 现在要你将它分成\(\mathbb{A},\mathbb{B}\)两部分,使得 ...

  9. 2019年牛客多校第一场 H题XOR 线性基

    题目链接 传送门 题意 求\(n\)个数中子集内所有数异或为\(0\)的子集大小之和. 思路 对于子集大小我们不好维护,因此我们可以转换思路变成求每个数的贡献. 首先我们将所有数的线性基的基底\(b\ ...

  10. 2019牛客多校第一场 A.Equivalent Prefixes

    题目描述 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r ...

随机推荐

  1. vue项目node_modules文件过大问题

    node_modules目录下.cache下最大文件删除即可(vue-loader)

  2. 手动安装vur-router并引用

    安装并引用 安装 npm install vue-router 引用 步骤一:在src路径下,创建router文件夹, 其下创建index.js // router/index.js import V ...

  3. 检测文件的格式——chardet模块

    f3 = open(file=path,mode='rb') data = f3.read() # print(data) f3.close() result = chardet.detect(dat ...

  4. 【pandas小技巧】--修改列的名称

    重命名 pandas 数据中列的名称是一种常见的数据预处理任务.这通常是因为原始数据中的列名称可能不够清晰或准确.例如,列名可能包含空格.大写字母.特殊字符或拼写错误. 使用 pandas 的 ren ...

  5. ACl与ACL实验

    ACl与ACL实验 ACL 1,ACL概述及 产生的背景 ACL: access list 访问控制列表 2,ACL应用 ACL两种应用: 应用在接口的ACL-----过滤数据包(原目ip地址,原目 ...

  6. Hutool:一行代码搞定数据脱敏

    1. 什么是数据脱敏 1.1 数据脱敏的定义 数据脱敏百度百科中是这样定义的: 数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.这样就可以在开发.测试和其它非生产环境 ...

  7. 优化Redis缓存淘汰机制解决性能测试中报错率逐渐攀升问题

    在某个查询场景的性能测试过程中,遇到了一个问题:测试过程中报错率逐渐攀升.进一步检查后发现,在查询业务所在应用的后台日志和平台应用的后台日志中,都出现了用户登录相关的报错信息.经过排查分析,发现了问题 ...

  8. charts自适应

    大屏echarts自适应文字大小 1.在utils中创建 setFontSize.js function setFontSize(val) { const baseSize = 50; let sca ...

  9. 虚拟机问题:VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行

    解决办法:关闭Hyper-V功能. windows10使用VMware Workstation打开虚拟机时显示 VMware Workstation 与 Hyper-V 不兼容.请先从系统中移除 Hy ...

  10. MySQL高级12-事务原理

    一.事务概念 事务是一组操作的集合,他是一个不可分割的工作单位,事务会把所有操作作为一个整体一起向系统提交或者撤销请求操作,即这些操作要么同时成功,要么同时失败. 二.事务特性 原子性(Atomici ...