当前位置:网站首页>hdu3974 Assign the task線段樹 dfs序
hdu3974 Assign the task線段樹 dfs序
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 //進來的時候+1, 28 ml[x]=++rt; 29 for(int i=h[x];~i;i=to[i]){ 30 dfs(ver[i]); 31 } 32 mr[x]=rt;//返回的時候不需要+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]所创,转载请带上原文链接,感谢
https://www.itread01.com/content/1604668082.html
边栏推荐
- 一篇文章带你了解CSS3圆角知识
- How to become a data scientist? - kdnuggets
- 小游戏云开发入门
- Analysis of ThreadLocal principle
- 一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试
- Custom function form of pychar shortcut key
- Summary of common algorithms of binary tree
- Network programming NiO: Bio and NiO
- Interface pressure test: installation, use and instruction of siege pressure test
- 5.4 static resource mapping
猜你喜欢
With the advent of tensorflow 2.0, can pytoch still shake the status of big brother?
一部完整的游戏,需要制作哪些音乐?
Mongodb (from 0 to 1), 11 days mongodb primary to intermediate advanced secret
一篇文章带你了解CSS3圆角知识
[C / C + + 1] clion configuration and running C language
一篇文章带你了解CSS 渐变知识
Summary of common algorithms of linked list
小游戏云开发入门
Construction of encoder decoder model with keras LSTM
Shh! Is this really good for asynchronous events?
随机推荐
[efficiency optimization] Nani? Memory overflow again?! It's time to sum up the wave!!
Custom function form of pychar shortcut key
每个前端工程师都应该懂的前端性能优化总结:
Analysis of query intention recognition
NLP model Bert: from introduction to mastery (1)
文件过多时ls命令为什么会卡住?
Simple summary of front end modularization
[C / C + + 1] clion configuration and running C language
Python基础数据类型——tuple浅析
Python基础变量类型——List浅析
ES6学习笔记(二):教你玩转类的继承和类的对象
Chainlink brings us election results into blockchain everipedia
DRF JWT authentication module and self customization
Summary of common algorithms of binary tree
Linked blocking Queue Analysis of blocking queue
Discussion on the development practice of aspnetcore, a cross platform framework
带你学习ES5中新增的方法
Music generation through deep neural network
6.6.1 localeresolver internationalization parser (1) (in-depth analysis of SSM and project practice)
6.4 viewresolver view parser (in-depth analysis of SSM and project practice)