按深度染色,奇深度的点存反权值。

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector <int> g[];
  5. int t1,t2,t3,seq[],a[],s[],vis[],ind,n,m,src[],frm[],dep[];
  6.  
  7. void dfs(int p) {
  8. vis[p]=;
  9. frm[p]=ind+;
  10. for(int i=;i<g[p].size();i++)
  11. if(vis[g[p][i]]==)
  12. dep[g[p][i]]=dep[p]+,
  13. dfs(g[p][i]);
  14. seq[p]=++ind;
  15. }
  16.  
  17. void build(int p,int l,int r){
  18. if(l==r) a[p]=s[l];
  19. else build(p*,l,(l+r)/),build(p*+,(l+r)/+,r);
  20. }
  21.  
  22. void modify(int p,int l,int r,int ql,int qr,int k){
  23. if(l>qr||r<ql) return;
  24. if(l>=ql&&r<=qr) {a[p]+=k; return;}
  25. a[p*]+=a[p], a[p*+]+=a[p], a[p]=;
  26. modify(p*,l,(l+r)/,ql,qr,k);
  27. modify(p*+,(l+r)/+,r,ql,qr,k);
  28. }
  29.  
  30. int query(int p,int l,int r,int pos){
  31. if(l==r) return a[p];
  32. a[p*]+=a[p], a[p*+]+=a[p], a[p]=;
  33. if(pos<=(l+r)/) return query(p*,l,(l+r)/,pos);
  34. else return query(p*+,(l+r)/+,r,pos);
  35. }
  36.  
  37. int main(){
  38. ios::sync_with_stdio(false);
  39. scanf("%d%d",&n,&m);
  40. for(int i=;i<=n;i++) scanf("%d",&src[i]);
  41. for(int i=;i<n;i++) scanf("%d%d",&t1,&t2), g[t1].push_back(t2), g[t2].push_back(t1);
  42. dep[]=; dfs();
  43. for(int i=;i<=n;i++) dep[i]=-+*(dep[i]%);
  44. for(int i=;i<=n;i++) s[seq[i]]=dep[i]*src[i];
  45. build(,,n);
  46. for(int i=;i<=m;i++) {
  47. scanf("%d%d",&t1,&t2);
  48. if(t1==){
  49. scanf("%d",&t3);
  50. modify(,,n,frm[t2],seq[t2],dep[t2]*t3);
  51. }
  52. else{
  53. printf("%d\n",dep[t2]*query(,,n,seq[t2]));
  54. }
  55. }
  56. return ;
  57. }

Codeforces 383C Propagating tree, 线段树, 黑白染色思想的更多相关文章

  1. codeforces 383C Propagating tree 线段树

    http://codeforces.com/problemset/problem/383/C 题目就是说,  给一棵树,将一个节点的值+val, 那么它的子节点都会-val, 子节点的子节点+val. ...

  2. Codeforces 383C . Propagating tree【树阵,dfs】

    标题效果: 有一棵树,有两种操作模式对本树:1:表示为(1 x val),在NOx加在节点上val,然后x每个节点加上儿子- val.给每个儿子一个儿子在一起-(- val),加到没有儿子为止.2:表 ...

  3. CodeForces 384E Propagating tree (线段树+dfs)

    题意:题意很简单么,给定n个点,m个询问的无向树(1为根),每个点的权值,有两种操作, 第一种:1 x v,表示把 x 结点加上v,然后把 x 的的子结点加上 -v,再把 x 的子结点的子结点加上 - ...

  4. CodeForces 383C Propagating tree

    Propagating tree Time Limit: 2000ms Memory Limit: 262144KB This problem will be judged on CodeForces ...

  5. HDU3974 Assign the task(多叉树转换为线段+线段树区间染色)

    题目大意:有n个人,给你他们的关系(老板和员工),没有直属上司的人就是整个公司的领导者,这意味着n个人形成一棵树(多叉树).当一个人被分配工作时他会让他的下属也做同样的工作(并且立即停止手头正在做的工 ...

  6. hdu 5023(线段树区间染色,统计区间内颜色个数)

    题目描述:区间染色问题,统计给定区间内有多少种颜色? 线段树模板的核心是对标记的处理 可以记下沿途经过的标记,到达目的节点之后一块算,也可以更新的时候直接更新到每一个节点 Lazy操作减少修改的次数( ...

  7. [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路)

    [Codeforces 1197E]Culture Code(线段树优化建图+DAG上最短路) 题面 有n个空心物品,每个物品有外部体积\(out_i\)和内部体积\(in_i\),如果\(in_i& ...

  8. [Codeforces 1199D]Welfare State(线段树)

    [Codeforces 1199D]Welfare State(线段树) 题面 给出一个长度为n的序列,有q次操作,操作有2种 1.单点修改,把\(a_x\)修改成y 2.区间修改,把序列中值< ...

  9. [Codeforces 316E3]Summer Homework(线段树+斐波那契数列)

    [Codeforces 316E3]Summer Homework(线段树+斐波那契数列) 顺便安利一下这个博客,给了我很大启发(https://gaisaiyuno.github.io/) 题面 有 ...

随机推荐

  1. Eversipn STT-MRAM的MJT细胞

    业界一直在寻求取代SRAM.其中之一包括自旋转移力矩MRAM(STT-MRAM).新的存储器带来了一些大胆的主张.例如STT-MRAM具有SRAM的速度和闪存的无波动性,具有无限的耐用性. 图1.ST ...

  2. 解决burpsuit 浏览器您的连接不是私密连接的问题

    转载来源:https://www.cnblogs.com/hun-ya/p/8365255.html Burp Suite要抓HTTPS的包的话,是需要有Burp Suite的CA证书的 为什么要证书 ...

  3. 教你一种简单方法给word和PDF格式的文件使用电子签名

      前言  虽然还处在非常时期,但很多公司已陆陆续续复工或准备复工.   上周,人事妹纸给了我们一份,企业员工健康情况申报表.具体如下 现在问题来了,需要本人签名,电脑打上去的不算,需要手写. 此时, ...

  4. 小白的linux笔记11:放弃gitbook,转战Sphinx

    gitbook生成的html目录不折叠且链接失效 装好了gitbook和nodejs,本以为可以安心的做电子书了. 谁想到gitbook慢的一P,而且导出来的html目录不折叠,最关键的是链接有问题, ...

  5. 《HTML&CSS design and build websites》学习笔记(1)

    Chapter 1: Structure Chapter 2: Text <head>表示标题,默认显示在第一行. <title>表示抬头,显示在浏览器的标签页,还有窗口栏. ...

  6. MongoDB高可用架构集群管理(一)

    MongoDB数据库核心的两个特点:第一个特点是副本集的自动切换,保证数据的高可靠.服务的高可用:第二个特点是自动分片.服务的横向扩展能力. (一)副本集架构 MongoDB的副本集是一组保持相同数据 ...

  7. 折腾vue--使用vscode创建vue项目(二)

    1.安装webpack npm install -g webpack 2.安装sass npm install --save-dev sass-loader npm install --save-de ...

  8. beego orm的使用

    在使用beego model 去操作数据库时 有一些疑惑  找到了一个比较好的博文 原文地址 : https://my.oschina.net/u/252343/blog/829912 (Kelvin ...

  9. .net core 3.0+unit of work (一)

    1.先将unit of work源码下载 2.引入自己的项目 3.根据原始项目示意在自己项目的startup里注册仓储 由于我不想对每个实体都注册一遍,我使用了泛型仓储(core 2.0好像不支持) ...

  10. 洛谷 UVA11388 GCD LCM

    UVA11388 GCD LCM Description of the title PDF The GCD of two positive integers is the largest intege ...