luogu 3960 列隊

來源:互聯網
上載者:User

標籤:back   string   ++   query   sum   include   tor   alt   int   

noip2017 D2T3 列隊 某zz選手當時直接放棄了寫了50還寫錯了

題目大意:

有一個n行m列的方陣,第i行j列的點編號為(i-1)m+j

每次把第x行y列的點拿出來,然後把這一行它之後的點都向左推,把最後一列x行之後的點都向上推

然後把拿出來的點放到最後一個位置,詢問這個點的編號

思路:

因為n+q並不大 可以動態開點每行維護一個權值線段樹 並對最後一行單獨維護

對於新進來的點使用vector維護

 1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstdlib> 5 #include<cstring> 6 #include<algorithm> 7 #include<vector> 8 #include<queue> 9 #define inf 213906214310 #define ll long long11 #define MAXN 30010012 using namespace std;13 inline int read()14 {15     int x=0,f=1;char ch=getchar();16     while(!isdigit(ch)) {if(ch==‘-‘) f=-1;ch=getchar();}17     while(isdigit(ch)) {x=x*10+ch-‘0‘;ch=getchar();}18     return x*f;19 }20 int n,m,q,rt[MAXN],ls[MAXN*20],rs[MAXN*20],sum[MAXN*20],sz;21 ll ans[MAXN<<1];22 vector <ll> vec[MAXN];23 int query(int &k,int l,int r,int x)24 {25     if(!k) k=++sz,sum[k]=r-l+1;26     sum[k]--;27     if(l==r) return l;28     int mid=l+r>>1,sl=ls[k]?sum[ls[k]]:mid-l+1;29     if(x<=sl) query(ls[k],l,mid,x);30     else query(rs[k],mid+1,r,x-sl);31 }32 int main()33 {34     n=read(),m=read(),q=read();int a,b,res;35     for(int i=1;i<=n;i++) ans[i]=1ll*i*m;36     for(int i=n+1;i<=n+q;i++)37     {38         a=read(),b=read();39         if(b==m) ans[i]=ans[query(rt[0],1,n+q,a)];40         else 41         {42             res=query(rt[a],1,m+q,b);43             if(res<m) ans[i]=(a-1ll)*m*1ll+res;44             else ans[i]=vec[a][res-m];45             vec[a].push_back(ans[query(rt[0],1,n+q,a)]);46         }47         printf("%lld\n",ans[i]);48     }49 }
View Code

 

luogu 3960 列隊

聯繫我們

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