[atARC087E]Prefix-free Game
建一棵trie树,考虑一个串,相当于限制了其子树内部+其到根的链
如果将所有点补全,那么这个问题可以看作每一个极浅(子树内没有其他满足条件)的到根路径以及子树内部没有其他结束点的子树的子问题
对于多个子问题博弈,很明显去求sg,由于是一颗满二叉树,因此只与深度$l$(指该子树深度,与全局的$L$无关)有关,以下记为$f_{l}$
初始$f_{0}=1$(虽然根本身是个空串,但这个点必然不是全局trie树的根,换言之其到该根的部分仍然存在),然后$f_{i}=mex_{j=0}^{i-1}(\bigoplus_{k=j}^{i-1}f_{k})$,复杂度为$o(L^{2})$,由于$L$过大,因此要优化
观察可得$f_{n}$为$n$二进制下末尾连续1数量的2的幂次(也可以表示为$2^{lowbit(n+1)}$),证明归纳即可

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 #define ll long long
5 map<int,bool>mat;
6 int V,n,ans,vis[N],ch[N][2];
7 ll l;
8 char s[N];
9 void add(char *s,int l){
10 int k=1;
11 for(int i=0;i<l;i++){
12 if (!ch[k][s[i]-'0'])ch[k][s[i]-'0']=++V;
13 k=ch[k][s[i]-'0'];
14 }
15 vis[k]=1;
16 }
17 void dfs(int k,ll l){
18 if (vis[k])return;
19 if ((!k)||(!l)){
20 int s=0;
21 while (l&1){
22 s++;
23 l>>=1;
24 }
25 mat[s]^=1;
26 if (mat[s])ans++;
27 else ans--;
28 return;
29 }
30 dfs(ch[k][0],l-1);
31 dfs(ch[k][1],l-1);
32 }
33 int main(){
34 scanf("%d%lld",&n,&l);
35 V=1;
36 for(int i=1;i<=n;i++){
37 scanf("%s",s);
38 add(s,strlen(s));
39 }
40 dfs(1,l);
41 if (ans)printf("Alice");
42 else printf("Bob");
43 }
[atARC087E]Prefix-free Game的更多相关文章
- Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .
例如:The prefix "context" for element "context:annotation-config" is not bound. 这种 ...
- [LeetCode] Implement Trie (Prefix Tree) 实现字典树(前缀树)
Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...
- [LeetCode] Longest Common Prefix 最长共同前缀
Write a function to find the longest common prefix string amongst an array of strings. 这道题让我们求一系列字符串 ...
- 1014: [JSOI2008]火星人prefix
1014: [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MB Description 火星人最近研究了一种操作:求一个字串两个后缀 ...
- [BZOJ1014][JSOI2008]火星人prefix
[BZOJ1014][JSOI2008]火星人prefix 试题描述 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字 ...
- No plugin found for prefix 'mybatis-generator' in the current project
http://blog.csdn.net/you23hai45/article/details/50792430 1.错误描述 F:\workspaces\Mybatis>mvn mybatis ...
- 【leetcode】Longest Common Prefix
题目简述: Write a function to find the longest common prefix string amongst an array of strings. 解题思路: c ...
- LintCode 78:Longest Common Prefix
public class Solution { /** * @param strs: A list of strings * @return: The longest common prefix ...
- [LintCode] Longest Common Prefix 最长共同前缀
Given k strings, find the longest common prefix (LCP). Have you met this question in a real intervie ...
- BZOJ 1014: [JSOI2008]火星人prefix [splay 二分+hash] 【未完】
1014: [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6243 Solved: 2007[Submit] ...
随机推荐
- 如何利用Prometheus监控你的应用(此列子是对于golang sdk进行运用)
Prometheus作为一套完整的开源监控接近方案,因为其诸多强大的特性以及生态的开放性,俨然已经成为了监控领域的事实标准并在全球范围内得到了广泛的部署应用.那么应该如何利用Prometheus对我们 ...
- pycharm中安装和使用sqlite过程详解
创建Django项目,添加app 使用虚拟环境 项目创建默认使用的Django数据库是sqlite 配置静态文件 STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀 S ...
- 分布式系统ID
Leaf--美团点评分布式ID生成系统 前言 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识.如在美团点评的金融.支付.餐饮.酒店.猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需 ...
- spyglass DFT
SolvNet spyglass clock_11 内部 generated clocks 在shift mode 不被 testclock 控制. Fix View the Incremental ...
- JVM:类加载与字节码技术-2
JVM:类加载与字节码技术-2 说明:这是看了 bilibili 上 黑马程序员 的课程 JVM完整教程 后做的笔记 内容 这部分内容在上一篇笔记中: 类文件结构 字节码指令 编译期处理 类加载阶段 ...
- springcloud整合seata
springcloud整合seata 一.背景 二.项目结构 三.实现功能: 四.项目使用到的技术 五.整合步骤 1.引入spring-cloud-starter-alibaba-seata jar包 ...
- PromQL的简单使用
PromQL的简单使用 一.背景 二.PromQL的数据类型 三.字面量 1.字符串字面量 2.浮点数字面量 四.时间序列选择器 1.即时向量选择器 1.组成部分 2.指标名称和匹配器的组合 3.匹配 ...
- 《基于SIR的路边违停行为传播模型研究》
My Focus: 路边违停 行为的传播模型; 学习基于SIR XXX模型的可行性分析.建立和结论分析 Author: 左忠义,王英英,包蕴 Mind Map:
- NOIP模拟85(多校18)
前言 好像每个题目背景所描述的人都是某部番里的角色,热切好像都挺惨的(情感上的惨). 然后我只知道 T1 的莓,确实挺惨... T1 莓良心 解题思路 首先答案只与 \(w\) 的和有关系,于是问题就 ...
- Spring IOC:BeanDefinition加载注册流程(转)
BeanFactory接口体系 以DefaultListableBeanFactory为例梳理一下BeanFactory接口体系的细节 主要接口.抽象类的作用如下: BeanFactory(根据注册的 ...