bzoj4390: [Usaco2015 dec]Max Flow(LCA+树上差分)
题目大意:给出一棵树,n(n<=5w)个节点,k(k<=10w)次修改,每次给定s和t,把s到t的路径上的点权+1,问k次操作后最大点权。
对于每次修改,给s和t的点权+1,给lca(s,t)和lca(s,t)的父亲的点权-1,每一个点的权就是它与它的子树权和,实际上就是树上的差分,又涨姿势了。。。
代码如下:
uses math;
type
point=^rec;
rec=record
data:longint;
next:point;
end;
var
n,m,x,y,i,ans,fa,kk:longint;
k:point;
d,siz,sum:array[..]of longint;
a:array[..]of point;
p:array[..,..]of longint; procedure dfs(x,fa:longint);
var
k:point;
l:longint;
begin
d[x]:=d[fa]+;
l:=trunc(ln(n)/ln());
p[x,]:=fa;
for i:= to l do
p[x,i]:=p[p[x,i-],i-];
k:=a[x];
while k<>nil do
begin
if k^.data<>fa then dfs(k^.data,x);
k:=k^.next;
end;
end; function lca(x,y:longint):longint;
var
t,l,i:longint;
begin
if d[x]>d[y] then
begin
t:=x;x:=y;y:=t;
end;
if d[x]<d[y] then
begin
l:=trunc(ln(d[y]-d[x])/ln())+;
for i:=l downto do
if d[y]-(<<i)>=d[x] then
y:=p[y,i];
end;
if x<>y then
begin
l:=trunc(ln(d[y])/ln());
for i:=l downto do
if p[x,i]<>p[y,i] then
begin
x:=p[x,i];y:=p[y,i];
end;
x:=p[x,];
end;
exit(x);
end; procedure dfs2(x,fa:longint);
var
k:point;
begin
siz[x]:=sum[x];
k:=a[x];
while k<>nil do
begin
if k^.data<>fa then
begin
dfs2(k^.data,x);
inc(siz[x],siz[k^.data]);
end;
k:=k^.next;
end;
ans:=max(ans,siz[x]);
end; begin
readln(n,kk);
for i:= to n- do
begin
readln(x,y);
new(k);
k^.data:=y;
k^.next:=a[x];
a[x]:=k;
new(k);
k^.data:=x;
k^.next:=a[y];
a[y]:=k;
end;
dfs(,);
for i:= to kk do
begin
readln(x,y);
fa:=lca(x,y);
inc(sum[x]);inc(sum[y]);dec(sum[fa]);
if fa<> then dec(sum[p[fa,]]);
end;
dfs2(,);
writeln(ans);
end.
bzoj4390: [Usaco2015 dec]Max Flow(LCA+树上差分)的更多相关文章
- BZOJ4390: [Usaco2015 dec]Max Flow
BZOJ4390: [Usaco2015 dec]Max Flow Description Farmer John has installed a new system of N−1 pipes to ...
- [luogu P3128][USACO15DEC]Max Flow [LCA][树上差分]
题目描述 Farmer John has installed a new system of pipes to transport milk between the stalls in his b ...
- 【bzoj4390】[Usaco2015 dec]Max Flow LCA
题目描述 Farmer John has installed a new system of N−1 pipes to transport milk between the N stalls in h ...
- [Usaco2015 dec]Max Flow 树上差分
[Usaco2015 dec]Max Flow Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 353 Solved: 236[Submit][Sta ...
- BZOJ 4390: [Usaco2015 dec]Max Flow
4390: [Usaco2015 dec]Max Flow Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 113[Submi ...
- luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)
链接一下题目:luoguP3128 [USACO15DEC]最大流Max Flow(树上差分板子题) 如果没有学过树上差分,抠这里(其实很简单的,真的):树上差分总结 学了树上差分,这道题就极其显然了 ...
- [USACO15DEC]最大流Max Flow(树上差分)
题目描述: Farmer John has installed a new system of N−1N-1N−1 pipes to transport milk between the NNN st ...
- luogu P3128 [USACO15DEC]最大流Max Flow (树上差分)
题目描述 Farmer John has installed a new system of N-1N−1 pipes to transport milk between the NN stalls ...
- LuoguP3128 [USACO15DEC]最大流Max Flow (树上差分)
跟LOJ10131暗的连锁 相似,只是对于\(lca\)节点把它和父亲减一 #include <cstdio> #include <iostream> #include < ...
随机推荐
- Selenium 入门到精通系列:六
Selenium 入门到精通系列 PS:Checkbox方法 例子 HTML: <html> <head> <title>测试页面</title> &l ...
- mysql面试常见题目3
三十六大 冯唐 春水初生, 春林初盛, 春风十里,不如你. 秋风落叶, 秋雨绵绵, 愁心上秋,只为你. 某个员工信息表结构和数据如下: id name dept salary edlevel hire ...
- Shader-水流效果
效果图:(贴图类似于泥石流) 代码: Shader "CookbookShaders/Chapter02/ScrollingUVs" { Properties { _MainTin ...
- 【WXS数据类型】Function
属性: 名称 值类型 说明 [Function].constructor [String] 返回值为“Function”,表示类型的结构字符串 [Function].length [Number] 返 ...
- leetcode-电话号码的字母组合
电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 示例: 输入:"23" ...
- 【MySQL解惑笔记】Navicat 无法远程连接MySQL数据库
安装好Navicat之后远程连接MySQL数据库出现以下报错截图: 出现以上截图怀疑是mysql用户权限不够: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.1 ...
- 线性代数之——A 的 LU 分解
1. A = LU 之前在消元的过程中,我们看到可以将矩阵 \(A\) 变成一个上三角矩阵 \(U\),\(U\) 的对角线上就是主元.下面我们将这个过程反过来,通一个下三角矩阵 \(L\) 我们可以 ...
- LiveVideoStack Meet|深圳 多媒体开发新趋势
2018年初始,音视频技术生态并不平静,Codec争夺愈加激烈,新一代标准的挑战一浪高过一浪:WebRTC的定版也为打通浏览器.移动端乃至IoT带来了机会:此外AI.区块链技术的兴起,催化着与多媒体领 ...
- Java标签实现分页
Java实现标签分页 最近为了开发一个网站,里面要用分页功能,但是之前很少自己写分页标签,又不想用现成框架.所以自己参考了些资料,写了个分页例子测试了一下. 代码主要分为三个类: PageTag 分页 ...
- 软件测试基础-Homework1
The error was in my graduate work which was about game development.I broadcast some messages to the ...