当前位置:网站首页>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 much disk space does a new empty file take?
- 2020-08-24:什么是小文件?很多小文件会有什么问题?很多小文件怎么解决?(大数据)
- How to prepare for the system design interview
- nacos、ribbon和feign的簡明教程
- Understanding formatting principles
- 如何对数据库账号权限进行精细化管理?
- 嘉宾专访|2020 PostgreSQL亚洲大会阿里云数据库专场:王涛
- Isn't data product just a report? absolutely wrong! There are university questions in this category
- CloudQuery V1.2.0 版本发布
- Gather in Beijing! The countdown to openi 2020
猜你喜欢

Road to simple HTML + JS to achieve the most simple game Tetris

Kubernetes and OAM to build a unified, standardized application management platform knowledge! (Internet disk link attached)

With this artifact, quickly say goodbye to spam messages

Using an example to understand the underlying processing mechanism of JS function

Why is the LS command stuck when there are too many files?

Zero basis to build a web search engine of its own

【ElasticSearch搜索引擎】

To Lianyun analysis: why is IPFs / filecoin mining so difficult?

代码生成器插件与Creator预制体文件解析

常用SQL语句总结
随机推荐
Filecoin has completed a major upgrade and achieved four major project progress!
hdu3974 Assign the task線段樹 dfs序
Vue communication and cross component listening state Vue communication
嘉宾专访|2020 PostgreSQL亚洲大会阿里云数据库专场:王涛
It's time for your financial report to change to a more advanced style -- financial analysis cockpit
An article will take you to understand CSS3 fillet knowledge
Summary of front-end performance optimization that every front-end engineer should understand:
Open source a set of minimalist front and rear end separation project scaffold
Small program introduction to proficient (2): understand the four important files of small program development
行为型模式之解释器模式
Python basic data type -- tuple analysis
Flink's datasource Trilogy 2: built in connector
Flink's datasource Trilogy: direct API
DC-1靶機
大会倒计时|2020 PostgreSQL亚洲大会-中文分论坛议程安排
【学习】接口测试用例编写和测试关注点
StickEngine-架构12-通信协议
The importance of big data application is reflected in all aspects
How about small and medium-sized enterprises choose shared office?
Contract trading system development | construction of smart contract trading platform