题解 P1198 【[JSOI2008]最大数】
说起来这还是蒟蒻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]最大数】的更多相关文章
- 洛谷P1198 [JSOI2008]最大数
P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...
- 洛谷 P1198 [JSOI2008]最大数
洛谷 P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. ...
- 【题解】[JSOI2008]最大数
[题解][P1198 JSOI2008]最大数 正难则反,意想不到. 这道题是动态让你维护一个数列,已经在数列里面的数据不做改变,每次在最后加上一个数,强制在线. 既然正着做很难,考虑如果时间倒流,不 ...
- P1198 [JSOI2008]最大数(线段树基础)
P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...
- P1198 [JSOI2008]最大数(单调栈)
P1198 [JSOI2008]最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制: ...
- P1198 [JSOI2008]最大数(线段树)
P1198 [JSOI2008]最大数(线段树) 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值 ...
- 洛谷P1198 [JSOI2008]最大数(单点修改,区间查询)
洛谷P1198 [JSOI2008]最大数 简单的线段树单点问题. 问题:读入A和Q时,按照读入一个字符会MLE,换成读入字符串就可以了. #include<bits/stdc++.h> ...
- 「线段树」「单点修改」洛谷P1198 [JSOI2008]最大数
「线段树」「单点修改」洛谷P1198 [JSOI2008]最大数 题面描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数, ...
- 【题解】洛谷P1198 [JSOI2008] 最大数(线段树)
洛谷P1198:https://www.luogu.org/problemnew/show/P1198 思路 一道水水的线段树 20分钟A掉 这道题只涉及到单点修改和区间查询 所以这道题甚至不用Laz ...
- 洛谷P1198 [JSOI2008]最大数(BZOJ.1012 )
To 洛谷.1198 最大数 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1. 查询操作. 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值. 限制:L不超过当 ...
随机推荐
- 你不知道的JavaScript(三)字符串
JavaScript字符串很容易被认为本质就是字符数组,ECMAScript规范中字符串作为一种单独的string类型,它的底层实现可能是数组,也可能是其他数据结构,因不同的JavaScript引擎而 ...
- EL与JSTL学习(一)EL技术
1.EL 表达式概述 EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL出现的目的是要替代jsp页面中脚本的编写. 2.EL从域中取出数据(EL最重要的作 ...
- exsi中的虚拟机添加磁盘后虚拟机中磁盘不出现
exsi中的虚拟机添加磁盘后虚拟机中磁盘不出现解决: 计算机---> 管理: 这里可以选择磁盘,格式,分区, 改盘符等操作
- swift语言点评二十一-协议
定义有什么,及哪些必须实现. A protocol defines a blueprint of methods, properties, and other requirements that su ...
- 手把手教你如何新建scrapy爬虫框架的第一个项目(下)
前几天小编带大家学会了如何在Scrapy框架下创建属于自己的第一个爬虫项目(上),今天我们进一步深入的了解Scrapy爬虫项目创建,这里以伯乐在线网站的所有文章页为例进行说明. 在我们创建好Scrap ...
- 洛谷2114 bzoj3668[NOI2014]起床困难综合症
题目描述 21世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...
- HDU-5009 Paint Pearls 动态规划 双向链表
题目链接:https://cn.vjudge.net/problem/HDU-5009 题意 给一串序列,可以任意分割多次序列,每次分割的代价是被分割区间中的数字种数. 求分割区间的最小代价.n< ...
- Java XSSF 导出excel 工具类
参数解释: title:导出excel标题.headers 导出到excel显示的列头. columns 对应数据库字段 .list 导出数据1.pox中添加依赖 <dependency> ...
- 紫书 习题8-7 UVa 11925(构造法, 不需逆向)
这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...
- 电源管理ACPI、及APM、GNU/Linux系统下的相应命令使用
/********************************************************************* * Author : Samson * Date ...