首页 > 其他分享 >一本通1549

一本通1549

时间:2022-10-27 19:01:28浏览次数:51  
标签:md int pos 一本 1549 序列 操作 mx

给定一个正整数数列 a1,a2,a3,....a[n],每一个数都在 0∼p–1之间。可以对这列数进行两种操作:

添加操作:向序列后添加一个数,序列长度变成 n+1

询问操作:询问这个序列中最后 m个数中最大的数是多少。

程序运行的最开始,整数序列为空。写一个程序,读入操作的序列,并输出询问操作的答案。

 

 

序列长度最大为操作次数T,每次“添加"操作即改值(需要记一下当前的位置),线段树维护区间最大值

#include <iostream>
#include <algorithm>
using namespace std ;
 const int N=2e5+2;
 #define int long long
#define k1 k<<1
#define k2 k<<1|1
int mod;
 
 int mx[N*4],n,a[N];
 
 int q_max(int k,int l,int r,int x,int y){
     int t=0;
     if(x<=l&&y>=r) return mx[k];
     
     int md=(l+r)/2; 
     if(x<=md) t=max(t,q_max(k1,l,md,x,y)); 
     if(y>md) t=max(t,q_max(k2,md+1,r,x,y)); 
     return t;
 }
 void add(int k,int l,int r,int pos,int v){
     if(l==r&&l==pos){
         mx[k]=v; return;
     }
     int md=(l+r)/2;
     if(pos<=md) add(k1,l,md,pos,v);
    if(pos>md) add(k2,md+1,r,pos,v);
    
     mx[k]=max(mx[k1],mx[k2]);
 }
 void solve(){
     int i,x,T,cnt=0;
     char c;
     scanf("%lld%lld",&T,&mod);
     int last=0;
     
     for(i=1;i<=T;i++){
          scanf(" %c %lld",&c,&x);
          if(c=='Q'){
              printf("%lld\n",last=q_max(1,1,T,cnt-x+1,cnt));
          }
        else{
            cnt++; add(1,1,T,cnt,(x+last)%mod);
        }
     }
 }
 signed main(){ 
   solve();
 }

 



 

标签:md,int,pos,一本,1549,序列,操作,mx
From: https://www.cnblogs.com/towboa/p/16833338.html

相关文章

  • SLOJ P10219 「一本通 6.5 例 1」矩阵 A×B
    题目描述矩阵 AA 规模为n×m,矩阵 BB 规模为m×p,现需要你求A×B。矩阵相乘的定义:n×m 的矩阵与m×p 的矩阵相乘变成n×p 的矩阵,令aik​为矩阵A中的元素,bkj​为矩阵......
  • loj10135.「一本通 4.4 练习 2」祖孙询问
    SLOJP10135.「一本通4.4练习2」祖孙询问题目描述已知一棵n个节点的有根树。有m个询问,每个询问给出了一对节点的编号x和y,询问x与y的祖孙关系。输入格式输入第一行......
  • LOJ #10180. 「一本通 5.5 练习 1」烽火传递
    题目链接:​​传送门​​设表示处理到第个位置的最小花费很明显转移要从之前的个位置转移过来就是最后答案要取这样转移是的,但足以通过本题的正解是单调队列优化由于只......
  • LOJ #10005. 「一本通 1.1 练习 1」数列极差
    题目链接:​​传送门​​贪心题才是难的按照从小到大的顺序排,这样相乘会得到最大值,因为后面的最大值乘的更多最小值同理,就是从大到小处理就可以但是注意在操作的过程中不......
  • LOJ #10202. 「一本通 6.2 练习 5」樱花
    题目链接:​​传送门​​​​别人的题解​​​不想写那么多latex了化完式子之后就是求的约数个数#include<bits/stdc++.h>#defineusingnamespacestd;typedeflonglong......
  • 一本通数位DP小结(更新中)
    「一本通5.3例1」AmountofDegrees点击查看代码//先转化为前缀和//从头到尾枚举每一位:这一位的贡献为前面的位都相同,这一位比原来更小,后面的位任意的方案......
  • 4月23日读书日快到了 | 思维导图、知识地图、分享,更好的读一本书
    电子工业出版社董老师说4月23日读书日快到了,可以介绍下自己是如何读书的、读书对自己的意义等。之前有一段时间跟小伙伴交流过写书的经历,也交流过如何读一本书,正好把这个过......
  • 一本通字符串 哈希 KMP
    [BalticOI2014Day1ThreeFriends]P6739点击查看代码#include<stdio.h>#include<string.h>typedefunsignedlonglongULL;constintN=2e6+5;intn,m;c......
  • Java日志体系一本通
    主要内容1·学习java日志体系及日志工具的演进2·了解日志采集、处理、分析等各阶段的常用中间件3·学会搭建完整的elk日志平台4·学习日志打点,切面,日志文件等输出手段5·项......
  • 介绍一本红色的书
    大家好,我是树义。今天给大家介绍的一本书,就是一本红色的书,名字就叫做《红书》。与我们计算机界的龙书、虎书一样,能起这么经典的名字,其来头必定不小。《红书》是著名的心理学......