CF455B A Lot of Games

一、题目

点此看题

二、解法

CF \text{CF} CF的博弈题都是神仙题,蒟蒻被吊打…

先建出 t r i e trie trie树,我们考虑 t r i e trie trie上每个节点的胜负态,由于本题的特殊性:当前局博弈的目标不一定是赢。我们设计 4 4 4种状态:

  • 必胜态,只能转移到必败态,二进制表示为 10 10 10
  • 必败态,只能转移到必胜态,二进制表示为 01 01 01
  • 可胜可败态,即可转移到必胜态,又可以转移到必败态,或者到无法控制态,二进制表示为 11 11 11
  • 无法控制态,即只能转移到可胜可败态,二进制表示为 00 00 00

首先叶子肯定是必败态, t r i e trie trie树从底向上算当前点的状态,结合定义,转移如下:
s g [ u ]   ∣ = s g [ v ] ⊕ 3 sg[u]\space |=sg[v]\oplus 3 sg[u] =sg[v]3然后我们对根节点的胜败态进行讨论:

  • 必胜态,则要考虑 k k k(轮数)的奇偶性,为奇则先手赢
  • 必败态,先手一直输,然后一直先开始,所以先手必败
  • 可胜可败态,先手先一直败,让自己保持先手,最后选取必胜态,先手必胜
  • 无法控制态,后手让先手一直赢,最后后手选取必胜态,先手必败

然后就按照我说的打代码就行了,这题真的神仙 q w q qwq qwq

#include <cstdio>
#include <cstring>
const int M = 100005;
int read()
{
    int x=0,flag=1;char c;
    while((c=getchar())<'0' || c>'9') if(c=='-') flag=-1;
    while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
    return x*flag;
}
int n,m,k,cnt,ch[M][26],sg[M];
char s[M];
void ins()
{
    int p=1;
    for(int i=0;i<m;i++)
    {
        int c=s[i]-'a';
        if(!ch[p][c]) ch[p][c]=++cnt;
        p=ch[p][c];
    }
}
void dfs(int u)
{
    int f=0;
    for(int i=0;i<26;i++)
    {
        if(!ch[u][i]) continue;
        dfs(ch[u][i]);f=1;
        sg[u]|=(sg[ch[u][i]]^3);
    }
    if(!f) sg[u]=1;
}
int main()
{
    n=read();k=read();
    cnt=1;
    for(int i=1;i<=n;i++)
    {
        scanf("%s",s),m=strlen(s);
        ins();
    }
    dfs(1);
    if(sg[1]==0)
        puts("Second");
    if(sg[1]==1)
        puts("Second");
    if(sg[1]==2)
        puts(k%2?"First":"Second");
    if(sg[1]==3)
        puts("First");
}
以太网适配器 以太网: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 1: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 2: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 以太网适配器 VMware Network Adapter VMnet1: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::f249:3ccd:be91:7763%11 IPv4 地址 . . . . . . . . . . . . : 192.168.147.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 以太网适配器 VMware Network Adapter VMnet8: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::1000:5afe:cffe:7f93%19 IPv4 地址 . . . . . . . . . . . . : 192.168.37.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . . . : IPv6 地址 . . . . . . . . . . . . : 240e:468:210:455b:f5f9:4649:822d:d46f 临时 IPv6 地址. . . . . . . . . . : 240e:468:210:455b:b582:bf6f:358d:3237 本地链接 IPv6 地址. . . . . . . . : fe80::4b6a:117f:c220:2af3%15 IPv4 地址 . . . . . . . . . . . . : 192.168.234.47 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : fe80::a480:15ff:fe98:36e0%15 192.168.234.15windowsIPconfig
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值