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 ...
 
随机推荐
- Python查看文件属性
			
import os print(os.stat('my_module.py')) 输出: os.stat_result(st_mode=33188, st_ino=7348222, st_dev=16 ...
 - 用JavaScript写一个JD放大镜
			
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - js 暂停几秒后刷新或提交
			
js源码如下: setTimeout(function () { //内容3秒后执行 }, 3000);
 - IntelliJ IDEA2016.1 + maven 创建java web 项目[转]
			
最近开始使用idea 来写java项目了,这个很流行,相比Eclipse方便了很多.功能多了,相对应的使用的复杂度也较高了,因为网上很多的使用和创建项目的简单教程,都是基于老版本的,每个新版本都有不一 ...
 - Github上发布托管和下载
			
打包托管 远程下载安装 git clone https://github/2008nmj/mnist_python 使用git工具和命令行 Git使用场景 (可以不用上传到托管平台) 写论文 分工合作 ...
 - NX二次开发-Ufun API Example
			
UF公共类型 UF_begin_timer计时函数 https://www.cnblogs.com/nxopen2018/p/10957135.html UF_end_timer计时函数 https: ...
 - ionic学习使用笔记(一) 版本更新及创建项目时遇到的问题解决
			
最近开始用ionic开发项目,虽然去年的时候用ionic 2.0 开发过公司的项目,不过现在的ionic已经升级到了ionic framework 3.0 了.而且还有个 ionic-cli . 使用 ...
 - Linux初上手!
			
虚拟机Virtual Box装的Kali Linux,是Debian的发行版本,安装过程不说了,不是硬盘安装也没什么说的,由于是新手所以只有两个分区,一个[/]和一个[swap] 装好之后是xwind ...
 - fiddler抓包工具详解
			
转自:http://www.cnblogs.com/yyhh/p/5140852.html Fiddler 抓包工具总结 阅读目录 1. Fiddler 抓包简介 1). 字段说明 2). Sta ...
 - Windows 驱动模型的发展历史
			
直接从win95/98说起,因为之前的系统基本上没有保护模式的概念,程序员可以直接修改任意内存的数据.在95/98中采用的内核开发模型是VxD(虚拟设备驱动),在dos时期,程序认为它们拥有系统的一切 ...