题目

题目链接

大意:维护一个数列,有两种操作:

  • 查询操作Q  L:查询当前数列中末尾L个数中的最大的数
  • 插入操作A  n:将n加上t再对D取模,将所得值插入数列末尾

解决方案

由题意知,只有两种操作:单点修改、区间查询

 #include<bits/stdc++.h>
using namespace std; typedef long long ll;
const ll INF = (ll) << ;
const int maxn = + ;
ll maxv[maxn << ];
int n;
ll mod; int ql, qr; //查询[ql, qr]中的最小值
ll query(int o,int L,int R)
{
//printf("o:%d L:%d R:%d\n", o, L, R);
int M = L + (R - L) / ;
ll ans = -INF;
if(ql <= L && R <= qr) return maxv[o];
if(ql <= M) ans = max(ans, query(*o, L, M));
if(qr > M) ans = max(ans, query(*o+, M+, R));
return ans;
} ll P, v; //修改A[p]=v
void update(int o, int L, int R)
{
int M = L + (R-L)/;
if(L == R) maxv[o] = v; //更新叶子结点
else
{
if(P <= M) update(*o, L ,M);
else update(*o+, M+, R);
maxv[o] = max(maxv[*o], maxv[*o+]); //更新非叶子结点
}
} void print_debug(int o, int L, int R)
{
printf("o:%d L:%d R:%d maxv:%lld\n", o, L, R, maxv[o]);
if(R > L)
{
int M = L + (R - L) / ;
print_debug(*o, L, M);
print_debug(*o+, M+, R);
}
} int main()
{
scanf("%d%lld", &n, &mod);
char order[];
int cnt = ;
ll val, t = ; for(int i = ;i <= (n <<);i++) maxv[i] = -INF; //初始化 for(int i = ;i < n;i++)
{
scanf("%s", order);
if(order[] == 'A')
{
scanf("%lld", &val);
P = ++cnt;
v = (val + t + mod) % mod;
update(, , n);
//print_debug(1, 1, n);
}
else
{
int L;
//printf("cnt: %d\n", cnt);
scanf("%d", &L);
ql = cnt - L + ; qr = cnt;
t = query(, , n);
printf("%lld\n", t);
//print_debug(1, 1, n);
}
} return ;
}

P1198最大数——线段树点修改&&模板题的更多相关文章

  1. P4145——线段树点修改&&模板题

    题目 链接 题意:对一个数列进行以下两种操作: 给$[l,r]$中的每个数开平方(下取整) 询问$[l,r]$中各个数的和 解决方法 显然,区间开平方不满足区间可加性,所以对区间中每个数开平方不能通过 ...

  2. P1198 最大数 线段树水题

    这道题模拟一下可以过,但是我们发现线段树也可以安全水过...... 写的线段树只需要滋磁单点修改,区间求max即可 我一开始犯了一个很SB的错误:每次插入修改了t,然后疯狂爆0到怀疑人生... 而且我 ...

  3. 【BZOJ 3196】二逼平衡树 线段树套splay 模板题

    我写的是线段树套splay,网上很多人写的都是套treap,然而本蒟蒻并不会treap 奉上sth神犇的模板: //bzoj3196 二逼平衡树,支持修改某个点的值,查询区间第k小值,查询区间某个值排 ...

  4. 洛谷 - P1198 - 最大数 - 线段树

    https://www.luogu.org/problemnew/show/P1198 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...

  5. codevs 1082 线段树练习3 模板题

    #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ],sum[ ...

  6. HDU1698:Just a Hook(线段树区域更新模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 Problem Description In the game of DotA, Pudge’s meat ...

  7. FZU Problem 2171 防守阵地 II (线段树区间更新模板题)

    http://acm.fzu.edu.cn/problem.php?pid=2171 成段增减,区间求和.add累加更新的次数. #include <iostream> #include ...

  8. HDU 1166 敌兵布阵(线段树/树状数组模板题)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  9. Luogu P1198 BZOJ 1012 最大数 (线段树)

    手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/article/details/77449455 URL: (Lu ...

随机推荐

  1. *#【Python】【基础知识】【运算符】【Python的几类运算符】

    Python的运算符分为以下几类: 算术运算符比较(关系)运算符赋值运算符逻辑运算符位运算符成员运算符身份运算符 以及需要考虑的:运算符优先级 一.算术运算符: 需要注意的,上图是Python 2.0 ...

  2. zabbix监控mysql主从同步和延迟

    https://blog.csdn.net/natmazz/article/details/90581490 https://www.cnblogs.com/01-single/p/10602610. ...

  3. servlet获取checkbox的值出现选中的值为on。问题所在。。。

    <form action="/Http/request06" method="post"> 用户名:<input type="tex ...

  4. 使用pycharm开发web——django2.1.5(三)创建models并进入交互界面shell做一些简单操作

    这里model可以认为是数据对象本身 相当于在写java代码时候model目录下创建的实体类,models.py 中可以包含多个实体类,感觉这个操作挺骚的 下面是polls app里面的models, ...

  5. HttpServletRequest对象(转)

    HttpServletRequest介绍 HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供 ...

  6. 剑指offer16:输入两个单调递增的链表,合成后的链表满足单调不减规则。

    1 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 2 思路与方法 迭代法:两个链表中较小的头结点作为合并后头结点,之后依次合并两个链表中较小的 ...

  7. ffmpeg解码音视频过程(附代码)

    0. 引言 最近一直在使用和学习ffmpeg. 工作中需要拉流解码, 获取音频和视频数据. 这些都是使用ffmpeg处理. 因为对ffmpeg接触不多, 用的不深, 在使用的过程中经常遇到不太懂的地方 ...

  8. Laravel框架与ThinkPHP框架的不同

    作为一个PHP菜鸟初学Laravel框架 在学习过程中我发现了其与TP框架的不同点,由于时间问题和认识还不够完善我先写出其中几点,有错误的地方希望各位大牛斧正... 1.渲染模版方式的不同:在Lara ...

  9. python3 虚拟环境的创建

    创建虚拟环境的方法有很多种,我来分享一下我最常用的虚拟环境的创建方法和一些命令的使用, 什么是虚拟环境? 知道的可以略过,不知道的可以听我简单的说下.虚拟环境这四个字,一听你就明白什么意思了,首先理解 ...

  10. Django-djangorestframework-请求模块-获取请求参数

    目录 请求模块 源码分析 正式使用 总结 请求模块 主要是分析 drf 二次封装后的 request 对象 以及怎么拿到请求传递过来的数据(url 拼接的数据,数据包传过来的数据) 源码分析 源码查看 ...