牛客多校第一场 A. Alice and Bob (暴力SG)
题目大概
有两堆石子,有两个人拿,一个人从一堆中拿个,那么就必须从另一堆中拿个,Alice先拿,问是否必赢。
解题:
数据不大,看到前名队伍没有推结论做的。。除了打表就是暴力,其实打表还是暴力,但是打1000多行的表也太恐怖了吧。。暴力就是暴力处理每一种状态下所有情况,就表示当前第一堆石子数量为,第二堆石子数量为的函数,那么再枚举一个和,暴力即可,这打眼一看好像复杂度很恐怖,这难道就是高手们的经验吗。。
注意:一开始我用了数组判断,到飞起,后来换成数组,八百毫秒就过了。
哦记得,不要忘了处理的情况
#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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端