博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3514 [POI2011]LIZ-Lollipop(规律+瞎搞)
阅读量:5048 次
发布时间:2019-06-12

本文共 848 字,大约阅读时间需要 2 分钟。

题意

给一个只有1和2的序列,每次询问有没有一个子串的和为x

( 1≤n,m≤1 000 000 )kkk ( 1≤k≤2 000 000 )

题解

我觉得是道好题。

主要是证明一个性质:假如有一个字串的和为偶(奇)数,那么小于这个偶(奇)数的所有偶(奇)数一定等于这个串的某个字串的和。

我们考虑这个串的边界l,r

假设l==1,r==1那么l++,r--,和可以减2

假设l==2,r==1那么l++,和可以减2;

假设l==1,r==2那么r--,和可以减2;

假设l==2,r==2那么l++或r--和可以减2;

所以我们找到可以用一个串表示的最大偶(奇)数然后一直缩小这个区间就行。

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int N=1000100; 8 const int M=2000100; 9 char s[M];10 int n,m,a[N],sum,head,tail,l,r,ll[M],rl[M];11 int main(){12 scanf("%d%d",&n,&m);13 cin>>s; 14 int len=strlen(s);15 for(int i=0;i
=1)tail--;26 tail--;27 l=1;r=n;28 while(l<=r){29 // cout<
<<" "<
<<" "<
<
=1){44 if(head-1

 

转载于:https://www.cnblogs.com/Xu-daxia/p/9447147.html

你可能感兴趣的文章
java的基本数据类型
查看>>
机器学些技法(9)--Decision Tree
查看>>
静态页面复习--用semantic UI写一个10min首页
查看>>
在Windows下安装64位压缩包版mysql 5.7.11版本的方法
查看>>
drf权限组件
查看>>
输入月份和日期,得出是今年第几天
查看>>
利用mysqldump备份mysql
查看>>
Qt中子窗口全屏显示与退出全屏
查看>>
使用brew安装软件
查看>>
[BZOJ1083] [SCOI2005] 繁忙的都市 (kruskal)
查看>>
吴裕雄 python 机器学习——数据预处理嵌入式特征选择
查看>>
Centos6.4安装JDK
查看>>
201521123069 《Java程序设计》 第4周学习总结
查看>>
线性表的顺序存储——线性表的本质和操作
查看>>
【linux】重置fedora root密码
查看>>
用swing做一个简单的正则验证工具
查看>>
百度坐标(BD-09)、国测局坐标(火星坐标,GCJ-02)和WGS-84坐标互转
查看>>
pig自定义UDF
查看>>
输入名字显示其生日,没有则让输入生日,做记录
查看>>
爬虫综合大作业
查看>>