当前位置:网站首页>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
边栏推荐
- Interpretation of Cocos creator source code: engine start and main loop
- Wow, elasticsearch multi field weight sorting can play like this
- What if the front end doesn't use spa? - Hacker News
- 有了这个神器,快速告别垃圾短信邮件
- The data of pandas was scrambled and the training machine and testing machine set were selected
- Python saves the list data
- Advanced Vue component pattern (3)
- 零基础打造一款属于自己的网页搜索引擎
- Shh! Is this really good for asynchronous events?
- [actual combat of flutter] pubspec.yaml Configuration file details
猜你喜欢
用一个例子理解JS函数的底层处理机制
Summary of common algorithms of linked list
With the advent of tensorflow 2.0, can pytoch still shake the status of big brother?
一篇文章带你了解CSS3图片边框
Natural language processing - BM25 commonly used in search
Python filtering sensitive word records
仅用六种字符来完成Hello World,你能做到吗?
It's easy to operate. ThreadLocal can also be used as a cache
Named entity recognition in natural language processing: tanford core LP ner (1)
The difference between gbdt and XGB, and the mathematical derivation of gradient descent method and Newton method
随机推荐
With the advent of tensorflow 2.0, can pytoch still shake the status of big brother?
01. SSH Remote terminal and websocket of go language
[JMeter] two ways to realize interface Association: regular representation extractor and JSON extractor
【转发】查看lua中userdata的方法
Wow, elasticsearch multi field weight sorting can play like this
Custom function form of pychar shortcut key
Network security engineer Demo: the original * * is to get your computer administrator rights! [maintain]
6.6.1 localeresolver internationalization parser (1) (in-depth analysis of SSM and project practice)
Who says cat can't do link tracking? Stand up for me
Relationship between business policies, business rules, business processes and business master data - modern analysis
Vue.js Mobile end left slide delete component
Arrangement of basic knowledge points
Linked blocking Queue Analysis of blocking queue
Classical dynamic programming: complete knapsack problem
vue-codemirror基本用法:实现搜索功能、代码折叠功能、获取编辑器值及时验证
有了这个神器,快速告别垃圾短信邮件
一路踩坑,被迫聊聊 C# 代码调试技巧和远程调试
Solve the problem of database insert data garbled in PL / SQL developer
Multi classification of unbalanced text using AWS sagemaker blazingtext
Discussion on the technical scheme of text de duplication (1)