P3514 [POI2011]LIZ-Lollipop(规律+瞎搞)
题意
给一个只有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;
所以我们找到可以用一个串表示的最大偶(奇)数然后一直缩小这个区间就行。
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=;
const int M=;
char s[M];
int n,m,a[N],sum,head,tail,l,r,ll[M],rl[M];
int main(){
scanf("%d%d",&n,&m);
cin>>s;
int len=strlen(s);
for(int i=;i<len;i++){
if(s[i]=='W')a[i+]=;
else a[i+]=;
}
for(int i=;i<=n;i++)
sum+=a[i];
head=;
tail=n;
while(a[head]!=&&head<=n)head++;
head++;
while(a[tail]!=&&tail>=)tail--;
tail--;
l=;r=n;
while(l<=r){
// cout<<sum<<" "<<l<<" "<<r<<endl;
rl[sum]=r;ll[sum]=l;
if(a[l]==&&a[r]==){
l++;r--;sum-=;
}
else if(a[l]==){
l++;sum-=;
}
else{
r--;
sum-=;
}
}
sum=;
if(head<=n||tail>=){
if(head-<n-tail){
l=head;
r=n;
for(int i=head;i<=n;i++)
sum+=a[i];
}
else{
l=;r=tail;
for(int i=;i<=tail;i++)
sum+=a[i];
}
// cout<<sum<<endl;
while(l<=r){
rl[sum]=r;ll[sum]=l;
if(a[l]==&&a[r]==){
l++;r--;sum-=;
}
else if(a[l]==){
l++;sum-=;
}
else{
r--;
sum-=;
}
}
}
for(int i=;i<=m;i++){
int k;
scanf("%d",&k);
if(ll[k]==&&rl[k]==)printf("NIE\n");
else printf("%d %d\n",ll[k],rl[k]);
}
return ;
}
P3514 [POI2011]LIZ-Lollipop(规律+瞎搞)的更多相关文章
- URAL 1203. Scientific Conference(瞎搞)
题目链接 本来觉得这不是经典的贪心吗..果断水一次,wa了,看了看discuss,发现貌似不好水,土土的DP了一下,复杂度很高了,又T了...然后想想单调队列,二分什么的...不好往上加,直接搞了标记 ...
- Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞
Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...
- B. Salty Fish Go! -期望题(瞎搞题)
链接:https://www.nowcoder.com/acm/contest/104/B来源:牛客网 题意:A few days ago, WRD was playing a small game ...
- HDU5532 Almost Sorted Array(最长上升子序列 or 瞎搞个做差的数组)
题目链接:点我 题意:给定一个序列,询问是否能删除一个数让它成为非递减或者非递增的序列. 比如说 删除后的序列是1 3 3 5 或者5 3 3 1 或者1 3 5 或者5 3 1 都可以.只要满足删掉 ...
- TOJ3097: 单词后缀 (字典树 or map瞎搞)
传送门 (<---可以点击的~) 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 描述 有些英语单词后缀都是一样的,现在我们需要从给定的一堆单词里 ...
- 8VC Venture Cup 2016 - Elimination Round B. Cards 瞎搞
B. Cards 题目连接: http://www.codeforces.com/contest/626/problem/B Description Catherine has a deck of n ...
- ubuntu--基础环境瞎搞集合
安装ubuntu系统后有很多东西需要自己瞎搞一下,这里把一些瞎搞的过程记录在这里,方便以后重新装系统后重新配置. 一.安装. 可以在windows下制作启动盘(软碟通),然后开机u盘启动即可安装,预留 ...
- Codeforces631C【栈维护+瞎搞】
题意: 百度. 思路: 如果该查询的R比前面的所有都大,那么前面所有都失效. 那么我先预处理出这些有效的. 那最坏的情况不就是栈里面元素(R)很多 n,n-1,n-2,n-3,n-4而且都是相反排序的 ...
- BZOJ 4236: JOIOJI map瞎搞
分别记录J,O,I,的个数 cnt[char][i] 表示处理到第i位,char的个数 显然当且仅当 cnt[J][i] - cnt[O][i] == cnt[J][j-1] - cnt[O][j-1 ...
随机推荐
- POJ 3269 中位数
题意: 思路: 这道题坑也不少.. 你准备好脑洞了么? 首先 要认真审题 题目中有说:"没有两头牛的吃草位置是相邻的" 这句话让我们省了很多的事儿 (Discuss里有的大神就入了 ...
- Linux部署之批量自动安装系统之测试篇
1. 客户端从网络启动如下 2. 复制vesamenu.c32文件可解决上面的问题 3. 客户端再次启动 4. 选择第一个进 ...
- RocketMQ学习笔记(5)----RocketMQ监控平台rocketmq-console-ng的搭建
1. 下载rocketmq-console-ng 官网地址:https://github.com/apache/rocketmq-externals 拉下来之后,使用idea打开rocketmq-co ...
- 4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
1.摘要: 组推荐的一个挑战性问题:因为不同组的成员就有不同的偏好,如何平衡这些组员的偏好是一个难以解决的问题. 在本文中,作者提出了一个COM的概率模型来建立组活动生成过程. 直觉上: 一个组中的用 ...
- 【BZOJ4016】【FJOI2014】最短路径树问题
题意: Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列 ...
- WPF内嵌WCF服务对外提供接口
要测试本帖子代码请记得管理员权限运行vs. 我写这个帖子的初衷是在我做surface小车的时候有类似的需求,感觉这个功能还挺有意思的,所以就分享给大家,网上有很多关于wcf的文章 我就不一一列举了.公 ...
- [NOIP2015普及组]推销员
题目:洛谷P2672.codevs5126.Vijos P1977 题目大意:有个推销员要去推销,要你求他推销1~n户人家分别最多花多少“疲劳值”.具体见题目. 解题思路:如果用$O(n^2)$做的话 ...
- Java基础学习总结(8)——super关键字
一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引 ...
- POJ——T 3020 Antenna Placement
http://poj.org/problem?id=3020 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9844 A ...
- 这两道题目很相似 最优还钱方式 & 除法推导
http://www.cnblogs.com/grandyang/p/6108158.html http://www.cnblogs.com/grandyang/p/5880133.html 都是根据 ...