说起来这还是蒟蒻AC的第一道省选线段树呢。

这道题和其他线段树最大的不同就是在于本题数组一直在增大。

寻常的线段树蒟蒻习惯用如下的结构体储存,然而对于此题就不行了:

 struct node{
int l, r;
int val;
} tree[maxn << ];

这是因为这道题没有用建树,因此l, r就不存在啊!

那么解决方法就是用朴实的tree数组储存val, l和r则手动传入函数!!

所以根据这个原理,稍微修改一下模板就可以得出全新的两个函数!!

 void Update(ll l, ll r, ll index, ll value, ll pos) {
if(l == r) {
tree[pos] = value;
return ;
}
ll mid = (l + r) >> ;
if(mid >= index) Update(l, mid, index, value, pos << );
if(mid < index) Update(mid + , r, index, value, pos << | );
tree[pos] = max(tree[pos << ], tree[pos << | ]);
} ll Query(ll L, ll R, ll l, ll r, ll pos) {
if(L >= l && R <= r) return tree[pos];
ll mid = (L + R) >> ;
ll ans = ;
if(mid >= l) ans = max(ans, Query(L, mid, l, r, pos << ));
if(mid < r) ans = max(ans, Query(mid + , R, l, r, pos << | ));
return ans;
}

注明:第二个函数中,L,R表示当前区间,l,r表示寻找的区间。

完整AC代码献上:

 #include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; typedef long long ll;
const int maxn = ; ll tree[maxn << ]; ll m, d, t = , len = , x;
char op; void Update(ll l, ll r, ll index, ll value, ll pos) {
if(l == r) {
tree[pos] = value;
return ;
}
ll mid = (l + r) >> ;
if(mid >= index) Update(l, mid, index, value, pos << );
if(mid < index) Update(mid + , r, index, value, pos << | );
tree[pos] = max(tree[pos << ], tree[pos << | ]);
} ll Query(ll L, ll R, ll l, ll r, ll pos) {
if(L >= l && R <= r) return tree[pos];
ll mid = (L + R) >> ;
ll ans = ;
if(mid >= l) ans = max(ans, Query(L, mid, l, r, pos << ));
if(mid < r) ans = max(ans, Query(mid + , R, l, r, pos << | ));
return ans;
} int main() {
cin >> m >> d;
for(ll i = ; i < m; i++){
cin >> op >> x;
if(op == 'Q') {
if(x == ) {
t = ;
cout << t << endl;
} else {
t = Query(, m, len - x + , len, );
cout << t << endl;
}
} else {
len++;
Update(, m, len, (x + t) % d, );
}
}
}

本代码1776ms, 氧化后1276ms。

比较玄学的一件事就是用cin过了,用scanf和快读却TLE了。【滑稽】

题解 P1198 【[JSOI2008]最大数】的更多相关文章

  1. 洛谷P1198 [JSOI2008]最大数

    P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...

  2. 洛谷 P1198 [JSOI2008]最大数

    洛谷 P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. ...

  3. 【题解】[JSOI2008]最大数

    [题解][P1198 JSOI2008]最大数 正难则反,意想不到. 这道题是动态让你维护一个数列,已经在数列里面的数据不做改变,每次在最后加上一个数,强制在线. 既然正着做很难,考虑如果时间倒流,不 ...

  4. P1198 [JSOI2008]最大数(线段树基础)

    P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...

  5. P1198 [JSOI2008]最大数(单调栈)

    P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...

  6. P1198 [JSOI2008]最大数(线段树)

    P1198 [JSOI2008]最大数(线段树) 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值 ...

  7. 洛谷P1198 [JSOI2008]最大数(单点修改,区间查询)

    洛谷P1198 [JSOI2008]最大数 简单的线段树单点问题. 问题:读入A和Q时,按照读入一个字符会MLE,换成读入字符串就可以了. #include<bits/stdc++.h> ...

  8. 「线段树」「单点修改」洛谷P1198 [JSOI2008]最大数

    「线段树」「单点修改」洛谷P1198 [JSOI2008]最大数 题面描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数, ...

  9. 【题解】洛谷P1198 [JSOI2008] 最大数(线段树)

    洛谷P1198:https://www.luogu.org/problemnew/show/P1198 思路 一道水水的线段树 20分钟A掉 这道题只涉及到单点修改和区间查询 所以这道题甚至不用Laz ...

  10. 洛谷P1198 [JSOI2008]最大数(BZOJ.1012 )

    To 洛谷.1198 最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当 ...

随机推荐

  1. 你不知道的JavaScript(三)字符串

    JavaScript字符串很容易被认为本质就是字符数组,ECMAScript规范中字符串作为一种单独的string类型,它的底层实现可能是数组,也可能是其他数据结构,因不同的JavaScript引擎而 ...

  2. EL与JSTL学习(一)EL技术

    1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据(EL最重要的作 ...

  3. exsi中的虚拟机添加磁盘后虚拟机中磁盘不出现

    exsi中的虚拟机添加磁盘后虚拟机中磁盘不出现解决: 计算机---> 管理: 这里可以选择磁盘,格式,分区, 改盘符等操作

  4. swift语言点评二十一-协议

    定义有什么,及哪些必须实现. A protocol defines a blueprint of methods, properties, and other requirements that su ...

  5. 手把手教你如何新建scrapy爬虫框架的第一个项目(下)

    前几天小编带大家学会了如何在Scrapy框架下创建属于自己的第一个爬虫项目(上),今天我们进一步深入的了解Scrapy爬虫项目创建,这里以伯乐在线网站的所有文章页为例进行说明. 在我们创建好Scrap ...

  6. 洛谷2114 bzoj3668[NOI2014]起床困难综合症

    题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...

  7. HDU-5009 Paint Pearls 动态规划 双向链表

    题目链接:https://cn.vjudge.net/problem/HDU-5009 题意 给一串序列,可以任意分割多次序列,每次分割的代价是被分割区间中的数字种数. 求分割区间的最小代价.n< ...

  8. Java XSSF 导出excel 工具类

    参数解释: title:导出excel标题.headers 导出到excel显示的列头. columns 对应数据库字段 .list 导出数据1.pox中添加依赖 <dependency> ...

  9. 紫书 习题8-7 UVa 11925(构造法, 不需逆向)

    这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...

  10. 电源管理ACPI、及APM、GNU/Linux系统下的相应命令使用

    /*********************************************************************  * Author  : Samson  * Date   ...