CF Edu54 E. Vasya and a Tree DFS+树状数组

Vasya and a Tree

 

题意:

   给定一棵树,对树有3e5的操作,每次操作为,把树上某个节点的不超过d的子节点都加上值x;

思路:

  多开一个vector记录每个点上的操作。dfs这颗树,同时以深度开一个树状数组,踩到u节点的时候,给数组add(deep, x); add(min(maxn,deep + op[u][i].fi + 1), - op[u][i].se);

搜索下去,反回前得到这个节点的答案,并消去这个点的影响。

//#pragma GCC optimize(3)
//#pragma comment(linker, "/STACK:102400000,102400000")  //c++
// #pragma GCC diagnostic error "-std=c++11"
// #pragma comment(linker, "/stack:200000000")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")

#include <algorithm>
#include  <iterator>
#include  <iostream>
#include   <cstring>
#include   <cstdlib>
#include   <iomanip>
#include    <bitset>
#include    <cctype>
#include    <cstdio>
#include    <string>
#include    <vector>
#include     <stack>
#include     <cmath>
#include     <queue>
#include      <list>
#include       <map>
#include       <set>
#include   <cassert>using namespace std;
#define lson (l , mid , rt << 1)
#define rson (mid + 1 , r , rt << 1 | 1)
#define debug(x) cerr << #x << " = " << x << "\n";
#define pb push_back
#define pq priority_queuetypedef long long ll;
typedef unsigned long long ull;
//typedef __int128 bll;
typedef pair<ll ,ll > pll;
typedef pair<int ,int > pii;
typedef pair<int,pii> p3;//priority_queue<int> q;//这是一个大根堆q
//priority_queue<int,vector<int>,greater<int> >q;//这是一个小根堆q
#define fi first
#define se second
//#define endl '\n'#define OKC ios::sync_with_stdio(false);cin.tie(0)
#define FT(A,B,C) for(int A=B;A <= C;++A)  //用来压行
#define REP(i , j , k)  for(int i = j ; i <  k ; ++i)
#define max3(a,b,c) max(max(a,b), c);
//priority_queue<int ,vector<int>, greater<int> >que;const ll mos = 0x7FFFFFFF;  //2147483647
const ll nmos = 0x80000000;  //-2147483648
const int inf = 0x7f7f7f7f;
const ll inff = 0x3f3f3f3f3f3f3f3f; //18
const int mod = 1e8+7;
const double esp = 1e-8;
const double PI=acos(-1.0);
const double PHI=0.61803399;    //黄金分割点
const double tPHI=0.38196601;template<typename T>
inline T read(T&x){x=0;int f=0;char ch=getchar();while (ch<'0'||ch>'9') f|=(ch=='-'),ch=getchar();while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x=f?-x:x;
}/*-----------------------showtime----------------------*/const int maxn = 3e5+9;ll ans[maxn];vector<pii> op[maxn];vector<int>mp[maxn];ll sum[maxn];int lowbit(int x){return x & (-x);}void add(int x,int val){while(x < maxn){sum[x] += val;x += lowbit(x);}}ll getsum(int x){ll res = 0;while(x > 0){res += sum[x];x -= lowbit(x);}return res;}void dfs(int u, int fa, int deep){for(int i=0; i<op[u].size(); i++){add(deep, op[u][i].se);add(min(maxn,deep + op[u][i].fi + 1), -1ll*op[u][i].se);}for(int i=0; i<mp[u].size(); i++){int v = mp[u][i];if(v == fa)continue;dfs(v, u, deep + 1);}ans[u] = getsum(deep);for(int i=0; i<op[u].size(); i++){add(deep, -1ll*op[u][i].se);add(min(maxn,deep + op[u][i].fi + 1), op[u][i].se);}}
int main(){int n,m;  scanf("%d", &n);for(int i=1; i<n; i++){int u,v;scanf("%d%d", &u, &v);mp[u].pb(v);mp[v].pb(u);}scanf("%d", &m);for(int i=1; i<=m; i++){int v,d,x;scanf("%d%d%d", &v, &d, &x);op[v].pb(pii(d,x));}dfs(1, -1, 1);for(int i=1; i<=n; i++) printf("%lld ", ans[i]);puts("");return 0;
}
CFeduE

 

转载于:https://www.cnblogs.com/ckxkexing/p/9964367.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通信教程 | 串口丢数据常见的原因

UART&#xff1a;Universal Asynchronous Receiver / Transmitter&#xff0c;通用异步收发传输器&#xff0c;即我们通常说的串口。串口是工程师最常用的串行外设之一&#xff0c;但在实际应用中还是会经常遇到各种问题。比如&#xff1a;丢失一字节数据。今天我们就结合STM32…

三次握手 四次握手 与socket函数的关系

我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff0c;浏览器的进程怎么与web服务器通信的&#xff1f;当你用QQ聊天时&#xff0c;QQ进程怎么与服务器或你好友所在的QQ进程通信&#xff1f;这些都得靠socket&am…

110-简单类型之整数类型和小数类型

简单类型-整数 简单类型-小数 float myFloat12.5f;转载于:https://www.cnblogs.com/wuxiaohui1983/p/9965493.html

看了2022华为春季发布会

我之前在一家智能家居的公司干过&#xff0c;而且我是从0开始做的&#xff0c;所以对这个行业多少还是有点了解&#xff0c;我从技术人角度看一下这场发布会。看到了智能家居的几个产品&#xff0c;然后再想起来我们之前做的东西&#xff0c;嗯&#xff0c;感觉我们做的提前做了…

你们还在用8位单片机吗?

工作这些年&#xff0c;一种从事嵌入式相关的工作&#xff0c;大部分接触的是ARM芯片&#xff0c;不过也有接触到8位单片机的机会&#xff0c;在一些控制领域&#xff0c;8位单片机还是有自己的用武之地的&#xff0c;大家也来说一说&#xff0c;自己还有接触到8位单片机吗&…

TCP拥塞控制详解

为了防止网络的拥塞现象 &#xff0c;TCP提出了一系列的拥塞控制机制。最初由V. Jacobson在1988年的论文中提出的TCP的拥塞控制由“慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”组成&#xff0c;后来TCP Reno版本中又针对性的加入了“快速重传(Fast retransmit)”…

北航博士,研究所月入两万

大家好&#xff0c;看到张老师的一篇文章&#xff0c;说的一位研究生大哥的心路历程&#xff0c;分享给大家。作者&#xff1a;易贝贝https://www.zhihu.com/question/64371326/answer/2251105460文章转自&#xff1a;大鱼机器人北航博士&#xff0c;2019 年 7 月毕业&#xff…

c语言随机迷宫生成器,作为新手该如何快速上手 C++

1.C 实现基数树使用 C 实现Radix树&#xff1a;一种基于二进制表示的键值的查找树&#xff0c;尤其适合处理非常长的、可变长度的键值&#xff0c;Patricia 的基本思想是构建一个二叉树。2.C 实现并行计算的K-Means聚类算法使用 C 实现一个完整的面向对象的可并行K-Means算法。…

薪资是跳出来的,不是涨出来的!

下面的内容是转自朱老师的公众号&#xff0c;他说的观点我是认同的&#xff0c;之前在一个国外的论坛&#xff0c;有个老外总结了程序员的涨薪情况&#xff0c;里面就有提到&#xff0c;如果想拿到比较好的薪水&#xff0c;靠的还是跳槽。当然&#xff0c;他还总结了很多其他方…

团队Alpha冲刺(三)

目录 组员情况组员1(组长)&#xff1a;胡绪佩组员2&#xff1a;胡青元组员3&#xff1a;庄卉组员4&#xff1a;家灿组员5&#xff1a;凯琳组员6&#xff1a;丹丹组员7&#xff1a;家伟组员8&#xff1a;政演组员9&#xff1a;鸿杰组员10&#xff1a;刘一好组员11&#xff1a;何…

快速排序非递归算法c语言实现,数据结构与算法----3.5 非递归的快速排序方法

[c]代码库#include using namespace std;#include using namespace std;typedef int KeyType;struct LElemType{KeyType key;};struct SElemType{int a;int b;};struct SList{LElemType *r;int length;};const int StackInitSize10;const int StackInc15;struct SStack{SElemTy…

C++类中成员变量的初始化总结

C类中成员变量的初始化总结 1. 普通的变量&#xff1a; 一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。 1 class CA 2 { 3 public: 4 int data; 5 public: 6 CA(); 7 }; 8 9 CA::CA():data(0) //……#1……

今天把房子定下来了

今天同学L跟我说&#xff0c;今天付了定金&#xff0c;把买房子的事给定下了。先说下疫情这两年的房价在疫情之前&#xff0c;2019年那时候&#xff0c;深圳经历了一波房价上涨&#xff0c;那时候的房价上涨是我完全没有预料到的&#xff0c;但是在2015年房价的那一波房价上涨&…

android群英传 自定义滑动view,Android群英传学习之路-View的滑动

滑动效果是如何产生的&#xff1f;滑动一个View从本质上来说就是移动一个View&#xff0c;改变其当前的坐标。所以&#xff0c;想要滑动一个View&#xff0c;就必须监听该View的触摸事件&#xff0c;并且根据事件的坐标&#xff0c;不断的改变View的坐标从而实现View的滑动。An…

艹,正则表达式!

大家好&#xff0c;我是球哥&#xff0c;转发良许同学的一篇文章。不知道大家有没有被正则表达式支配过的恐惧&#xff1f;看着一行火星文一样的表达式&#xff0c;虽然每一个字符都认识&#xff0c;但放在一起直接就让人蒙圈了~你是不是也有这样的操作&#xff0c;比如你需要使…

Linux Centos安装步骤

在虚拟机VMware10上安装Centos系统步骤 &#xff08;1)首先需要创建一个虚拟机&#xff0c;选择操作系统&#xff0c;进行一系列的硬件配置&#xff0c;选择Centos系统镜像 虚拟机创建完成 虚拟机创建完成后&#xff0c;重新启动虚拟机&#xff0c;就会自动开始安装CentOS系统的…

通信PK电子,谁牛?

工程师很多都有强迫症&#xff0c;有的是拆解强迫症&#xff0c;有的是排线布线强迫症&#xff0c;至今还记得第一堂焊电路板的课上&#xff0c;有同学把跳线排排焊&#xff0c;期末考获得了光荣的A。论起排线布线的手艺&#xff0c;早前&#xff0c;德国弱电工程师的完美布线让…

[机器视觉] SIFT特征-尺度不变特征理解

SIFT特征-尺度不变特征理解 简介 SIFT&#xff0c;即尺度不变特征变换&#xff08;Scale-invariant feature transform&#xff0c;SIFT&#xff09;&#xff0c;是用于图像处理领域的一种描述。这种描述具有尺度不变性&#xff0c;可在图像中检测出关键点&#xff0c;是一种局…

harmonyos手机开发者beta,HarmonyOS 手机应用开发者 Beta 版到来,对开发者意味着什么...

北京时间12月16日&#xff0c;HarmonyOS手机开发者Beta活动在北京国贸开启&#xff0c;这场活动现场的人潮涌动也足以说明一切——用户和开发者对HarmonyOS手机应用开发者Beta版期待已久。作者 | 贾凯强头图 | 华为官方提供打破手机单设备限制&#xff0c;为万物互联而生在活动…

你确定不反编译 likely 看看?

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;下面推荐飞哥的一篇文章&#xff0c;觉得对大家很有帮助&#xff0c;希望大家先看看再扔到收藏夹吃灰&#xff0c;转发不转发看大爷们心情咯&#xff01;今天我给大家分享一个内核中常用的提升性能的小技巧。理解了它对你一…