bzoj1012题解
【解题思路】
强制在线线段树/树状数组,没什么好说的。。复杂度O(mlog2m)(线段树)或O(mlog22m)(树状数组)。
【参考代码】
(还naive的时候写的zkw真是翔。。)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define REP(I,start,end) for(int I=start;I<=end;I++)
#define FNI -2147483647-1
using namespace std;
struct zkw_LineTree
{
int startPoint,savTree[];
inline void Clear(int n)
{
startPoint=;
while(startPoint<n)
startPoint<<=;
REP(i,,startPoint+n-)
savTree[i]=FNI;
}
inline void Change(int place,int delta)
{
int p=startPoint+place-;
while(p)
{
savTree[p]=max(savTree[p],delta);
p>>=;
}
}
inline int Query(int left,int right)
{
int l=startPoint+left-,r=startPoint+right-,result=FNI;
bool onRight=false,onLeft=false;
while(l+<r)
{
if(l&)
{
if(!onRight)
{
onRight=true;
result=max(result,savTree[l]);
}
}
else
if(onRight)
result=max(result,savTree[l+]);
l>>=;
if(r&)
{
if(onLeft)
result=max(result,savTree[r-]);
}
else
if(!onLeft)
{
onLeft=true;
result=max(result,savTree[r]);
}
r>>=;
}
if(!onRight)
result=max(result,savTree[l]);
if(!onLeft)
result=max(result,savTree[r]);
return result;
}
}LineTree;
int n,Claris;
int main()
{
scanf("%d%d",&n,&Claris);
int len=,ans=;
LineTree.Clear(n);
while(n--)
{
char ch=getchar();
while(ch!='A'&&ch!='Q')
ch=getchar();
int t;
scanf("%d",&t);
if(ch=='A')
LineTree.Change(++len,(ans+t)%Claris);
else
{
ans=LineTree.Query(len-t+,len);
printf("%d\n",ans);
}
}
return ;
}
bzoj1012题解的更多相关文章
- LG1198/BZOJ1012 「JSOI2008」最大数 线段树+离线
问题描述 LG1198 BZOJ1012 题解 我们把所有操作离线,设一共有\(n\)个插入操作. 于是提前建立\(n\)个数,全部设为\(-INF\) 接着逐个处理操作即可. \(\mathrm{C ...
- BZOJ1012[JSOI2008]最大数maxnumber 题解
题目大意: 维护一个数列,有两种操作:1. 查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2.插入操作:将n加上t,其中t是最近一次查询操作的答案(如果还未执行 ...
- BZOJ1012:[JSOI2008]最大数——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1012 https://www.luogu.org/problemnew/show/P1198 现在 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
随机推荐
- icomoon字体图标引用代码
1.第一步在样式里声明字体:告诉别人我们自己定义的字体. @font-face{ /*声明字体 引用字体*/ font-family:'icomoon'; src:url('fonts/icomoon ...
- 批量修改root密码
公司有五十多台服务器.每台服务器中使用的密码完全不同,同时操作系统也不一样,centos5,6,7 .ubuntu,windows都有,更不用提其中各种小版本. root密码定期更改是一个大问题(wi ...
- PHP FILTER_SANITIZE_NUMBER_FLOAT 过滤器
定义和用法 FILTER_SANITIZE_NUMBER_FLOAT 过滤器删除浮点数中所有非法的字符. 该过滤器默认允许所有数字以及 + - Name: "number_float&quo ...
- 数学二分——cf700A
二分答案 #include<bits/stdc++.h> using namespace std; #define ll long long int n,l,v1,v2,k; double ...
- RzGroupBar
何分多层 procedure TForm1.FormCreate(Sender: TObject); begin RzGroup1.Items.Clear; RzGroup1.Items.Add.Ca ...
- TFS——更改计算机名称,影响TFS使用
今天把自己电脑的计算机名称改了,打开VS的时候,就提示以下的错误: 报错情况 显示错误:工作区 DADI--20141015Q;SD-SERVER\Administrator 未驻留在此计算机上.如果 ...
- psql内部命令及对应sql语句
\?: 查看所有帮助 \l: 查看所有数据库 SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.da ...
- goroutine 需要注意的一个小细节
虽然goroutine 是并发执行的,但是它们并不是并行运行的.如果不告诉Go 额外的东西,同一时刻只会有一个goroutine 执行.利用runtime.GOMAXPROCS(n) 可以设置goro ...
- thinkphp5.0多条件模糊查询以及多条件查询带分页如何保留参数
1,多条件模糊查询 等于:map[‘id′]=array(‘eq′,100);不等于:map[‘id′]=array(‘eq′,100);不等于:map[‘id’] = array(‘neq’,100 ...
- 动态栈-------C语言
使用带头结点的单链表实现 主要使用链表中的头插来实现栈的先进后出的特点 /***************************************************** Author:Si ...