zoukankan      html  css  js  c++  java
  • BZOJ-1012 最大数

    做一棵线段树,支持区间查询最大值和单点修改。

    先开一个能容纳200000个数的线段树,初始化全部数为0。

    查询的时候只需要找max(m-l+1,m),其中m是此时数列的长度。

    添加的时候就直接修改第m+1个数,然后m++。

    • var

    • n,d,t,i,a,m:longint;

    • c:char;

    • num:array[1..600005] of longint;

    • function max(a,b:longint):longint;

    • begin

    • if a>b then max:=a else max:=b;

    • end;

    • procedure add(a:longint);

    • var i:longint;

    • begin

    • inc(m);i:=262144+m;

    • num[i]:=a;

    • while i<>1 do

    •   begin

    •   i:=i div 2;

    •   num[i]:=max(num[2*i],num[2*i+1]);

    •   end;

    • end;

    • function que(s,e:longint):longint;

    • begin

    • que:=0;

    • inc(s,262144-1);inc(e,262144+1);

    • while e-s<>1 do

    •   begin

    •   if (s=(s div 2)*2)and(que<num[s+1]) then que:=num[s+1];

    •   if (e=(e div 2)*2+1)and(que<num[e-1]) then que:=num[e-1];

    •   s:=s div 2;e:=e div 2;

    •   end;

    • t:=que;

    • end;

    • begin

    • readln(n,d);

    • for i:=1 to n do

    •   begin

    •   read(c);readln(a);

    •   if c='A' then add((t+a) mod d) else writeln(que(m-a+1,m));

    •   end;

    • end.

  • 相关阅读:
    适配器
    策略
    oom的各种情况
    sql 优化//TODO
    聚簇索引和非聚簇索引
    Shard内部原理
    es集群健康状态
    转载 R语言颜色基础设置
    三维数据的展示
    python 文件保存 出错
  • 原文地址:https://www.cnblogs.com/NanoApe/p/4396764.html
Copyright © 2011-2022 走看看