51nod 1490: 多重游戏(树上博弈)
题目链接
该题实质上是一个树上博弈的问题。要定义四种状态——2先手必胜 1先手必败 3可输可赢 0不能控制
- 叶子结点为先手必败态;
- 若某结点的所有儿子都是先手必败态,则该结点为先手必胜态;
- 若某结点的所有儿子都是先手必胜态,则该结点为先手必败态;
- 若某结点的儿子既有先手必胜态,又有先手必败态,或者是存在不能控制态,则该状态为可输可赢;
- 若某结点的所有儿子都是可输可赢态,则该结点为不能控制态。
- 若某结点的儿子除了可输可赢态外还有其他状态,那么就当可输可赢态不存在。因为,不能将主导权交给对手。
#include<bits/stdc++.h> using namespace std; typedef long long LL;char ts[100050]; int n,k; int tot; int ch[100050][26]; int dp[100050];void insert(char* s) {int l=strlen(s),x=0,tc;for(int i=0;i<l;i++){tc=s[i]-'a';if(!ch[x][tc])ch[x][tc]=++tot;x=ch[x][tc];} } void dfs(int x) {int vis=0;for(int i=0;i<26;i++){if(ch[x][i]){vis=1;dfs(ch[x][i]);dp[x]|=dp[ch[x][i]]^3;}}if(!vis) dp[x]=1; }int main() {scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%s",ts);insert(ts);}dfs(0);if(dp[0]==0||dp[0]==1)puts("Second");else if(dp[0]==2)puts(k&1? "First":"Second");else if(dp[0]==3)puts("First"); }
转载于:https://www.cnblogs.com/Just--Do--It/p/7203096.html
51nod 1490: 多重游戏(树上博弈)相关推荐
- Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)
Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...
- 51Nod - 1381 硬币游戏
51Nod - 1381 硬币游戏 有一个简单但是很有趣的游戏.在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示).两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币 ...
- 如何赢得数学游戏(博弈问题)
数学游戏(博弈问题)是最优化问题中的一类,同时它也是一类很有趣的逻辑推理问题.其中运用最广的思维是:倒推思维. 例1.桌子上有24根火柴,甲.乙两人轮流取,每人每次取1-3根.谁取到最后一根谁就获胜. ...
- 51Nod - 1534 棋子游戏(xjb博弈)
题意: 波雷卡普和瓦西里喜欢简单的逻辑游戏.今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子.他们轮流移动自己的棋子,波雷卡普先开始.每一步移动中,波雷卡普可以将他的棋子从( ...
- 【BZOJ3729】Gty的游戏,博弈+splay
传送门 挺蛋疼的一道题 连想带做搞了一晚上晚自习+下午两节课 博弈方面还是很好弄的,就是"阶梯问题"+"Nim取模游戏" 分别维护深度为奇数和偶数的节点的sg函 ...
- 牛客 - 树上博弈(思维)
题目链接:点击查看 题目大意:给出一棵树,现在有两个人在玩一个游戏,两人依次在树上行走,只能走没有人的结点,无法行走的人失败,题目需要我们求出有多少个初始点对,对于先手而言是必胜的情况 题目分析:其实 ...
- 51nod 1534 棋子游戏
1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudg ...
- LeetCode 810. 黑板异或游戏(博弈推理)
1. 题目 一个黑板上写着一个非负整数数组 nums[i] . 小红和小明轮流从黑板上擦掉一个数字,小红先手. 如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败 ...
- HDU2516 取石子游戏【博弈】
取石子游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
最新文章
- 为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?
- 004_列表list操作
- ArcGIS Engine中空间参照(地理坐标)相关方法总结
- spring getbean 方法分析
- windows服务安装
- scrapy 安装_安装scrapy时出错
- B树与B+树 两者的区别
- sklearn数据预处理
- Android串口通信-AndroidStudio
- BIOS详情设置续一
- 阿里云HBase增强版全文索引功能技术解析
- Linux 管理员技术
- 深度学习(七十)darknet 实现编写mobilenet源码
- 机器学习与计算机视觉(开篇)
- 如何使用SQL Server配置管理器
- Expression Atlas
- 【接口测试】接口测试用例设计
- 全面领跑中国DevOps云服务市场,为什么是华为云?
- simnow账户无法使用,simnow账户修改密码
- 1999年IT大盘点
热门文章
- nginx lua 安装spdy
- C# 实现简单打印(二)-打印一个文本文档,打印的内容是多行的
- 菜鸟学习javascript实例教程
- sourcesafe管理phpproj文件的补充说明(downmoon)
- java.lang.SecurityException Permission Denial opening provider ngyb.createdatabase.AccountProvider
- 干货 | 华尔街留下的指标之王(附代码展示)
- corosync+pacemaker高可用集群
- 企业级的开源备份工具之磁盘柜存储配置
- 将Model对象转换成json文本或者json二进制文件
- Linux下做双向同步