L :WeChat Walk
生活随笔
收集整理的這篇文章主要介紹了
L :WeChat Walk
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
詳見(jiàn)代碼
#include<cstdio> #include<iostream> #include<cstring> #include<vector> #include<map> #include<algorithm> #include<cmath> using namespace std; typedef long long ll; const int N=2e5+10;int h[N],e[N<<1],ne[N<<1],idx=0; void add(int a,int b){e[idx]=b,ne[idx]=h[a],h[a]=idx++;return ;} int n,m,q; int cham[N],bs[N],big[N],in[N],id[N],ans[N]; vector<int>c[N];//存附近的大點(diǎn) ; vector<int>B[550][11000];//存大點(diǎn)附近的小點(diǎn); int main() {memset(h,-1,sizeof h);scanf("%d%d%d",&n,&m,&q);int siz=sqrt(n)+1;while(m--){int a,b;scanf("%d%d",&a,&b); add(a,b),add(b,a);in[a]++,in[b]++;}idx=1;for(int i=1;i<=n;i++)if(in[i]>siz)id[i]=idx++;//給大點(diǎn)編號(hào)1-idx-1; for(int i=1;i<=n;i++)if(id[i])//大點(diǎn) for(int u=h[i];~u;u=ne[u])if(id[e[u]])//附近的大點(diǎn) c[i].push_back(e[u]);for(int t=1;t<=q;t++) //大點(diǎn)-大點(diǎn) 更新大點(diǎn)的時(shí)候?qū)Υ簏c(diǎn)無(wú)影響 { //大點(diǎn)-小點(diǎn) 更新大點(diǎn)的時(shí)候遍歷小點(diǎn)int a,b; //小點(diǎn)-大點(diǎn) 更新小點(diǎn)的時(shí)候要把他加到對(duì)應(yīng)大點(diǎn)的步數(shù)中因?yàn)榇簏c(diǎn)對(duì)應(yīng)小點(diǎn)的步數(shù)要枚舉; scanf("%d%d",&a,&b);//小點(diǎn)-小點(diǎn) 更新小點(diǎn)的時(shí)候?qū)π↑c(diǎn)沒(méi)影響 bs[a]+=b; //步數(shù)加 if(id[a]&&!cham[a]) //所以如果是冠軍并且是大點(diǎn)的話就不用了; {int ma=0; for(int i=0;i<c[a].size();i++)//大點(diǎn)附近的大點(diǎn); {int j=c[a][i];ma=max(ma,bs[j]);if(cham[j]&&bs[a]>=bs[j])ans[j]+=t-cham[j],cham[j]=0;}for(int i=bs[a]-b+1;i<=bs[a];i++)for(auto u:B[id[a]][i])if(cham[u]&&bs[u]<=bs[a])ans[u]+=t-cham[u],cham[u]=0;//更新; // int i=10000; //這步感覺(jué)可以存?zhèn)€big數(shù)組,。。。。 //不存的話就卡時(shí)間了; // while(!B[id[a]][i].size())i--;ma=max(ma,big[a]); if(!cham[a]&&ma<bs[a])cham[a]=t;}else if(!id[a]){//小點(diǎn) 遍歷 int ma=0;for(int i=h[a];~i;i=ne[i]){int j=e[i];ma=max(ma,bs[j]);if(id[e[i]])B[id[e[i]]][bs[a]].push_back(a),big[j]=max(big[j],bs[a]);if(cham[j]&&bs[a]>=bs[j])ans[j]+=t-cham[j],cham[j]=0;}if(bs[a]>ma&&!cham[a])cham[a]=t;}}for(int i=1;i<=n;i++){if(cham[i])ans[i]+=q-cham[i];printf(i==n?"%d":"%d\n",ans[i]);}return 0; }總結(jié)
以上是生活随笔為你收集整理的L :WeChat Walk的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HEVC编码结构简要总结
- 下一篇: Building Fire Statio