CodeForces 786A Berzerk 博弈?BFS瞎搞
ans[i][j]
i号选手在位置j行动的结果。
预处理,将每位选手能够直接到达黑洞的点
ans[1][(n-a[1][i]+n) % n] = -1; 表示必赢的点
把这些点加入到队列,作为BFS的起点
对于必赢点,敌人能够到达必赢点的点标记ans[敌人][能到该点(必赢)的点]++;
当修改后ans[选手][点]==step_num[本选手] 表示能到的点都是敌人的必赢点,那么本点必输,加入队列。
对于必输点,敌人能够到达必输点的点是必赢点,如果没被加入到队列,那么敌人必赢点加入队列,标记为-1;
结果输出:
==-1必赢
==step_num[本选手] 必输
其余loop
1 #include <cstdio> 2 #include <cmath> 3 #include <iostream> 4 #include <cstring> 5 #include <cmath> 6 #include <queue> 7 using namespace std; 8 int a[3][11111]; 9 int ans[3][11111]; 10 struct dd 11 { 12 int id; 13 int b; 14 }; 15 queue <dd> Q; 16 int main() 17 { 18 int n; 19 int s[3]; 20 dd D; 21 cin >> n; 22 cin >> s[0]; 23 24 for (int i = 1; i <= s[0]; i++) 25 scanf("%d", & a[0][i]); 26 cin >> s[1]; 27 for (int i = 1; i <= s[1]; i++) 28 scanf("%d", & a[1][i]); 29 30 memset(ans, 0, sizeof(ans)); 31 for (int i = 1; i <= s[0]; i++) 32 { 33 ans[0][(n - a[0][i] + n) % n] = -1; 34 D.b = 0; 35 D.id = (n - a[0][i] + n) % n; 36 Q.push(D); 37 } 38 for (int i = 1; i <= s[1]; i++) 39 { 40 ans[1][(n - a[1][i] + n) % n] = -1; 41 D.b = 1; 42 D.id = (n - a[1][i] + n) % n; 43 Q.push(D); 44 } 45 while (!Q.empty()) 46 { 47 D = Q.front(); 48 Q.pop(); 49 int b = D.b; 50 int id = D.id; 51 if (ans[b][id] == -1) 52 { 53 for (int i = 1; i <= s[!b] ; i++) 54 { 55 int from = (id - a[!b][i] + n) % n; 56 57 if ((ans[!b][from] != -1) && ans[!b][from] != s[!b]) 58 { 59 ans[!b][from]++; 60 if (ans[!b][from] == s[!b]) 61 { 62 D.b = !b; 63 D.id = from; 64 Q.push(D); 65 } 66 } 67 68 } 69 } 70 else 71 { 72 for (int i = 1; i <= s[!b] ; i++) 73 { 74 int from = (id - a[!b][i] + n) % n; 75 if ((ans[!b][from] != -1) && ans[!b][from] != s[!b]) 76 { 77 D.b = !b; 78 D.id = from; 79 ans[!b][from] = -1; 80 Q.push(D); 81 } 82 } 83 } 84 } 85 for (int i = 1; i < n - 1; i++) 86 if (ans[0][i] == -1) cout << "Win" << " "; 87 else if (ans[0][i] == s[0]) cout << "Lose" << " "; 88 else cout << "Loop" << " "; 89 if (ans[0][n - 1] == -1) cout << "Win" << endl; 90 else if (ans[0][n - 1] == s[0]) cout << "Lose" << endl; 91 else cout << "Loop" << endl; 92 for (int i = 1; i < n - 1; i++) 93 if (ans[1][i] == -1) cout << "Win" << " "; 94 else if (ans[1][i] == s[1]) cout << "Lose" << " "; 95 else cout << "Loop" << " "; 96 if (ans[1][n - 1] == -1) cout << "Win" << endl; 97 else if (ans[1][n - 1] == s[1]) cout << "Lose" << endl; 98 else cout << "Loop" << endl; 99 100 }
转载于:https://www.cnblogs.com/HITLJR/p/6613061.html
CodeForces 786A Berzerk 博弈?BFS瞎搞相关推荐
- Codeforces 786A Berzerk(博弈)
题目链接 很明显的博弈题目,但是昨天打比赛的时候就是一直想不出来,一直在纠结这个loop的情况到底要怎么定义,感觉到深深的挫败感,自己之前专门看了一段时间博弈也没有任何用处= =太菜了 今天看了一下题 ...
- Codeforces 786A Berzerk(博弈论)
[题目链接] http://codeforces.com/problemset/problem/786/A [题目大意] 有两个人,每个人有一个数集,里面有一些数,现在有一个环,有个棋子放在1, 有个 ...
- Codeforces 924C Riverside Curio(瞎搞)
题目链接:Riverside Curio 题意 ArkadyArkadyArkady 打算观察一条河的水位 nnn 天,每天他都在水平面处做一个标记,水的涨落不会将之前的标记冲走,每天他都会记录下严格 ...
- [JZOJ5281]钦点题解--瞎搞+链表
[JZOJ5281]钦点题解--瞎搞+链表 题目链接 于 暴 力 过 分析 第一眼: 模拟美滋滋?! 然后数据范围...不太对 naiive模拟30pts 然后你交换字符串指针60pts 然后发现可以 ...
- android重置系统,安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了!...
安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了! 现在手机的价格逐渐的开始上升,一部好一点的手机价格还是比较贵的,所以很多人想要节省更多的换机支出,都会想要购买到一款可以使用的比较久的手机 ...
- HDU5971【瞎搞】
题意:略(忙着准备文化课...明天期中考啊.... 思路: 正解就是染色,2-sat搞: AC代码(虽然是错误的...数据水(过踏马的也行啊,起码打脸他啊!) 4 3 1 0 1 2 2 3 3 4 ...
- HDU 5600(瞎搞)
第一场Bestcoder居然爆零..果然是too naive..小聪明全部直接输出"YES"过了pretest,结果被叉也是&%$% 找到规律传递下就好.后来看官方题解感觉 ...
- HDU 4923 Room and Moor(瞎搞题)
瞎搞题啊.找出1 1 0 0这样的序列,然后存起来,这样的情况下最好的选择是1的个数除以这段的总和. 然后从前向后扫一遍.变扫边进行合并.每次合并.合并的是他的前驱.这样到最后从t-1找出的那条链就是 ...
- 别再瞎搞数仓了!BAT内部大神:数据仓库不是谁都可以建的
在我没有进互联网之前,我一直以为数据仓库是所有企业进行数据资产管理的必备工作,但直到我去了很多家企业搞数据之后才发现,原来并不是所有的企业都适合做数据仓库,更不要说数据中台了. 很多企业现在做数据仓库 ...
最新文章
- C++基础知识(二)
- 敲诈勒索比特币不断,企业用户如何防“山寨”钓鱼邮件
- RDMA技术详解(三):理解RDMA Scatter Gather List
- 使用vscode删除markdown空行
- oracle regr,oracle 分析函数
- 【新功能】MaxCompoute禁止Full Scan功能开放 1
- 用户视图切换为Linux视图,视图_ITPUB博客
- SpringApplication#run⽅法第5步,打印banner(四)
- Python实现代码雨效果
- 人脸数据集——亚洲人脸数据集
- td 提示暂无数据图片同上
- 操作系统(一)—— 操作系统概论
- python除数为0报错_Python3报错-Python入门到精通
- gwas snp 和_新的高密度玉米SNP芯片可用于基因组选择、GWAS和群体遗传学
- C#笔记5//建造游戏1/网格地图脚本1/自编/仅创建网格/无需插件
- 无极性电容和有极性电容的爆炸
- Expected required, optional, or repeated.错误解决方法
- 打开pdf文件目录的方法
- 笛卡儿积与我的小故事
- 欢迎光临 https://github.com/zjcxc
热门文章
- Google Chrome禁用触摸板滑动前进后退
- 个人的敏感信息需要怎么进行安全保护的一些思考记录
- 1000道Python编程题
- [Android]-SDK QQ微信登入
- matlab 符号表达式正负,如何在Matlab上为符号表达式编写`lhs()`或`rhs()`函数
- 抓取网页生成 PDF
- 【IDM】IDM下载腾讯视频下载广告和分段的问题
- linux主机sys使用率忽高忽低,cpu使用率忽高忽低的原因和解决方法
- 广西铁路局计算机类待遇怎么样,南宁铁路局月薪待遇 如何进入铁路工作
- 疫情下的通信人:你我的岁月静好,是谁在负重前行?