当前位置:网站首页>Hdu3974 assign the task segment tree DFS order
Hdu3974 assign the task segment tree DFS order
2020-11-06 21:13:00 【itread01】
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+90; 4 const int inf=1e9+90; 5 #define eps 1e-10 6 #define forn(i,n) for(int i=0;i<n;i++) 7 #define form(i,n) for(int i=1;i<=n;i++) 8 typedef long long ll ; 9 typedef unsigned long long ull ; 10 #define ls l,mid,p<<1 11 #define rs mid+1,r,p<<1|1 12 int a[N]; 13 int n,m,root,rt; 14 int to[N],ver[N],h[N],tot; 15 char c[2]; 16 void add(int x,int y){ 17 to[++tot]=h[x]; 18 ver[tot]=y; 19 h[x]=tot; 20 } 21 struct Node{ 22 int l,r; 23 ll sum; 24 }t[N<<2]; 25 int ml[N],mr[N]; 26 void dfs(int x){ 27 // When I came in +1, 28 ml[x]=++rt; 29 for(int i=h[x];~i;i=to[i]){ 30 dfs(ver[i]); 31 } 32 mr[x]=rt;// You don't need to go back +1 33 } 34 void pd(int p){ 35 if(t[p].sum!=-1){ 36 t[p<<1].sum=t[p<<1|1].sum=t[p].sum; 37 t[p].sum=-1; 38 } 39 } 40 void build(int l,int r,int p){ 41 if(l==r){ 42 t[p].l=t[p].r=l; 43 t[p].sum=-1; 44 return; 45 } 46 t[p]={l,r,-1}; 47 int mid=l+r>>1; 48 build(l,mid,p<<1); 49 build(mid+1,r,p<<1|1); 50 } 51 void modify(int l,int r,int c,int p){ 52 if(l<=t[p].l&&t[p].r<=r){ 53 t[p].sum=c; 54 return; 55 } 56 pd(p); 57 int mid=t[p].l+t[p].r>>1; 58 if(l<=mid)modify(l,r,c,p<<1); 59 if(r>mid)modify(l,r,c,p<<1|1); 60 } 61 int query(int x,int p){ 62 if(t[p].l==t[p].r)return t[p].sum; 63 pd(p); 64 int mid=t[p].l+t[p].r>>1; 65 int ans=-1; 66 if(x<=mid)ans=query(x,p<<1); 67 else ans=query(x,p<<1|1); 68 return ans; 69 } 70 int main(){ 71 // freopen("in.txt","r",stdin); 72 // freopen("out.txt","w",stdout); 73 int T,x,y; 74 cin>>T; 75 form(k,T){ 76 printf("Case #%d:\n",k); 77 scanf("%d",&n); 78 memset(a,0,sizeof(a)); 79 memset(h,-1,sizeof(h)); 80 tot=0,rt=0; 81 forn(i,n-1) { 82 scanf("%d%d", &x, &y); 83 add(y,x); 84 a[x] = 1; 85 } 86 form(i,n){ 87 if(!a[i]){ 88 root=i; 89 break; 90 } 91 } 92 scanf("%d",&m); 93 dfs(root); 94 build(1,n,1); 95 forn(i,m){ 96 scanf("%s",c); 97 if(c[0]=='C'){ 98 scanf("%d",&x); 99 printf("%d\n",query(ml[x],1)); 100 }else{ 101 scanf("%d%d",&x,&y); 102 modify(ml[x],mr[x],y,1); 103 } 104 } 105 } 106 }
版权声明
本文为[itread01]所创,转载请带上原文链接,感谢
边栏推荐
- An article takes you to understand CSS pagination examples
- 递归、回溯算法常用数学基础公式
- Multi robot market share solution
- Outsourcing is really difficult. As an outsourcer, I can't help sighing.
- 事务的本质和死锁的原理
- ERD-ONLINE 免费在线数据库建模工具
- An article taught you to download cool dog music using Python web crawler
- An article will introduce you to HTML tables and their main attributes
- 2020-08-24:什么是小文件?很多小文件会有什么问题?很多小文件怎么解决?(大数据)
- Staying up late summarizes the key points of report automation, data visualization and mining, which is different from what you think
猜你喜欢
From overseas to China, rancher wants to do research on container cloud market
An article will introduce you to CSS3 background knowledge
Markdown tricks
git远程库回退指定版本
Zero basis to build a web search engine of its own
Gather in Beijing! The countdown to openi 2020
Share with Lianyun: is IPFs / filecoin worth investing in?
游戏开发中的新手引导与事件管理系统
How does filecoin's economic model and future value support the price of fil currency breaking through thousands
【:: 是什么语法?】
随机推荐
Zero basis to build a web search engine of its own
Python basic variable type -- list analysis
2020-08-18:介绍下MR过程?
python100例項
What are Devops
How about small and medium-sized enterprises choose shared office?
GUI engine evaluation index
消息队列(MessageQueue)-分析
华为云微认证考试简介
What is the tensor in tensorflow?
Call analysis of start method in JNI thread and callback analysis of run method
Building a new generation cloud native data lake with iceberg on kubernetes
What are manufacturing and new automation technologies?
Application of restful API based on MVC
Some operations kept in mind by the front end foundation GitHub warehouse management
StickEngine-架构12-通信协议
Helping financial technology innovation and development, atfx is at the forefront of the industry
Those who have worked in China for six years and a million annual salary want to share these four points with you
Basic usage of Vue codemirror: search function, code folding function, get editor value and verify in time
ado.net和asp.net的关系