当前位置:网站首页>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
边栏推荐
- React design pattern: in depth understanding of react & Redux principle
- 用一个例子理解JS函数的底层处理机制
- 文件过多时ls命令为什么会卡住?
- 前端未來趨勢之原生API:Web Components
- A brief history of neural networks
- 游戏主题音乐对游戏的作用
- Solve the problem of database insert data garbled in PL / SQL developer
- 每个大火的“线上狼人杀”平台,都离不开这个新功能
- Unity性能优化整理
- Three Python tips for reading, creating and running multiple files
猜你喜欢

The dynamic thread pool in Kitty supports Nacos and Apollo multi configuration centers
![[JMeter] two ways to realize interface Association: regular representation extractor and JSON extractor](/img/cc/17b647d403c7a1c8deb581dcbbfc2f.jpg)
[JMeter] two ways to realize interface Association: regular representation extractor and JSON extractor

TensorFlow中的Tensor是什么?

一篇文章带你了解CSS 渐变知识

一篇文章带你了解CSS 分页实例

If PPT is drawn like this, can the defense of work report be passed?

01. SSH Remote terminal and websocket of go language

Brief introduction of TF flags

Brief introduction and advantages and disadvantages of deepwalk model

The difference between gbdt and XGB, and the mathematical derivation of gradient descent method and Newton method
随机推荐
Mongodb (from 0 to 1), 11 days mongodb primary to intermediate advanced secret
Construction of encoder decoder model with keras LSTM
文件过多时ls命令为什么会卡住?
【转发】查看lua中userdata的方法
Wechat applet: prevent multiple click jump (function throttling)
Python download module to accelerate the implementation of recording
零基础打造一款属于自己的网页搜索引擎
Electron application uses electronic builder and electronic updater to realize automatic update
How to get started with new HTML5 (2)
Python filtering sensitive word records
新建一个空文件占用多少磁盘空间?
Pollard's Rho algorithm
Python Jieba segmentation (stuttering segmentation), extracting words, loading words, modifying word frequency, defining thesaurus
Humor: hacker programming is actually similar to machine learning!
How to demote domain controllers and later in Windows Server 2012
小游戏云开发入门
If PPT is drawn like this, can the defense of work report be passed?
Natural language processing - BM25 commonly used in search
教你轻松搞懂vue-codemirror的基本用法:主要实现代码编辑、验证提示、代码格式化
Analysis of ThreadLocal principle