CF1693B Fake Plastic Trees 题解
我们首先考虑叶节点 \(u\),我们必然要向 1 到 \(x\) 的链加上一个权值 \(c\in[l_u,r_u]\),不难发现,由于对一个链加上的权值从根到叶节点满足 \(c_1\le c_2\le c_3\le ...\le c_k\),那么 \(c\) 取最大值 \(r_u\) 自然不劣。接下来考虑非叶节点 \(u\),我们发现所有操作中加到了 \(u\) 子节点 \(v\in Son_u\) 的操作必然会操作到 \(u\) 上面,那么对于 \(u\) 的最大加值 \(\max\sum c_u\le \sum\limits_{v\in Son_u}\max\sum c_v\),我们不妨记这个最大加值为 \(add\),则有如下几种情况:
- \(add<l_u\) 那么我们必然需要向 \(1\) 到 \(u\) 的链进行一次操作,此时与在叶节点时同理,应该增加权值 \(r_u-add\) 使得 \(add\) 最大化为 \(r_u\)。
 - \(add\in[l_u,r_u]\) 此时我们无需对此节点进行操作。
 - \(add>r_u\) 那么我们对于节点 \(u\) 的加值超过了上限,所以我们应该将 \(add\) 下调为 \(r_u\) 之后再上传至其父节点。
 
于是我们就可以愉快地进行 dfs 了。
CODE
#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int> e[200005];
int f[200005],n,ans,t;
struct node{
    int l,r;
}a[200005];
int  dfs(int x){
    if(e[x].empty()){ans++;return a[x].r;}
    int sum=0;
    for(auto i:e[x])sum+=dfs(i);
    if(sum<a[x].l){ans++;return a[x].r;}
    return min(sum,a[x].r);
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>t;
    while(t--){
        ans=0;
        cin>>n;
        for(int i=1;i<=n;i++)e[i].clear();
        for(int i=2;i<=n;i++){cin>>f[i];e[f[i]].push_back(i);}
        for(int i=1;i<=n;i++)cin>>a[i].l>>a[i].r;
        dfs(1);
        cout<<ans<<endl;
    }
    return 0;
}
												
											CF1693B Fake Plastic Trees 题解的更多相关文章
- Hdoj 1392.Surround the Trees  题解
		
Problem Description There are a lot of trees in an area. A peasant wants to buy a rope to surround a ...
 - Gym.102059:   2018-2019 XIX Open Cup, Grand Prix of Korea(寒假gym自训第一场)
		
整体来说,这一场的质量比较高,但是题意也有些难懂. E.Electronic Circuit 题意: 给你N个点,M根线,问它是否是一个合法的电路. 思路: 一个合法的电路,经过一些串联并联关系, ...
 - Validate Binary Search Tree leetcode java
		
题目: Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is define ...
 - 【leetcode刷题笔记】Validate Binary Search Tree
		
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as ...
 - 算法与数据结构基础 - 二叉树(Binary Tree)
		
二叉树基础 满足这样性质的树称为二叉树:空树或节点最多有两个子树,称为左子树.右子树, 左右子树节点同样最多有两个子树. 二叉树是递归定义的,因而常用递归/DFS的思想处理二叉树相关问题,例如Leet ...
 - 算法与数据结构基础 - 递归(Recursion)
		
递归基础 递归(Recursion)是常见常用的算法,是DFS.分治法.回溯.二叉树遍历等方法的基础,典型的应用递归的问题有求阶乘.汉诺塔.斐波那契数列等,可视化过程. 应用递归算法一般分三步,一是定 ...
 - 算法与数据结构基础 - 图(Graph)
		
图基础 图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图.依据不同维度,图可以分为有向图/无向图.有权图/无权图.连通图/非连通图.循环图/非循环图,有向图中的顶点具有入度/出度的概念. 面 ...
 - 算法与数据结构基础 - 深度优先搜索(DFS)
		
DFS基础 深度优先搜索(Depth First Search)是一种搜索思路,相比广度优先搜索(BFS),DFS对每一个分枝路径深入到不能再深入为止,其应用于树/图的遍历.嵌套关系处理.回溯等,可以 ...
 - 【Leetcode周赛】从contest-81开始。(一般是10个contest写一篇文章)
		
Contest 81 (2018年11月8日,周四,凌晨) 链接:https://leetcode.com/contest/weekly-contest-81 比赛情况记录:结果:3/4, ranki ...
 - 【fake题解】[NOI2013]向量内积
		
[fake题解][NOI2013]向量内积 做法1 大暴力.哪里不会T哪里. 做法2 所有数都%=k不影响结果.(废话 k的取值只有2和3,所以肯定是要分类讨论的.k=2肯定简单些啦. k=2 出现的 ...
 
随机推荐
- html docker效果
			
Dock Layout with Flexbox body, html { margin: 0; padding: 0; height: 100%; display: flex; flex-direc ...
 - 信而泰RENIX 802.1ag功能介绍-网络测试仪实操
			
一.EOAM概述 1.以太网 1.1以太网优点 简单易用 价格低廉 高拓展性 大势所趋,一统天下 1.2以太网缺点 可管理性差 定位故障手段少 定位故障速度慢 维护成本高  ...
 - HTTP协议请求/响应格式详解
			
HTTP协议请求格式 HTTP请求是浏览器或其他客户端和服务器之间通信的基础.一个HTTP请求由四个部分组成: 请求行(request line) 请求头(headers) 空行(blank line ...
 - 海康摄像头GB28181语音喊话/双向喊话的配置以及海康摄像头如何在公网GB28181喊话
			
@ 目录 1.背景 2.准备 2.1.服务端必备条件(注意) 2.2.准备语音对讲设备 2.2.1.不支持跨网对讲示例 2.2.2. 支持跨网对讲示例 3.开启音频开始对讲 4.搭建GB28181视频 ...
 - 微软.net表达式编译居然有bug?
			
微软.net表达式编译问题困扰本人很久了, 为此我整理了以下case给大家分享 1. 可行性调研 用表达式把一个对象转化为另一个对象 当一个类含有多个同类型属性时,把相同类型转化提取为公共方法 Lam ...
 - LVM磁盘扩容记录
			
Last login: Sat Dec 28 08:35:14 2019 from 172.17.188.7 [root@zabbixserver ~]# ls anaconda-ks.cfg cor ...
 - nvm安装nodejs 运行use命令时报错exit status 1: ��û���㹻��Ȩ��ִ�д˲�����
			
这是因为权限不够,将任务管理器使用管理员身份打开即可:
 - 【RabbitMQ】消息队列理论部分,另一种环境搭建Docker运行RabbitMQ
			
消息队列与RabbitMQ初探 本章学习目标 理解什么是消息队列以及它解决了什么核心问题. 了解RabbitMQ是什么及其在技术生态中的位置. 另一种方式在本地使用Docker快速搭建一个Rabbit ...
 - [ABC176F] Brave CHAIN
			
[ABC176F] Brave CHAIN 题意 给你 \(3n\) 个数字.每次你可以选取前 \(5\) 个数字,拿走里面任意三个数字,剩下两个,如果拿走的 \(3\) 个数字相等,得分 \(+1\ ...
 - 关于USB 无线 WIF 设备驱动安装的问题
			
以厂商出厂时自带的驱动版本为第一优先 USB 无线 WIFI 设备驱动一般不需要更新,更新时也要先选择官方渠道更新:从设备制造商官网官网下载驱动,避免从芯片厂商(如 Realtek)下载,因为芯片厂 ...