给你一个字符串,多次区间询问,问你在该区间内最多能有几个easy重复的子序列。

显然如果只有一次询问,从左到右贪心做即可。

分块,预处理任意两块间的答案,不过要把以e a s y开头的四个答案都处理出来。①

然后再预处理每个点到该点所在块右端点的答案,不过只用考虑e开头的。②

询问的时候,分成三部分,l到r[num[l]]直接得到②部分的答案,中间部分直接得到①的答案,右侧再贪心跑一下就行了。

#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int sum;
int m,n,sz,l[330],r[330],num[100005];
char a[100005],b[4];
int anss[4][330][330],kuainei[330][100005];
int main(){
// freopen("a.in","r",stdin);
scanf("%s",a+1);
n=strlen(a+1);
sz=sqrt((double)n);
for(sum=1;sum*sz<n;++sum)
{
l[sum]=(sum-1)*sz+1;
r[sum]=sum*sz;
for(int i=l[sum];i<=r[sum];i++)
num[i]=sum;
}
l[sum]=sz*(sum-1)+1;
r[sum]=n;
for(int i=l[sum];i<=r[sum];i++)
num[i]=sum;
b[0]='e'; b[1]='a'; b[2]='s'; b[3]='y';
for(int i=1;i<=sum;++i){
for(int j=0;j<4;++j){
int now=j;
for(int k=l[i];k<=n;++k){
if(a[k]==b[now%4]){
++now;
}
if(k==r[num[k]]){
anss[j][i][num[k]]=now-j;
}
}
}
}
for(int i=1;i<=sum;++i){
for(int j=l[i];j<=r[i];++j){
int now=0;
for(int k=j;k<=r[i];++k){
if(a[k]==b[now%4]){
++now;
}
}
kuainei[i][j]=now;
}
}
scanf("%d",&m);
int x,y;
for(int i=1;i<=m;++i){
scanf("%d%d",&x,&y);
if(num[x]+1>=num[y]){
int now=0;
for(int j=x;j<=y;++j){
if(a[j]==b[now%4]){
++now;
}
}
printf("%d\n",now/4);
}
else{
int now=kuainei[num[x]][x];
now=now+anss[now%4][num[x]+1][num[y]-1];
for(int j=l[num[y]];j<=y;++j){
if(a[j]==b[now%4]){
++now;
}
}
printf("%d\n",now/4);
}
}
return 0;
}

【分块】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem A. As Easy As Possible的更多相关文章

  1. Problem I. Increasing or Decreasing MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016

    题面: Problem I. Increasing or DecreasingInput file: standard inputOutput file: standard outputTime li ...

  2. 【循环节】【矩阵乘法】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem F. Fibonacci of Fibonacci

    题意:F(n)为斐波那契数列的第n项,问你F(F(n)) mod 20160519的值. 发现有循环节,F(26880696)=0,F(26880697)=1,.... 于是两次矩乘快速幂即可. #i ...

  3. 【推导】【凸包】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem D. Drawing Hell

    平面上n个点,两个人交替决策,用线段连接两个点,但不能跨越其他点或者已经存在的线段.不能做的人算输,问你谁赢. 实际上,跟两个人的决策无关,n个点将平面三角剖分,只需要算出有几条边即可. 凸包上如果有 ...

  4. 【Trie】MIPT-2016 Pre-Finals Workshop, Taiwan NTU Contest, Sunday, March 27, 2016 Problem B. Be Friends

    题意:一个n个点的完全图,点带权,边权是两端点点权的异或值.问你最小生成树. 一个性质,把所有点按照二进制最高位是否为1划分为2个集合,那么这两个集合间只会有一条边.可以递归处理. 把所有点建成01T ...

  5. 2016 MIPT Pre-Finals Workshop Taiwan NTU Contest

    2016弱校联盟十一专场10.5 传送门 A. As Easy As Possible 假设固定左端点,那么每次都是贪心的匹配\(easy\)这个单词. 从\(l\)开始匹配的单词,将\(y\)的位置 ...

  6. 即将进行论文答辩的我发现MyEclipse 2016 激活过期害得我又一次把 MyEclipse 2016 给重新激活注册,详细的图文解说激活过程

    背景: 在家美滋滋的上着网课享受着因为疫情带来的平静,没想到随着微信.钉钉铃声响起打破了我半年以来的平静的生活:通知我们过完劳动节要进行答辩,由于我的答辩项目是由 MyEclipse 这个工具编写的我 ...

  7. 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟

    Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  8. 【博弈论】【SG函数】【线段树】Petrozavodsk Summer Training Camp 2016 Day 9: AtCoder Japanese Problems Selection, Thursday, September 1, 2016 Problem H. Cups and Beans

    一开始有n个杯子,每个杯子里有一些豆子,两个人轮流操作,每次只能将一个豆子移动到其所在杯子之前的某个杯子里,不过可以移动到的范围只有一段区间.问你是否先手必胜. 一个杯子里的豆子全都等价的,因为sg函 ...

  9. 【线段树】Petrozavodsk Summer Training Camp 2016 Day 6: Warsaw U Contest, XVI Open Cup Onsite, Sunday, August 28, 2016 Problem H. Hay

    有一些草,一开始高度都是0,它们的生长速率不同. 给你一些单增的日期,在这些日期要将>b的草的部分都割掉,问你每次割掉的部分有多少. 将草的生长速率从大到小排序,这样每次割掉的是一个后缀,而且不 ...

随机推荐

  1. python 正则表达式口诀

    正则其实也势利,削尖头来把钱揣: (指开始符号^和结尾符号$)   特殊符号认不了,弄个倒杠来引路: (指\. \*等特殊符号)   倒杠后面跟小w, 数字字母来表示: (\w跟数字字母;\d跟数字) ...

  2. bisai.py

    比赛专用py #!/usr/etc/env python #encoding:utf-8 #by i3ekr #token import re,os,requests res = "(fla ...

  3. handle_level_irq 与handle_edge_irq 的区别【转】

    转自:http://blog.csdn.net/xavierxiao/article/details/6087277 版权声明:本文为博主原创文章,未经博主允许不得转载. Linux 里, handl ...

  4. 在64位linux下编译32位程序

    在64位linux下编译32位程序 http://blog.csdn.net/xsckernel/article/details/38045783

  5. python windows下安装celery调度任务时出错

    由于celery 4.0不支持windows系统.所以用命令pip install Celery安装的celery是最新版4.0的不能在windows下运行. 在windows命令窗口运行: cele ...

  6. 【LabVIEW技巧】LabVIEW中的错误1

    前言 前几日,小黑充电学习意外的看到了下面的这个东东. 编程许久竟然没有见过这样子的错误枚举,甚为好奇,问刘大后才知道是Error Ring,为此恶补一下LabVIEW中与错误处理相关的内容. 错误的 ...

  7. mongodb实现批量修改数据

    var rds = db.REGIPATIENTREC.find({mzh:{$lt:"0"},usrOrg:"石景山中西医结合医院"}); var show ...

  8. JVM 核心机制(类加载器、自定义文件系统类加载器、网络自定义类加载器

  9. window,getComputedStyle,letter-spacing

       js 拿到element的css样式    window.getComputedStyle(ele,[pseuso)    比如想拿到一个element的背景色 window.getComput ...

  10. ps -ef和ps aux的区别

    ps -ef 是用标准格式(standard syntax)显示进程 ,ps aux 是用BSD格式(BSD syntax)来显示进程 ps -ef 结果如下: 部分含义如下: PPID //父进程I ...