【BZOJ】【2223】【COCI 2009】PATULJCI

來源:互聯網
上載者:User

標籤:

可持久化線段樹

  同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 222311 #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_back22 #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 mid59 int main(){60 #ifndef ONLINE_JUDGE61     freopen("input.txt","r",stdin);62 //    freopen("output.txt","w",stdout);63 #endif64     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\n",ans);75         else puts("no");76     }77     return 0;78 }
View Code

 

【BZOJ】【2223】【COCI 2009】PATULJCI

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.