BZOJ1012[JSOI2008]最大数maxnumber 题解
题目大意:
维护一个数列,有两种操作:1、 查询当前数列中末尾L个数中的最大的数,并输出这个数的值。限制:L不超过当前数列的长度。2、插入操作:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,再将所得答插入到数列的末尾。初始时数列是空的,没有一个数。
思路:
讲道理这道题用线段树肯定不是最好的(比如用栈更快),但是我现在在学线段树,就拿来练练手。线段树裸题,有单点加入、区间查询操作。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; int da[]; void add(int l,int r,int x,int y,int cur)
{
da[cur]=max(da[cur],y);
if (l==r) return;
int mid=l+r>>;
if (x>mid) add(mid+,r,x,y,cur<<|);
else add(l,mid,x,y,cur<<);
} int ask(int L,int R,int l,int r,int cur)
{
if (L>=l && R<=r) return da[cur];
int mid=L+R>>,ans=;
if (l<=mid) ans=max(ans,ask(L,mid,l,r,cur<<));
if (r>mid) ans=max(ans,ask(mid+,R,l,r,cur<<|));
return ans;
} int main()
{
int m,mod,ans=,n=;
scanf("%d%d",&m,&mod);
for (int i=;i<=m;i++)
{
int l;
char ch=getchar();
while (ch<'A' || ch>'Z') ch=getchar();
scanf("%d",&l);
if (ch=='A')
{
n++;
int x=(l+ans)%mod;
add(,m,n,x,);
}
else printf("%d\n",ans=ask(,m,n-l+,n,));
}
return ;
}
BZOJ1012[JSOI2008]最大数maxnumber 题解的更多相关文章
- bzoj1012: [JSOI2008]最大数maxnumber(貌似是道线段树喔)
1012: [JSOI2008]最大数maxnumber 题目:传送门 题解: 发现自己空了一道水题... 1~210000建线段树,其实就是一道裸题... 单点修改+区间查询...1A~ 代码: # ...
- BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 8748 Solved: 3835[Submi ...
- BZOJ-1012[JSOI2008]最大数maxnumber 线段树区间最值
这道题相对简单下面是题目: 1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MB Submit: 6542 Solve ...
- [BZOJ1012] [JSOI2008] 最大数maxnumber (ST表)
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...
- BZOJ1012 [JSOI2008]最大数maxnumber
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- bzoj1012: [JSOI2008]最大数maxnumber [单调队列]
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. 插 ...
- BZOJ1012:[JSOI2008]最大数maxnumber(线段树)
Description 现在请求你维护一个数列,要求提供以下两种操作:1. 查询操作.语法:Q L 功能:查询当前数列中末尾L 个数中的最大的数,并输出这个数的值.限制:L不超过当前数列的长度.2. ...
- 【听说是线段树】bzoj1012 [JSOI2008]最大数maxnumber
一眼看题目吓了一跳:这TM不就是单调队列吗,200000又怎样,大不了我二分嘛 系统提示:成功开启 手残模式 开始瞎写: #include <cstdio> ]; ]; int m,mod ...
- BZOJ1012——[JSOI2008]最大数maxnumber
1.题目大意:求末尾L个数的最大值,强制在线 2.分析:这个拿线段树可以直接水过,然后我写了一个 维护单调栈, 二分求最大值的短代码,手懒.... #include <cstdio> #i ...
随机推荐
- php导出excel封装类
因为实际情况的需要,导出excel表格在后台开发的过程中会经常用到.下面是我在实际应用中自己整理的一个导出excel类,需要PHPExcel支持,本类很好的完成导出表格的基本样式,保存路径,切换工作薄 ...
- DOM - 5.事件冒泡 + 6.事件中的this
5.事件冒泡 如果元素A嵌套在元素B中,那么A被点击不仅A的onclick事件会被触发,B的onclick也会被触发.触发的顺序是"由内而外" .验证:在页面上添加一个table. ...
- Spell checker
Spell checker Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Subm ...
- Solr入门之(6)配置文件solrconfig.xml
solrconfig.xml包含了用于配置自身行为的绝大部分参数,其作用范围是当前core.该文件位于${solr_home}/solr/core1/conf/下. 参数列表概览: A.lib B.d ...
- NBU expired Media,Media ID not found in EMM database
Subject:When attempting to expire a media in Veritas NetBackup (tm) 6.0 with the bpexpdate command, ...
- PHP获取用户真实IP
function get_client_ip() { if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP' ...
- 10gRAC运行srvctl报错error while loading shared libraries:
数据库10g才会有这个错,因为11g的grid和oracle是分开的. [oracle@news01 orcl]$ srvctl /u01/app/oracle/db_1/jdk/jre/bin/ja ...
- Waiting Processed Cancelable ShowDialog (Release 2)
namespace Test { using System; using System.Windows.Forms; static class Program { /// <summary> ...
- Android学习网站
1 <老罗Android应用开发视频教程> http://www.mobiletrain.org/about/news/android_video2.html
- jBox使用记录
1.不显示底部按钮,可以将buttons设置为buttons:{} 例:$.jBox.open("iframe:http://www.baidu.com", "百度一下& ...