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,一经查实,立即删除!

相关文章

应用框架的设计与实现学习手札系列(持续更新)

应用框架的设计与实现学习手札 类工厂服务 应用框架的设计与实现学习手札之类工厂服务——反射 转载于:https://www.cnblogs.com/stwyhm/archive/2006/08/14/476061.html

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

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

电脑无法启动故障的10种解决方法

电脑无法启动故障的10种解决方法 开机自检时出现问题后会出现各种各样的英文短句&#xff0c;短句中包含了非常重要的信息&#xff0c;读懂这些信息可以自己解决一些小问题&#xff0c;可是这些英文难倒了一部分朋友&#xff0c;下面是一些常见的BIOS短句的解释&#xff0c;大家…

三次握手 四次握手 与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

c语言 修改密码源码,基于51单片机串口密码修改设计-(源码+电路图)

名称&#xff1a;多功能电子密码锁(使用STM32平台 使用 keiluvision软件&#xff0c;用C语言写代码)系统由STM32单片机核心板电路、7位按键电路、串口电路、电源电路、液晶1602电路、继电器模块电路和LED灯指示电路组成。具体功能&#xff1a;①系统中有3组正确密码&#xff0c…

看了2022华为春季发布会

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

BackGroundWorker用法

在编程中经常会遇到在一个按钮中执行复杂操作&#xff0c;并将复杂操作最后返回的值加入一个ListView或ComboBox中候选。这个时候程序会卡&#xff0c;当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作时出现“线程间操作无效: 从不是创建控件的线程访问它”异常。 …

观易先生品三国

今天下了 易中天 易先生的品三国看了第一集 才知三国演义对三国历史曲解多深另外看到一副 剃头师傅的对联 颇有意思说是以关羽为祖师爷 颇有关羽的口气看天下头颅几许 看老夫手段如何转载于:https://www.cnblogs.com/slightboy/archive/2006/08/19/481439.html

TCP如何保证可靠性

TCP传输控制协议 TCP 协议是一种面向连接的&#xff0c;为不同主机进程间提供可靠数据传输的协议。TCP 协议假定其所使用的网络栈下层协议&#xff08;如IP 协议&#xff09;是非可靠的&#xff0c;其自身提供机制保证数据的可靠性传输。在目前的网络栈协议族中&#xff0c;在需…

c语言 数组循环移动,如何将一个数组的元素循环左移?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #define SIZE(a) (sizeof(a)/sizeof(a[0]))#define HBIT(a) ((a & 0x00000080) ! 0)#define LBIT(a) ((a & 0x00000001) ! 0)int TAB[] {0x10, 0x71, 0x12, 0x10, 0x10, 0x7C, 0x00, 0x00,0x00, 0x00, …

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

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

生成 excel 直接用 httpServletResponse 输出

之前写过一篇文章 《超详细的java生成excel文件并下载》&#xff0c;该文章虽然够详细&#xff0c;也行得通&#xff0c;但还是有一定的缺陷&#xff0c;该文章可以拆分成两个部分&#xff0c;一是指定位置生成excel文件&#xff0c;二是根据地址下载文件。缺陷的部分是会产生中…

获取网站投资(融资成功)的20个自我检查

1、web2.0提了也白提web2.0这是一个概念&#xff0c;打着web2.0的概念&#xff0c;只是说技术如何如何2.0&#xff0c;战略如何2.0&#xff0c;其实意 义真的不大。投资人需要的是一个网民能够接受&#xff0c;并且很有特点的网站&#xff0c;能够满足网民的某个需求&#xff0…

MYSQL AB复制原理

Mysql复制&#xff08;replication&#xff09;是一个异步的复制&#xff0c;从一个Mysql instace&#xff08;称之为Master&#xff09;复制到另一个Mysql instance&#xff08;称之Slave&#xff09;。实现整个复制操作主要由三个进程完成的&#xff0c;其中两个进程在Slave&…

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程序里总是提示缺少分号;,而明明有分号?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼if(lpNULL)printf("********还没存入图书********\n");else{for(s0;s<5;s){while(( szp->snumber[s]!lp->number )&&(lp->next!NULL))lplp->next;if( szp->snumber[s]lp->number){printf(&…

django使用用户名或手机号码登录

django有自己的认证系统&#xff0c;会自动根据用户名和密码进行验证。如果需要使用用户名或手机登录的话&#xff0c;需要重写django的认证后台&#xff0c;并且设置到配置文件中。 重写django的认证后台 class UsernameMobileAuthBackend(ModelBackend):"""用…

ArcUser 2006第2期拾零

前天收到了上半年的两期ArcUser&#xff0c;其中第二期的主题是Imagery In GIS。这一期的“聚焦”是“Using Imagery”&#xff0c;其中包含5篇文章&#xff1a;Leverage Imagery in ArcGISMobile GIS and Digital PhotomappingThe Key to the Present is the PastUnderstandin…