Luogu3514 POI2011 Lollipop 递推、构造
题目传送门:https://www.luogu.org/problemnew/show/P3514
题意:给出一个只有$1$和$2$的长度为$N$的数列,$M$次询问是否存在一段连续子区间和为$K$。$N,M \leq 10^6$
考虑存在答案为$Q$的区间会对其他答案有什么影响。然后能够发现:如果存在答案为$Q$的区间,就一定存在$\leq Q$且奇偶性相同的其他区间
证明:对于答案为$Q$的区间$(Q \geq 2)$,我们有以下方式递推出和为$Q - 2$的区间:
$a.num_l == 2,$新区间为$l+1,r$
$b.num_r == 2,$新区间为$l,r-1$
$c.num_l==num_r==1,$新区间为$l+1,r-1$
所以我们可以算出数列中和最大的和为奇数的区间与和为偶数的区间,并用它递推出所有答案区间,最后$O(1)$回答询问即可。
#include<bits/stdc++.h>
#define MAXN 1000010
using namespace std;
][] , N , M;
inline void culJi(int maxJi);
inline void culOu(int maxOu);
int main(){
ios::sync_with_stdio();
cin.tie();
cout.tie();
string s;
cin >> N >> M >> s;
;
; i <= N ; i++)
sum += (num[i] = s[i - ] == : );
ans[sum][] = ;
ans[sum][] = N;
)
culJi(sum);
else
culOu(sum);
, q = N;
)
p++;
)
q--;
if(p <= q){
< N - q){
sum -= (p - << ) + ;
ans[sum][] = p + ;
ans[sum][] = N;
}
else{
sum -= (N - q << ) + ;
ans[sum][] = ;
ans[sum][] = q - ;
}
)
culJi(sum);
else
culOu(sum);
}
while(M--){
int a;
cin >> a;
])
cout << ans[a][] << ] << '\n';
else
cout << "NIE\n";
}
;
}
void culJi(int maxJi){
){
]] == ){
ans[maxJi - ][] = ans[maxJi][] + ;
ans[maxJi - ][] = ans[maxJi][];
}
else
]] == ){
ans[maxJi - ][] = ans[maxJi][];
ans[maxJi - ][] = ans[maxJi][] - ;
}
else{
ans[maxJi - ][] = ans[maxJi][] + ;
ans[maxJi - ][] = ans[maxJi][] - ;
}
maxJi -= ;
}
}
void culOu(int maxOu){
){
]] == ){
ans[maxOu - ][] = ans[maxOu][] + ;
ans[maxOu - ][] = ans[maxOu][];
}
else
]] == ){
ans[maxOu - ][] = ans[maxOu][];
ans[maxOu - ][] = ans[maxOu][] - ;
}
else{
ans[maxOu - ][] = ans[maxOu][] + ;
ans[maxOu - ][] = ans[maxOu][] - ;
}
maxOu -= ;
}
}
Luogu3514 POI2011 Lollipop 递推、构造的更多相关文章
- hdu 1757 A Simple Math Problem (构造矩阵解决递推式问题)
题意:有一个递推式f(x) 当 x < 10 f(x) = x.当 x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + ...
- [ 9.24 ]CF每日一题系列—— 468A构造递推
Description: 1 - n个数问你能否经过加减乘除这些运算n -1次的操作得到24 Solutrion: 一开始想暴力递推,发现n的范围太大直接否决,也否决了我的跑dfs,后来就像肯定有个递 ...
- HDU 1757 A Simple Math Problem 【矩阵经典7 构造矩阵递推式】
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=1757 A Simple Math Problem Time Limit: 3000/1000 MS (J ...
- HDU4565 So Easy! —— 共轭构造、二阶递推数列、矩阵快速幂
题目链接:https://vjudge.net/problem/HDU-4565 So Easy! Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- poj2166 Heapsort[构造递推]
构造一个n个点的大根堆让全部弹出时交换位置次数最多. 真心佩服我自己智商,这种题都做不出来 交换是在每次弹出堆顶,然后把堆尾元素置于堆顶,然后向下调整时产生的.玩样例可以发现似乎数字1每次都出现在堆最 ...
- 2018 焦作网络赛 L Poor God Water ( AC自动机构造矩阵、BM求线性递推、手动构造矩阵、矩阵快速幂 )
题目链接 题意 : 实际上可以转化一下题意 要求求出用三个不同元素的字符集例如 { 'A' .'B' .'C' } 构造出长度为 n 且不包含 AAA.BBB CCC.ACB BCA.CAC CBC ...
- 利用Cayley-Hamilton theorem 优化矩阵线性递推
平时有关线性递推的题,很多都可以利用矩阵乘法来解决. 时间复杂度一般是O(K3logn)因此对矩阵的规模限制比较大. 下面介绍一种利用利用Cayley-Hamilton theorem加速矩阵乘法的方 ...
- HDU 2842 (递推+矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...
- P1067Warcraft III 守望者的烦恼(十大矩阵问题之七求递推式)
https://vijos.org/p/1067 守望者-warden,长期在暗夜精灵的的首都艾萨琳内担任视察监狱的任务,监狱是成长条行的,守望者warden拥有一个技能名叫“闪烁”,这个技能可以把她 ...
随机推荐
- jsPlumb.jsAPI阅读笔记(官方文档翻译)
jsPlumb DOCS 公司要开始做流程控制器,所以先调研下jsPlumb,下文是阅读jsPlumb提供的document所产生的归纳总结 setup 如果不使用jQuery或者类jQuery库,则 ...
- Salesforce Live Agent 简介
Live Agent Salesforce 内置了即时聊天功能--Live Agent,可以用来作为客服工具. 本文简单介绍了使用 Live Agent 的步骤,主要包含: 启用 Live Agent ...
- 程序员Web面试之前端框架等知识
基于前面2篇博客: 程序员Web面试之jQuery 程序员Web面试之JSON 您已经可以顺利进入Web开发的大门. 但是要动手干,还需要了解一些已有的前端框架.UI套件,即要站在巨人肩膀上而不是从轮 ...
- loadrunner Vugen-Tools General-Options-Replay设置
Vugen-Tools General-Options-Replay设置 by:授客 QQ:1033553122 可以以动画模式或非动画模式(animated mode or non-animated ...
- Angular基础(七) HTTP & Routing
一.HTTP a)Angular提供了自己的HTTP库来调用外部API,为了能够在等待API响应的过程中继续与界面交互,采用异步HTTP请求的方式. b)Get请求,首先导入Http, Respo ...
- Apktool(1)——Apktool的安装
Apktool是google提供的apk的编译工具,有了它就可以做很多事情.比如获取apk的源码,apk汉化,对手机rom包做一些美化. 首先来看看apktool的安装(配置): 以下内容主要翻译字A ...
- Django 信息
Request information USER admin GET No GET data POST No POST data FILES No FILES data COOKIES Variabl ...
- My strength (C-A-R)
My strength: I am good at problem resolving Challenge In the first year when I come to America I pas ...
- [SequenceFile_1] Hadoop 序列文件
1. 关于 SequenceFile 对于日志文件来说,纯文本不适合记录二进制类型数据,通过 SequenceFile 为二进制键值对提供了持久的数据结构,将其作为日志文件的存储格式时,可自定义键(L ...
- 3星|《创投42章经》:前VC投资人的商业评论文集
创投42章经:互联网商业逻辑与投资进阶指南 作者2014年入行VC做投资人,2016年退出改作自媒体.书中主要是作者的各类商业评论的文集,少部分是跟投资相关的内容. 投资相关的内容,有些作者自己的视角 ...