P3128 [USACO15DEC]Max Flow P ( 树上差分 )

Sylvester结式法求解多项式方程 Sylvester结式法,结式,消元法,ctfshow 七夕杯 LUCK7,crypto,WriteUp 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

思路

学习链接
树上差分应用:
多次对树上的一段路径点权 ( 或者边权 ) 加减 x ,最后询问某个点 ( 或边 ) 权。
前置知识:LCA,差分
点权加:
u , v 路径上所有点权加 x ,pos = lca ( u , v ) ,fa = pre [ pos ] [ 0 ] 为 pos 父亲节点
diff [ u ] += x ,diff [ v ] += x ,diff [ pos ] -= x ,diff [ fa ] -= x ;
边权加:
u , v 路径上所有边权加 x ,pos = lca ( u , v) ,每个点 i 记录的边权为 i 与 i 的父亲节点之间边的权值
diff [ u ] += x ,diff [ v ] += x ,diff [ pos ] -= 2 * x ;

代码
// Problem: P3128 [USACO15DEC]Max Flow P
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3128
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define base 233 
#define pb push_back
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e5+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int n,m,head[maxn],tot,diff[maxn];
struct node
{
	int to;
	int next;
}edge[maxn];
int deep[maxn],lg[maxn],pre[maxn][30];

void init()
{
	memset(head,-1,sizeof(head));
	memset(deep,0,sizeof(deep));
	memset(lg,0,sizeof(lg));
	memset(pre,0,sizeof(pre));
	memset(diff,0,sizeof(diff));
	tot=0;
}
void add(int u,int v)
{
	edge[tot].to=v;
	edge[tot].next=head[u];
	head[u]=tot++;
}
void dfs1(int pos,int fa)
{
	pre[pos][0]=fa;
	deep[pos]=deep[fa]+1;
	for(int i=1;i<=lg[deep[pos]];i++)
		pre[pos][i]=pre[pre[pos][i-1]][i-1];
	for(int i=head[pos];i!=-1;i=edge[i].next)
		if(edge[i].to!=fa)
			dfs1(edge[i].to,pos);
}
int lca(int x,int y)
{
	if(deep[x]<deep[y]) swap(x,y);
	while(deep[x]>deep[y])
		x=pre[x][lg[deep[x]-deep[y]]-1];
	if(x==y) return x;
	for(int i=lg[deep[x]]-1;i>=0;i--)
		if(pre[x][i]!=pre[y][i])
			x=pre[x][i],y=pre[y][i];
	return pre[x][0];
}
void dfs2(int pos,int fa)
{
	for(int i=head[pos];i!=-1;i=edge[i].next)
	{
		int v=edge[i].to;
		if(v==fa) continue;
		dfs2(v,pos);
		diff[pos]+=diff[v]; 
	}
}

int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	init();
	cin>>n>>m;
	for(int i=1;i<n;i++)
	{
		int x,y;
		cin>>x>>y;
		add(x,y);
		add(y,x);
	}
	for(int i=1;i<=n;i++)
		lg[i]=lg[i>>1]+1;
	dfs1(1,0);
	while(m--)
	{
		int x,y;
		cin>>x>>y;
		int pos=lca(x,y);
		diff[x]+=1;
		diff[y]+=1;
		diff[pos]+=(-1);
		diff[pre[pos][0]]+=(-1);
	}
	dfs2(1,0);
	int ans=0;
	for(int i=1;i<=n;i++)
		ans=max(ans,diff[i]);
	cout<<ans<<endl;
    return 0;
} 
01 - 什么是SVM 摘要:SVM(共享虚拟内存)技术使CPU和GPU能共享同一虚拟地址空间,简化异构计算编程。传统模型需手动管理CPU/GPU内存和拷贝数据,而SVM允许直接传递指针,自动处理页面迁移和一致性维护。其核心包括统一地址空间、按需迁移、页面故障处理和一致性管理,显著降低编程复杂度并提升性能。通过HMM框架、MMU通知和GPU页面异常等机制实现高效内存共享,支持复杂数据结构,为异构计算带来便利。 阅读详情

相关推荐

手教你如何使用Simulink和相关工具箱模拟和实现无人机的多机接力信号中继的建模

扩大通信范围:单架无人机的通信能力有限,通过多机接力的方式可以显著扩展通信覆盖范围。提高可靠性:当某架无人机出现故障或电量不足时,其他无人机可以接管其任务,确保通信不中断。适应复杂环境:在山区、森林等复杂地形中,多机接力可以绕过障碍物,建立稳定的通信链路。使用Communications Toolbox中的模块来模拟无线通信链路。例如,可以使用模块模拟噪声信道,或者使用模块计算信号衰减。matlab深色版本。

MHD0815的博客 766

P3128 [USACO15DEC] Max Flow P

树上差分

原原的博客 294

同步辐射材料科学应用指南:从XAFS原位实验到数据处理

材料结构分析是材料研究的核心环节,但传统实验室X射线受限于能量固定、亮度不足,往往难以回答原子局域配位、非晶结构及动态演变等关键问题。同步辐射光源以高通量、连续可调、偏振可控及脉冲时间结构等特性,将材料表征从静态观察推进到原位动态追踪层次。基于X射线吸收精细结构谱(XAFS)、原位实验、X射线衍射与散射、微区成像等技术,研究人员可实现元素选择性分析、近邻原子环境解析及真实工况下的结构演变监测。本文从技术原理出发,覆盖实验方案设计、样品制备、现场对光、数据处理与常见故障排查,并结合典型应用场景,为材料科学领域

weixin_32612263的博客 163

P3128 [USACO15DEC] Max Flow P(树上差分)

n(2<=n<=5e4)个隔间之间安装了N-1根管道,隔间的编号从1到N。所有的隔间都被管道连通了。一条运输路线会给它的两个端点处的隔间以及中间途径的所有隔间带来一个单位的运输压力,求压力最大的隔间的压力是多少。先是利用链表建树,将各个节点联系起来,然后假设一条u到v的路径,那么这条路径是u--->lca(u,v)--->v的,所以我们把u--->lca(u,v)与lca(u,v)--->v两条路径各自加1,也就是++power[u],++power[v],power[lca(u,v)]-=2。

serendhyy的博客 191

PX4算法解析:L1制导律

一、前沿 从今天开始,会陆续为大家解读开源飞控软件px4中使用到的各种算法,今天要讲述的是L1制导律,这是固定翼飞机进行路径跟踪的重要算法之一。这个算法是由MIT的研究人员提出,因为具有比较好的路径跟踪效果而得到广泛应用。在这之前,无人机在进行路径跟踪时一般采用基于侧偏距的PD控制器方法,至于为什么使用PD而不使用PID算法,那是因为位置环响应较慢,所以一般在外环采用PD算法,而在内环采用PID算...

weixin_44616080的博客 8253

Zotero插件安装保姆级教程:从Jasminum到Sci-Hub,一站式搞定文献管理

本文提供Zotero插件安装的保姆级教程,从Jasminum到Sci-Hub,一站式搞定文献管理。通过详细配置和实战案例,帮助用户高效构建文献工作流,提升研究效率。重点介绍了元数据抓取、PDF管理、文献分析和知识产出等关键插件的使用方法。

weixin_42531516的博客 169

P3128 Max Flow P(LCA,树上差分)

【代码】P3128 Max Flow P(LCA,树上差分)

m0_63761643的博客 214

基于FPGA的相控阵雷达波束控制系统设计(2)

也就是在计算波控码时0,按2.8125递增,取遍-90

qq_43416206的博客 1812

【洛谷】P3128 [USACO15DEC] Max Flow P 的题解

(LCA 用倍增比较方便),最后用 DFS 遍历整棵树统计和即可。今天就是 CSP 初赛了,祝大家也祝我自己 rp++!,然后再将它们的 LCA 和 LCA 的父亲各减去。其实是一道树上差分的板子题,先建树,对于一条路径。树上差分,差点就被难倒了 qaq。

ZH_qaq的博客 833

【TCAD】AlGaN 器件的Sentaurus仿真

否则,必须在 LatticeParameters Sentaurus Device 的参数文件中的部分。Sentaurus Device 有两个工具实例:第一个工具实例, sd_fdiv ,模拟正向偏置特性,第二个工具实例, sd_rviv ,模拟反向偏置特性直至击穿。对于牛顿求解器,通常应该将非线性迭代次数限制为一个足够小的值,例如 Iterations=20 ,同时通过指定非阻尼迭代次数高于允许的牛顿迭代次数来避免解的阻尼( NotDamped=30 )。晶胞中的 Ga-N 键为橙色。

荷塘阅色 1213

Ubuntu零基础入门到精通【4.4讲】:网络、蓝牙、显示器、声音与输入法设置!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 1485

洛谷 P3128 [USACO15DEC] Max Flow P

洛谷 P3128 [USACO15DEC] Max Flow P,树上差分+倍增LCA

qq_17807067的博客 389

YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026

YOLO系列算法改进 | C3k2改进篇 | 融合DFRL双融合注意力接收层 | 轻量化与全局感受野双突破,适应高分辨率航拍与密集小目标检测场景 | CVPR 2026 (以YOLO26最新目标检测模型为基础,利用C3k2_DFRL创新模块进行改进)

2502_91881744的博客 232

【lca,树上差分】P3128 [USACO15DEC] Max Flow P

树上差分+lca好题

guozhetao的博客 844

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

树链剖分【树上差分】【模版】+洛谷P3128 [USACO15DEC] Max Flow P

Farmer John has installed a new system of N−1N-1N−1 pipes to transport milk between the NNN stalls in his barn (2≤N≤50,0002 \leq N \leq 50,0002≤N≤50,000), conveniently numbered 1…N1 \ldots N1…N. Each pipe connects a pair of stalls, and all stalls are conne

2302_80415058的博客 756

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

P3128 [USACO15DEC] Max Flow P (树上差分 点差分模板)

P3128 树上差分 点差分 模板

2403_87530627的博客 661

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

P3128 [USACO15DEC]Max Flow P【树上差分_点差分(LCA)】

P3128 [USACO15DEC]Max Flow P 题意 一颗树,树上每个结点初始化点权为0. 有k次操作,每次操作对路径<u, v>上每个结点都进行加1操作。问:k次操作全部完成后,点权值最大的结点的点权为多少? 思路 树上差分之点差分模板 无根树转有根树 对路径<u, v>操作时,++sum[u], ++sum[v], -- sum[lca(u, v)]...

L_X_ 454

洛谷P3128 [USACO15DEC] Max Flow P 【考点】:树上差分

本文解决树上路径覆盖统计问题,采用树上差分+LCA+后序遍历的方法。核心步骤:1)建树并预处理深度和倍增父节点;2)对每条路径s-t进行差分标记(milk[s]++,milk[t]++,milk[LCA]--,milk[fa[LCA][0]]--);3)后序遍历统计各节点被覆盖次数;4)输出最大覆盖值。时间复杂度主要取决于LCA查询和后序遍历,均为O(nlogn)。该方法巧妙地将路径覆盖问题转化为差分标记处理,适用于大规模树结构统计场景。

2301_79799657的博客 529

P3128 [USACO15DEC]最大流Max Flow 树上差分

题目链接:https://www.luogu.com.cn/problem/P3128 题目大意: 思路:树上差分模板题。讲解的博客: https://blog.youkuaiyun.com/a_forever_dream/article/details/83505521 对点a-b的点: 对于树上的区间修改问题,也就是a[x]~ a[y]+1,我们只需要将d[x]+1,d[y]+1,d[lca(x,y)]...

H_ang的博客 182

树上差分:点差分(P3128 [USACO15DEC]最大流Max Flow)

吐槽: 昨天学习了差分数组感觉很不错,通过差分递推答案,很节省时间,昨天晚上睡觉前学习了一波树上差分,没学懂,今天临走前补上,挺好 树上差分点差分: 我们要对树上一条链的权值进行修改,我们可以利用树上差分,比一个一个点修改快很多,如果一个一个点修改dfs()时间复杂度爆炸啊! 树上如何进行点差分: 先把两端点加上权值,然后把lca和它的父亲的权值减去,dfs一遍就把一条链上的权值给修改了...

yangzijiangac的博客 251

洛谷 P3128:[USACO15DEC] Max Flow P ← 树上差分(点差分)

​本代码中的 dfs1 + getLCA 是倍增法求 LCA 的代码。详见:https://blog.youkuaiyun.com/hnjzsyjyj/article/details/152203103

hnjzsyjyj的专栏 751

树上差分 P3128 [USACO15DEC]最大流Max Flow

树上差分和线性差分的最基本思想是一模一样的。 点的差分 我们在线性差分上面是吧线段拆成射线,某一个点的标记代表它及以后的元素全部做一个变化;那我们在树上的某一个结点的标记就代表它所有的父亲(包括自己)都做一个变化。假如我们要在两个节点(x,y)之间的路径上的点全部+1,那么我们只需要在x上做+1的标记,y上做+1的标记,lca(x,y)上做-1的标记,father[lca(x,y)]上做-1的标...

Endeavor_G的博客 201

[luogu P3128][USACO15DEC]Max Flow [LCA][树上差分]

题目描述 Farmer John has installed a new system ofpipes to transport milk between thestalls in his barn (), conveniently numbered. Each pipe connects a pair of stalls, and all stalls are connec...

dirushi6322的博客 112

树上的差分详解及模板题 P3128 [USACO15DEC] Max Flow P

以本题为例,节点x和y之间所有的节点都增加1可以转换为节点x和y加1,x和y的公共祖先减2。相当于把x到y当成一个区间来操作,统计时只需算子树和即可。此题比较麻烦的是公共祖先节点要单独分类,在单独开一个数组记每个点当了几次公共祖先,统计时再加上这个值就可以了。树上的差分,顾名思义就是将原本数列的差分操作改成了树上节点和边的差分操作,利用到“差分序列的前缀和就是原序列”的重要性质将树上的操作简化。即区间操作转化为路径操作,前缀和转换为子树和。

mahuatengdediedi的博客 367

洛谷 P3128 [USACO15DEC]最大流Max Flow (树上差分)

FJ给他的牛棚的N(2≤N≤50,000)个隔间之间安装了N-1根管道,隔间编号从1到N。所有隔间都被管道连通了。 FJ有K(1≤K≤100,000)条运输牛奶的路线,第i条路线从隔间si运输到隔间ti。一条运输路线会给它的两个端点处的隔间以及中间途径的所有隔间带来一个单位的运输压力,你需要计算压力最大的隔间的压力是多少。 输入输出格式 输入格式: The first line of...

c3po 369

P3128 [USACO15DEC] Max Flow P题解(树上差分,最近公共祖先,图论)

P3128 [USACO15DEC] Max Flow P题解

脑子不好的小菜的博客 651
上一篇: P3379 -【模板】最近公共祖先(LCA)
下一篇: PAT甲级-1148 Werewolf - Simple Version (20 分)(枚举)
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值