2020牛客暑期多校训练营(第十场)C Decrement on the Tree —— 思维,边访问转换为点访问,有丶东西

本文主要是介绍2020牛客暑期多校训练营(第十场)C Decrement on the Tree —— 思维,边访问转换为点访问,有丶东西,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

This way

题意:

现在有一棵树,每条边都有一个权值,现在你每次可以选择两个点使得路径上的所有边的权值-1,问你最少需要操作几次。并且依次做m个操作,每次都将一条边的权值改变,并且求最少操作次数。

题解:

在赛场上我就想着DP,树剖什么的,但是搞不出来。这想法有丶东西,由于将一条边的权值-1,那必然要将它连接的两个点访问一次。那么这道题可以变成:最少的访问点的次数。
那么假设一个点连了一条边,它访问次数就是这个边权。
如果连了多条边,那么可以知道如果和这个点相连的边的最大值*2>边的权值和,那么最大的这条边是无法被消掉的,所以这个点要多访问mx*2-v[i]次。否则,就有可能相互消掉,判一下总和的奇偶性即可。
最后由于每条边会被算两次,那么答案/2
tql/QAQ.jpg

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+5;
int x[N],y[N];
ll w[N],v[N];
multiset<ll,greater<ll> >s[N];
ll cal(int i){ll mx=*s[i].begin();if(mx*2>v[i])return mx*2-v[i];return v[i]%2;
}
int main()
{int n,m;scanf("%d%d",&n,&m);ll ans=0;for(int i=1;i<n;i++){scanf("%d%d%lld",&x[i],&y[i],&w[i]);v[x[i]]+=w[i],v[y[i]]+=w[i];s[x[i]].insert(w[i]),s[y[i]].insert(w[i]);}for(int i=1;i<=n;i++)ans+=cal(i);printf("%lld\n",ans/2);while(m--){int p;ll nv;scanf("%d%lld",&p,&nv);ans-=cal(x[p])+cal(y[p]);v[x[p]]-=w[p],v[y[p]]-=w[p];s[x[p]].erase(s[x[p]].find(w[p]));s[y[p]].erase(s[y[p]].find(w[p]));w[p]=nv;v[x[p]]+=w[p],v[y[p]]+=w[p];s[x[p]].insert(nv);s[y[p]].insert(nv);ans+=cal(x[p])+cal(y[p]);printf("%lld\n",ans/2);}return 0;
}

这篇关于2020牛客暑期多校训练营(第十场)C Decrement on the Tree —— 思维,边访问转换为点访问,有丶东西的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881115

相关文章

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Python中Json和其他类型相互转换的实现示例

《Python中Json和其他类型相互转换的实现示例》本文介绍了在Python中使用json模块实现json数据与dict、object之间的高效转换,包括loads(),load(),dumps()... 项目中经常会用到json格式转为object对象、dict字典格式等。在此做个记录,方便后续用到该方

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

WinForm跨线程访问UI及UI卡死的解决方案

《WinForm跨线程访问UI及UI卡死的解决方案》在WinForm开发过程中,跨线程访问UI控件和界面卡死是常见的技术难题,由于Windows窗体应用程序的UI控件默认只能在主线程(UI线程)上操作... 目录前言正文案例1:直接线程操作(无UI访问)案例2:BeginInvoke访问UI(错误用法)案例

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】