跳蚤国王要召开第二届内阁会议,所以把所有跳蚤都召集到了会议室。所有跳蚤在会议室的圆桌前坐成了一个圈,从$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的更多相关文章

  1. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  2. [bzoj1087][scoi2005]互不侵犯king

    题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...

  3. King's Quest —— POJ1904(ZOJ2470)Tarjan缩点

    King's Quest Time Limit: 15000MS Memory Limit: 65536K Case Time Limit: 2000MS Description Once upon ...

  4. 【状压DP】bzoj1087 互不侵犯king

    一.题目 Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上.下.左.右,以及左上.左下.右上.右下八个方向上附近的各一个格子,共8个格子. I ...

  5. ZOJ 2334 Monkey King

    并查集+左偏树.....合并的时候用左偏树,合并结束后吧父结点全部定成树的根节点,保证任意两个猴子都可以通过Find找到最厉害的猴子                       Monkey King ...

  6. 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 ...

  7. BZOJ-1087 互不侵犯King 状压DP+DFS预处理

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...

  8. POJ1364 King

    Description Once, in one kingdom, there was a queen and that queen was expecting a baby. The queen p ...

  9. [Educational Codeforces Round 16]A. King Moves

    [Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...

随机推荐

  1. Js跑马灯效果 && 在Vue中使用

    DEMO: <!DOCTYPE html><html> <head> <title>滚动播报</title> <meta charse ...

  2. Backup and Restore MySQL Database using mysqlhotcopy

    mysqlhotcopy is a perl script that comes with MySQL installation. This locks the table, flush the ta ...

  3. HDU 2126 01背包(求方案数)

    Buy the souvenirs Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  4. [CF816E] Karen and Supermarket1 [树形dp]

    传送门 - > \(CF816E\) Karen and Supermarket 题意翻译 在回家的路上,凯伦决定到超市停下来买一些杂货. 她需要买很多东西,但因为她是学生,所以她的预算仍然很有 ...

  5. Robot POJ - 1376

    The Robot Moving Institute is using a robot in their local store to transport different items. Of co ...

  6. Linux下rsync 安装与配置

    1.什么是rsync Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.Rsync使用所谓的“Rsync算法”来使本地和远 程两个 ...

  7. 最近研究xcodebuild批量打包的一些心得

    http://blog.csdn.net/tlb203/article/details/8131707 转自Rainbird的个人博客 以前的时候只知道做安卓开发的兄弟挺辛苦的,不但开发的时候要适配一 ...

  8. 链接加载文件gcc __attribute__ section

    在阅读源代码的过程中,发现一个头文件有引用: /** The address of the first device table entry. */ extern device_t devices[] ...

  9. string与double的互相转换

    #include <iostream> #include <string> #include <sstream> string DoubleToString(dou ...

  10. Selenium2+python自动化47-判断弹出框存在(alert_is_present)【转载】

    前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(ex ...