题目链接

该题实质上是一个树上博弈的问题。要定义四种状态——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: 多重游戏(树上博弈)相关推荐

  1. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

  2. 51Nod - 1381 硬币游戏

    51Nod - 1381 硬币游戏 有一个简单但是很有趣的游戏.在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示).两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币 ...

  3. 如何赢得数学游戏(博弈问题)

    数学游戏(博弈问题)是最优化问题中的一类,同时它也是一类很有趣的逻辑推理问题.其中运用最广的思维是:倒推思维. 例1.桌子上有24根火柴,甲.乙两人轮流取,每人每次取1-3根.谁取到最后一根谁就获胜. ...

  4. 51Nod - 1534 棋子游戏(xjb博弈)

    题意: 波雷卡普和瓦西里喜欢简单的逻辑游戏.今天他们玩了一个游戏,这个游戏在一个很大的棋盘上进行,他们每个人有一个棋子.他们轮流移动自己的棋子,波雷卡普先开始.每一步移动中,波雷卡普可以将他的棋子从( ...

  5. 【BZOJ3729】Gty的游戏,博弈+splay

    传送门 挺蛋疼的一道题 连想带做搞了一晚上晚自习+下午两节课 博弈方面还是很好弄的,就是"阶梯问题"+"Nim取模游戏" 分别维护深度为奇数和偶数的节点的sg函 ...

  6. 牛客 - 树上博弈(思维)

    题目链接:点击查看 题目大意:给出一棵树,现在有两个人在玩一个游戏,两人依次在树上行走,只能走没有人的结点,无法行走的人失败,题目需要我们求出有多少个初始点对,对于先手而言是必胜的情况 题目分析:其实 ...

  7. 51nod 1534 棋子游戏

    1534 棋子游戏 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 http://www.51nod.com/onlineJudg ...

  8. LeetCode 810. 黑板异或游戏(博弈推理)

    1. 题目 一个黑板上写着一个非负整数数组 nums[i] . 小红和小明轮流从黑板上擦掉一个数字,小红先手. 如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败 ...

  9. HDU2516 取石子游戏【博弈】

    取石子游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

最新文章

  1. 为什么很多 SpringBoot 开发者放弃了 Tomcat,选择了 Undertow?
  2. 004_列表list操作
  3. ArcGIS Engine中空间参照(地理坐标)相关方法总结
  4. spring getbean 方法分析
  5. windows服务安装
  6. scrapy 安装_安装scrapy时出错
  7. B树与B+树 两者的区别
  8. sklearn数据预处理
  9. Android串口通信-AndroidStudio
  10. BIOS详情设置续一
  11. 阿里云HBase增强版全文索引功能技术解析
  12. Linux 管理员技术
  13. 深度学习(七十)darknet 实现编写mobilenet源码
  14. 机器学习与计算机视觉(开篇)
  15. 如何使用SQL Server配置管理器
  16. Expression Atlas
  17. 【接口测试】接口测试用例设计
  18. 全面领跑中国DevOps云服务市场,为什么是华为云?
  19. simnow账户无法使用,simnow账户修改密码
  20. 1999年IT大盘点

热门文章

  1. nginx lua 安装spdy
  2. C# 实现简单打印(二)-打印一个文本文档,打印的内容是多行的
  3. 菜鸟学习javascript实例教程
  4. sourcesafe管理phpproj文件的补充说明(downmoon)
  5. java.lang.SecurityException Permission Denial opening provider ngyb.createdatabase.AccountProvider
  6. 干货 | 华尔街留下的指标之王(附代码展示)
  7. corosync+pacemaker高可用集群
  8. 企业级的开源备份工具之磁盘柜存储配置
  9. 将Model对象转换成json文本或者json二进制文件
  10. Linux下做双向同步