zoukankan      html  css  js  c++  java
  • 【BZOJ】【2223】【COCI 2009】PATULJCI

    可持久化线段树


      同BZOJ 3524,但是不要像我一样直接贴代码……TAT白白WA了一次,so sad

     1 /**************************************************************
     2     Problem: 2223
     3     User: Tunix
     4     Language: C++
     5     Result: Accepted
     6     Time:804 ms
     7     Memory:73932 kb
     8 ****************************************************************/
     9 
    10 //BZOJ 2223
    11 #include<cmath>
    12 #include<vector>
    13 #include<cstdio>
    14 #include<cstring>
    15 #include<cstdlib>
    16 #include<iostream>
    17 #include<algorithm>
    18 #define rep(i,n) for(int i=0;i<n;++i)
    19 #define F(i,j,n) for(int i=j;i<=n;++i)
    20 #define D(i,j,n) for(int i=j;i>=n;--i)
    21 #define pb push_back
    22 #define CC(a,b) memset(a,b,sizeof(a))
    23 using namespace std;
    24 int getint(){
    25     int v=0,sign=1; char ch=getchar();
    26     while(!isdigit(ch)) {if(ch=='-') sign=-1; ch=getchar();}
    27     while(isdigit(ch))  {v=v*10+ch-'0'; ch=getchar();}
    28     return v*sign;
    29 }
    30 const int N=300010,INF=~0u>>2;
    31 const double eps=1e-8;
    32 /*******************template********************/
    33 int n,m,Lim,a[N];
    34 
    35 struct Tree{
    36     int cnt,l,r;
    37 }t[N*20];
    38 int root[N],cnt;
    39 #define mid (l+r>>1)
    40 void update(int &o,int l,int r,int pos){
    41     t[++cnt]=t[o]; o=cnt; ++t[o].cnt;
    42     if (l==r) return;
    43     if (pos<=mid) update(t[o].l,l,mid,pos);
    44     else update(t[o].r,mid+1,r,pos);
    45 }
    46 int query(int i,int j,int num){
    47     i=root[i],j=root[j];
    48     int l=1,r=Lim;
    49     while(l!=r){
    50         if(t[t[j].l].cnt-t[t[i].l].cnt>num)
    51             r=mid,j=t[j].l,i=t[i].l;
    52         else if(t[t[j].r].cnt-t[t[i].r].cnt>num)
    53             l=mid+1,j=t[j].r,i=t[i].r;
    54         else return 0;
    55     }
    56     return l;
    57 }
    58 #undef mid
    59 int main(){
    60 #ifndef ONLINE_JUDGE
    61     freopen("input.txt","r",stdin);
    62 //    freopen("output.txt","w",stdout);
    63 #endif
    64     n=getint(); Lim=getint();
    65     F(i,1,n) a[i]=getint();
    66     F(i,1,n){
    67         root[i]=root[i-1];
    68         update(root[i],1,Lim,a[i]);
    69     }
    70     m=getint();
    71     F(i,1,m){
    72         int l=getint(),r=getint();
    73         int ans=query(l-1,r,(r-l+1)>>1);
    74         if (ans) printf("yes %d
    ",ans);
    75         else puts("no");
    76     }
    77     return 0;
    78 }
    View Code
  • 相关阅读:
    一个没调好的程序
    bzoj1214 [HNOI2004]FTP服务器
    bzoj4514 [Sdoi2016]数字配对(网络流)
    二分图最大权匹配模板(pascal)
    CSS控制文字,超出部分显示省略号
    新型智慧城市顶层设计经验分享
    移动端浏览器前端优化
    桌面浏览器前端优化
    关于ie8下disabled属性:字体颜色问题
    win10永久激活
  • 原文地址:https://www.cnblogs.com/Tunix/p/4340967.html
Copyright © 2011-2022 走看看