莫隊演算法模板

來源:互聯網
上載者:User

標籤:memset   col   int   erase   fir   fas   mes   ase   space   

//#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include<algorithm>#include<vector>#include<cstring>#include<map>#include<set>#include<cmath>#include<queue>#include<bitset>#include<utility>#include<functional>#include<iomanip>#include<sstream>#include<ctime>#include<cassert>#define A first#define B second#define mp make_pair#define pb push_back#define pw(x) (1ll << (x))#define sz(x) ((int)(x).size())#define all(x) (x).begin(),(x).end()#define rep(i,l,r) for(int i=(l);i<(r);i++)#define per(i,r,l) for(int i=(r);i>=(l);i--)#define FOR(i,l,r) for(int i=(l);i<=(r);i++)#define eps 1e-9#define PIE acos(-1)#define cl(a,b) memset(a,b,sizeof(a))#define fastio ios::sync_with_stdio(false);cin.tie(0);#define lson l , mid , ls#define rson mid + 1 , r , rs#define ls (rt<<1)#define rs (ls|1)#define INF 0x3f3f3f3f#define lowbit(x) (x&(-x))#define sqr(a) a*a#define ll long long#define vi vector<int>#define pii pair<int, int>#define dd(x) cout << #x << " = " << (x) << ", "#define de(x) cout << #x << " = " << (x) << "\n"#define endl "\n"using namespace std;//**********************************const int maxn=1<<20;int n,m,k;int belong[maxn];ll flag[maxn],ans[maxn],Ans;int a[maxn];int L=1,R=0;//下標從1開始 struct Node{    int l,r,id;}q[maxn];bool cmp(Node a,Node b){    if(belong[a.l]!=belong[b.l])return belong[a.l]<belong[b.l];    return a.r<b.r;}void insert(int x){    Ans+=flag[a[x]^k];//<-----注意順序    flag[a[x]]++;      }void erase(int x){    flag[a[x]]--;   //<-----注意順序                                                            Ans-=flag[a[x]^k]; }//**********************************//**********************************int main(){    scanf("%d%d%d",&n,&m,&k);    int s=sqrt(n);    FOR(i,1,n)scanf("%d",&a[i]),a[i]=a[i]^a[i-1],belong[i]=i/s;    FOR(i,1,m)scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;    sort(q+1,q+1+m,cmp);    flag[0]=1;    FOR(i,1,m){        while(L<q[i].l)erase(L++-1);        while(L>q[i].l)insert(--L-1);        while(R<q[i].r)insert(++R);        while(R>q[i].r)erase(R--);        ans[q[i].id]=Ans;        //erase都是尾碼減        //insert都是首碼加     }    FOR(i,1,m)cout<<ans[i]<<endl;    return 0;}

 

莫隊演算法模板

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.