[Contest20180323]King
跳蚤国王要召开第二届内阁会议,所以把所有跳蚤都召集到了会议室。所有跳蚤在会议室的圆桌前坐成了一个圈,从$1$到$n$标号,每人的面前都有一盏明灯。
就在会议就要开始的时候,国王突然发现,并不是所有的灯都点亮了,有强迫症的他绝不会在有灯没有被点亮的时候开始会议。
现在国王要指定一些位置的跳蚤,他会报出这些跳蚤的序号,让他们把面前的灯改变状态。
可是这些跳蚤大臣并不想开会,虽然这些跳蚤必须按照国王的指令形式行事,但是他们会在国王下达指令之后,偷偷转动面前的桌子任意次(转动一次之后本来在$n$号跳蚤面前的灯就在$1$号跳蚤面前了),这样虽然对应序列的跳蚤确实改变了面前的灯的状态,但是会议并不能开始因为灯还没有全部点亮。
国王也知道这一点,所以他很好奇,他有没有一种办法在有限轮之后开始会议呢?
小w向国王毛遂自荐,国王很怀疑小w的能力,所以为了保证数据强度,国王会给小w一个初始的串,每次问小w一个子串是否能在有限轮之后开始会议。
如果区间长度$len=r-l+1$是奇数,并且不全灭或不全亮,那么无解
假设$len=q\cdot2^k$,其中$q$是奇数,把区间按$i\%2^k$分类,每类$q$盏灯,整个区间有解要求每组都有解,也就是每组全灭或全亮,所以如果没有长度为$2^k$的循环节,那么肯定无解
如果有长度为$2^k$的循环节,那么问题转化成只考虑这$2^k$盏灯,下面证明$2^k$盏灯是一定有解的
以下的多项式系数都是模$2$意义下的数(亮or灭),所有多项式运算在模$x^{2^k}-1$意义下进行(循环位移)
先证$x^{2^k}-1=(x-1)^{2^k}$
对$k$归纳,当$k=0$时显然成立
假设$x^{2^{k-1}}-1=(x-1)^{2^{k-1}}$,那么$(x-1)^{2^k}=\left((x-1)^{2^{k-1}}\right)^2=\left(x^{2^{k-1}}-1\right)^2=x^{2^k}-1$
由归纳法,定理得证
如果把这个区间看成多项式$f(x)$(亮灯系数为$1$,灭灯系数为$0$,系数是模$2$意义下的数),把国王的指令看成多项式$g(x)$,那么大臣旋转桌子$d$位后再执行指令可以看做$f'(x)=f(x)\cdot x^d+g(x)$,国王可以取$g(x)=f(x)$,那么$f'(x)=f(x)\left(x^d+1\right)=f(x)(x-1)(x^{d-1}+\cdots+1)$
国王每下一次命令,$f(x)$就会被乘上$(x-1)$,由$(x-1)^{2^k}=x^{2^k}-1$可得最后$f(x)$会变成$0$(被续取模),所以$2^k$盏灯一定有解
#include<stdio.h>
typedef unsigned long long ull;
char s[100010];
ull h[100010],b[100010];
ull get(int l,int r){return h[r]-h[l-1]*b[r-l+1];}
int main(){
int n,q,i,l,r;
scanf("%d%d%s",&n,&q,s+1);
b[0]=1;
for(i=1;i<=n;i++){
b[i]=b[i-1]*29ull;
h[i]=h[i-1]*29ull+(ull)(s[i]-'0');
}
while(q--){
scanf("%d%d",&l,&r);
i=r-l+1;
i&=-i;
if(l==r||get(l+i,r)==get(l,r-i))
puts("ephemeral");
else
puts("endless");
}
}
[Contest20180323]King的更多相关文章
- BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3336 Solved: 1936[Submit][ ...
- [bzoj1087][scoi2005]互不侵犯king
题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...
- King's Quest —— POJ1904(ZOJ2470)Tarjan缩点
King's Quest Time Limit: 15000MS Memory Limit: 65536K Case Time Limit: 2000MS Description Once upon ...
- 【状压DP】bzoj1087 互不侵犯king
一.题目 Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上.下.左.右,以及左上.左下.右上.右下八个方向上附近的各一个格子,共8个格子. I ...
- ZOJ 2334 Monkey King
并查集+左偏树.....合并的时候用左偏树,合并结束后吧父结点全部定成树的根节点,保证任意两个猴子都可以通过Find找到最厉害的猴子 Monkey King ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 K. King’s Rout
K. King's Rout time limit per test 4 seconds memory limit per test 512 megabytes input standard inpu ...
- BZOJ-1087 互不侵犯King 状压DP+DFS预处理
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...
- POJ1364 King
Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen p ...
- [Educational Codeforces Round 16]A. King Moves
[Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...
随机推荐
- Js跑马灯效果 && 在Vue中使用
DEMO: <!DOCTYPE html><html> <head> <title>滚动播报</title> <meta charse ...
- Backup and Restore MySQL Database using mysqlhotcopy
mysqlhotcopy is a perl script that comes with MySQL installation. This locks the table, flush the ta ...
- HDU 2126 01背包(求方案数)
Buy the souvenirs Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- [CF816E] Karen and Supermarket1 [树形dp]
传送门 - > \(CF816E\) Karen and Supermarket 题意翻译 在回家的路上,凯伦决定到超市停下来买一些杂货. 她需要买很多东西,但因为她是学生,所以她的预算仍然很有 ...
- Robot POJ - 1376
The Robot Moving Institute is using a robot in their local store to transport different items. Of co ...
- Linux下rsync 安装与配置
1.什么是rsync Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 程两个 ...
- 最近研究xcodebuild批量打包的一些心得
http://blog.csdn.net/tlb203/article/details/8131707 转自Rainbird的个人博客 以前的时候只知道做安卓开发的兄弟挺辛苦的,不但开发的时候要适配一 ...
- 链接加载文件gcc __attribute__ section
在阅读源代码的过程中,发现一个头文件有引用: /** The address of the first device table entry. */ extern device_t devices[] ...
- string与double的互相转换
#include <iostream> #include <string> #include <sstream> string DoubleToString(dou ...
- Selenium2+python自动化47-判断弹出框存在(alert_is_present)【转载】
前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(ex ...