当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- 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
- How much disk space does a new empty file take?
- Summary of front-end interview questions (C, s, s) that front-end engineers need to understand (2)
- Python basic data type -- tuple analysis
- 检测证书过期脚本
- The legality of IPFs / filecoin: protecting personal privacy from disclosure
- An article taught you to download cool dog music using Python web crawler
- 意外的元素..所需元素..
猜你喜欢

事务的本质和死锁的原理

What knowledge do Python automated testing learn?

Use modelarts quickly, zero base white can also play AI!

StickEngine-架构11-消息队列(MessageQueue)

2020-08-18:介绍下MR过程?

How to play sortable JS vuedraggable to realize nested drag function of forms

ES中删除索引的mapping字段时应该考虑的点

【字节跳动 秋招岗位开放啦】Ohayoo!放学别走,我想约你做游戏!!!

嘉宾专访|2020 PostgreSQL亚洲大会阿里云数据库专场:王涛

Flink's datasource Trilogy 2: built in connector
随机推荐
How much disk space does a new empty file take?
ado.net和asp.net的关系
GUI engine evaluation index
The AI method put forward by China has more and more influence. Tianda et al. Mined the development law of AI from a large number of literatures
C# 调用SendMessage刷新任务栏图标(强制结束时图标未消失)
Flink's datasource Trilogy 2: built in connector
How to understand Python iterators and generators?
git远程库回退指定版本
Git rebase is in trouble. What to do? Waiting line
Flink's datasource Trilogy: direct API
image operating system windows cannot be used on this platform
Visual rolling [contrast beauty]
mongo 用户权限 登录指令
JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
Python basic data type -- tuple analysis
The importance of big data application is reflected in all aspects
Live broadcast preview | micro service architecture Learning Series live broadcast phase 3
Isn't data product just a report? absolutely wrong! There are university questions in this category
What is the meaning of sector sealing of filecoin mining machine since the main network of filecoin was put online
Kubernetes and OAM to build a unified, standardized application management platform knowledge! (Internet disk link attached)