挺有意思的一道题。初探博弈论。

最好自己思考?

我们先考虑只有1轮游戏的情况。

这题明显要在字符串上一位一位地走,所以对字符串建立起trie。

最终建立起的trie的叶节点就是必败位置了。

对于非叶节点,如果它有一个儿子是必败节点,那么这个节点就是必胜节点了。(类似与mex函数)

那么如果根节点必胜,那么就是先手必胜,否则就是后手必胜了。

如果最后一轮后手必胜,那么两个人就需要争夺最后一轮的后手,所以他们要赢倒数第二轮。

而倒数第二轮和最后一轮是一样的,那么倒数第二轮也是后手必胜。倒数第二轮的后手整场游戏也必胜。

以此类推到倒数第三轮,倒数第四轮。。。直到第一轮,都一样。

所以,如果某一轮中后手必胜,那么整场游戏后手Dirty必胜。

剩下的情况就是先手必胜,那么就是要争夺先手,那么就要尽量输掉倒数第二轮。

如何判定先手能否必定让自己输掉一轮游戏?

只要把trie树的叶节点改为必胜节点就好了,再跑一遍。

那么如果先手可以必定让自己输掉一轮游戏,也能必定让自己赢一轮游戏。

那么除了最后一轮以外他都可以让自己输掉以取得先手,直到最后一轮让自己取胜。

所以,如果某一轮中先手必胜,先手在相反游戏中也必胜(即可以让自己必定输掉),那么整场游戏先手Pure必胜。

剩下的就是先手在一轮游戏中必胜,但是不能在相反游戏中取胜(即自己不能必定输掉)。

最后一轮是先手必胜。

倒数第二轮中要争夺最后一轮的先手,故要输掉,所以倒数第二轮中的后手在整场游戏中必胜。

倒数第三轮中要争夺倒数第二轮的后手,要赢,所以倒数第三轮的先手在整场游戏中必胜。

以此类推。。。

所以,如果一轮游戏先手必胜,而相反游戏后手必胜(即先手不能让自己输掉),总轮数为奇数时,先手Pure必胜。否则,后手Dirty必胜。

好题。

自己思考酣畅淋漓(数学自习灵感++)

 #include<cstdio>
#include<cstring>
using namespace std;
int k,trie[][],w[][],cnt,n,rt,len;char s[];
void insert(int &p,int al){
if(!p)p=++cnt;if(al==len)return;
insert(trie[p][s[al]-'a'],al+);
}
void dfs(int p){
int hs=;w[][p]=w[][p]=;
for(int i=;i<=;++i)if(trie[p][i]){hs=;break;}
if(!hs){w[][p]=;w[][p]=;return;}
for(int i=;i<=;++i)if(trie[p][i]){
dfs(trie[p][i]);
if(!w[][trie[p][i]])w[][p]=;
if(!w[][trie[p][i]])w[][p]=;
}
}
int main(){
int t;scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&k);rt=cnt=;memset(trie,,sizeof trie);
for(int i=;i<=n;++i)scanf("%s",s),len=strlen(s),insert(rt,);
dfs(rt);//for(int i=1;i<=cnt;++i)printf("%d %d\n",w[0][i],w[1][i]);
if(!w[][rt])puts("Dirty");
else if(w[][rt])puts("Pure");
else if(k&)puts("Pure");
else puts("Dirty");
}
}

strGame:博弈论,trie的更多相关文章

  1. 20181228 模拟赛 T3 字符串游戏 strGame 博弈论 字符串

    3  字符串游戏(strGame.c/cpp/pas) 3.1  题目描述 pure 和 dirty 决定玩 T 局游戏.对于每一局游戏,有n个字符串,并且每一局游戏由K轮组成.具体规则如下:在每一轮 ...

  2. [杂题]:staGame(博弈论+Trie树+DFS)

    题目描述 $pure$和$dirty$决定玩$T$局游戏.对于每一局游戏,有$n$个字符串,并且每一局游戏由$K$轮组成.具体规则如下:在每一轮游戏中,最开始有一个空串,两者轮流向串的末尾添加一个字符 ...

  3. SPOJ COT3.Combat on a tree(博弈论 Trie合并)

    题目链接 \(Description\) 给定一棵\(n\)个点的树,每个点是黑色或白色.两个人轮流操作,每次可以选一个白色的点,将它到根节点路径上的所有点染黑.不能操作的人输,求先手是否能赢.如果能 ...

  4. SPOJ11414 COT3 博弈论 + Trie树合并

    考虑对于每个子树从下往上依次考虑 对于叶子节点而言,如果可以染色,那么其\(sg\)值为\(1\),否则为\(0\) 考虑往上合并 如果选择了\(x\),那么后继状态就是其所有子树 如果选了其他子树中 ...

  5. HY 的惩罚 (Trie 树,博弈论)

    [问题描述] hy 抄题解又被老师抓住了,现在老师把他叫到了办公室. 老师要 hy 和他玩一个游 戏.如果 hy 输了,老师就要把他开除信息组; 游戏分为 k 轮.在游戏开始之前,老师会将 n 个由英 ...

  6. CodeForces 455B A Lot of Games (博弈论)

    A Lot of Games 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/J Description Andrew, Fedo ...

  7. 【10.4校内测试】【轮廓线DP】【中国剩余定理】【Trie树+博弈】

    考场上几乎是一看就看出来轮廓线叻...可是调了两个小时打死也过不了手出样例!std发下来一对,特判对的啊,转移对的啊,$dp$数组竟然没有取max!!! 某位考生当场死亡. 结果下午又请了诸位dala ...

  8. 【基础操作】博弈论 / SG 函数详解

    博弈死我了……(话说哪个小学生会玩博弈论提到的这类弱智游戏,还取石子) 先推荐两个文章链接:浅谈算法——博弈论(从零开始的博弈论) 博弈论相关知识及其应用 This article was updat ...

  9. 数据结构 | 30行代码,手把手带你实现Trie树

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法和数据结构专题的第28篇文章,我们一起来聊聊一个经典的字符串处理数据结构--Trie. 在之前的4篇文章当中我们介绍了关于博弈论的 ...

随机推荐

  1. JNA的步骤、简单实例以及资料整理

    1.步骤 1.编写dll文件,放入项目的bin目录(在window上是dll文件,在Linux上是so文件,dll和so都是由C程序生成)  2.新建接口继承Library  3.加载对应的dll或者 ...

  2. iOS 设备数据管理工具 iMazing v2.10.3 绿色便携版

    iMazing 是一款可以帮助用户管理 iOS 设备的软件,功能远远超出 iTunes.iMazing 连接你的 iOS 设备(iPhone. iPad 或 iPod)相连,使用起来也非常的方便.你可 ...

  3. .NetCore WebApi —— Swagger版本控制

    目录: .NetCore WebApi——Swagger简单配置 .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger) .NetCore WebApi —— Swagge ...

  4. Spring Cloud之Zuul

    API网关是一个更为智能的应用服务器,它的存在就像是整个微服务架构系统的门面一样,所有的外部客户端访问都需要经过它来进行调度和过滤.它除了要实现请求路由.负载均衡.校验过滤等功能之外,还需要更多能力, ...

  5. Ubuntu安装时卡死在启动界面

    上下选中Install Ubuntu后,按'e'进入编辑页面(不要按回车),删除'quiet splash'之后的"---",输入"$vt_handoff acpi_os ...

  6. 攻防世界(XCTF)WEB(进阶区)write up(一)

      cat ics-05 ics-06 lottery Cat XCTF 4th-WHCTF-2017 输入域名  输入普通域名无果  输入127.0.0.1返回了ping码的结果 有可能是命令执行 ...

  7. [NOIp2014] luogu P2296 寻找道路

    不知道是因为我菜还是别的,最近老是看错题. 题目描述 在有向图 GGG 中,每条边的长度均为 1,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 路径上的所有点的出边所指向 ...

  8. HNOI2012 永无乡 无旋Treap

    题目描述 永无乡包含 nnn 座岛,编号从 111 到 nnn ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 nnn 座岛排名,名次用 111 到 nnn 来表示.某些岛之间由巨大的桥连接, ...

  9. [Luogu2973][USACO10HOL]赶小猪Driving Out the Piggi…

    题目描述 The Cows have constructed a randomized stink bomb for the purpose of driving away the Piggies. ...

  10. vue 详情跳转至列表页 实现列表页缓存

    甲爸爸提了一个需求,希望公众号内的商城能够像app一样,从商品详情页跳转至列表页及其他列表页时,可以实现列表页缓存(数据不刷新.位置固定到之前点的商品的位置) 本来想着scrollBehavior应该 ...