zoukankan      html  css  js  c++  java
  • 【线段树区间最值单点更新模板】BNUOJ 52965 E Excellent Engineers

    http://acm.bnu.edu.cn/v3/external/gym/101512.pdf

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define N 100010
     5 #define ls(p) (p<<1)
     6 #define rs(p) (p<<1|1)
     7 const int INF=1e9;
     8 struct node
     9 {
    10     int a,b,c;
    11 } p[N];
    12 struct segment
    13 {
    14     int l,r,min;
    15 } t[N<<2];
    16 int n;
    17 bool cmpa(const node &p,const node &q)
    18 {
    19     return p.a<q.a;
    20 }
    21 void build(int p,int l,int r)
    22 {
    23     t[p].l=l;t[p].r=r;
    24     t[p].min=INF;
    25     if(l==r)
    26         return ;
    27     int mid=l+r>>1;
    28     build(ls(p),l,mid);
    29     build(rs(p),mid+1,r);
    30 }
    31 int ask(int p,int l,int r)
    32 {
    33     if(l<=t[p].l && t[p].r<=r)
    34         return t[p].min;
    35     int mid=(t[p].l+t[p].r)>>1;
    36     int ans=INF;
    37     if(l<=mid) ans=min(ans,ask(ls(p),l,r));
    38     if(mid<r) ans=min(ans,ask(rs(p),l,r));
    39     return ans;
    40 }
    41 void change(int p,int x,int y)
    42 {
    43     if(t[p].l==t[p].r)
    44     {
    45         t[p].min=min(t[p].min,y);
    46         return;
    47     }
    48     int mid=(t[p].l+t[p].r)>>1;
    49     if(x<=mid) change(ls(p),x,y);
    50     else change(rs(p),x,y);
    51     t[p].min=min(t[ls(p)].min,t[rs(p)].min);
    52 }
    53 int main()
    54 {
    55     int T;
    56     scanf("%d",&T);
    57     while(T--)
    58     {
    59         scanf("%d",&n);
    60         for(int i=1;i<=n;++i)
    61         {
    62             scanf("%d%d%d",&p[i].a,&p[i].b,&p[i].c);
    63         }
    64         sort(p+1,p+n+1,cmpa);
    65         build(1,1,n);
    66         int ans=0;
    67         for(int i=1;i<=n;++i)
    68         {
    69             if(ask(1,1,p[i].b)>p[i].c) ++ans;
    70             change(1,p[i].b,p[i].c);
    71         }
    72         printf("%d
    ",ans);
    73     }
    74 }
    View Code
  • 相关阅读:
    C#-使用Tuple传递多个参数
    CentOS 常用命令
    C#-ToString格式化
    java面对对象(六)--内部类、匿名内部类
    JAVA面对对象(五)——接口
    JAVA面对对象(四)——抽象类
    JAVA面对对象(三)——Super、static、final关键字
    Mybatis缓存
    重启博客
    某大神的装修笔记
  • 原文地址:https://www.cnblogs.com/itcsl/p/7624763.html
Copyright © 2011-2022 走看看