字符读入为什么用getchar会TLE啊。。。。

P3224 [HNOI2012] 永无乡

@[Akrain](/space/show?uid=137066) 头像让我想起了一些东西
by Ynoi @ 2019-09-06 20:05:54


发下你的getchar?
by 分块 @ 2019-09-06 20:08:31


@[Ynoi](/space/show?uid=124721) 树剖姐姐?
by __OccDreamer__ @ 2019-09-06 20:08:37


@[Akrain](/space/show?uid=137066) 怎么getchar的,麻烦发一下
by 冥诺在线发呆 @ 2019-09-06 20:09:37


我想要你的头像
by 暮光闪闪 @ 2019-09-06 20:12:35


头像警告
by Uichiha_Itachi @ 2019-09-06 20:17:43


```c++ #include<algorithm> #include<iostream> #include<cstdio> #define MAX 100005 using namespace std; int bel[MAX]; struct BST{ int root[MAX],tot; struct Tree{ int ch[2]; int val,size,fa,pos; }tree[MAX]; void pushup(int x){ tree[x].size=tree[tree[x].ch[0]].size+tree[tree[x].ch[1]].size+1; return; } void rotate(int x){ int fa=tree[x].fa;int fra=tree[fa].fa; bool son=(tree[fa].ch[1]==x); tree[x].fa=fra;tree[fa].fa=x; tree[fra].ch[tree[fra].ch[1]==fa]=x; tree[fa].ch[son]=tree[x].ch[son^1]; tree[tree[x].ch[son^1]].fa=fa; tree[x].ch[son^1]=fa; pushup(fa);pushup(x); return; } void splay(int x,int tar,int to){ int u=root[to]; while(u&&tar!=tree[x].fa){ int fa=tree[x].fa;int fra=tree[fa].fa; if(tar!=fra) (tree[fra].ch[1]==fa)^(tree[fa].ch[1]==x)?rotate(x):rotate(fa); rotate(x); } if(!tar) root[to]=x; return; } void insert(int x,int to,int pos,int use,bool opt){ int u=root[to],fa=0; while(u&&tree[u].val!=x){ fa=u; u=tree[u].ch[tree[u].val<x]; } if(!opt) u=++tot; else u=use; tree[u].val=x; tree[u].fa=fa; tree[u].size=1; tree[u].pos=pos; tree[fa].ch[x>tree[fa].val]=u; splay(u,0,to); return; } int kth(int x,int to){ int u=root[to]; if(tree[u].size<x) return -1; while(19260817){ int l=tree[u].ch[0]; if(tree[l].size+1==x) return tree[u].pos; else if(tree[l].size<x){ x-=tree[l].size+1; u=tree[u].ch[1]; } else u=l; } return 19260817; } void delate(int x,int to){ if(tree[x].ch[0]) delate(tree[x].ch[0],to); if(tree[x].ch[1]) delate(tree[x].ch[1],to); bel[tree[x].pos]=to; insert(tree[x].val,to,tree[x].pos,x,1); return; } void union_splay(int x,int y){ int rx=root[x],ry=root[y]; if(tree[rx].size<tree[ry].size) swap(rx,ry); delate(ry,bel[tree[rx].pos]); return; } }slay; struct DSU{ int fa[MAX]; void init(int n){ for(int i=1;i<=n;i++) fa[i]=i; return; } void father(int x,int y){ int fx=find(x),fy=find(y); fa[fx]=fy; return; } int find(int x){ if(fa[x]!=x) fa[x]=find(fa[x]); return fa[x]; } }dsu; int read(){ char c=getchar(); int rt=0,f=1; while(c<'0'||c>'9'){ if(f=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ rt=rt*10+c-'0'; c=getchar(); } return rt*f; } int rkk[MAX],rtot; int main(){ int n=read(),m=read(); dsu.init(n); for(int i=1;i<=n;i++) rkk[i]=read(); for(int i=1;i<=m;i++){ int a=read(),b=read(); dsu.father(b,a); } for(int i=1;i<=n;i++){ if(dsu.find(i)==i){ bel[i]=++rtot; slay.insert(rkk[i],bel[i],i,0,0); } } for(int i=1;i<=n;i++){ int fa=dsu.find(i); if(fa!=i){ bel[i]=bel[fa]; slay.insert(rkk[i],bel[i],i,0,0); } } int t=read(); while(t--){ char c=getchar(); int a=read(),b=read(); if(c=='Q') printf("%d\n",slay.kth(b,bel[a])); else{ slay.union_splay(bel[a],bel[b]); } } return 0; } ```
by Akrain @ 2019-09-06 20:18:10


头像,好,,,好暴力啊QAQ
by Boeing737_MAX_8 @ 2019-09-06 20:18:16


我想要你的头像..
by WhalFaling @ 2019-09-06 20:18:34


19260817警告
by shixuanyu @ 2019-09-06 20:19:04


| 下一页