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 < ...
随机推荐
- linux-centos6①
- 180611-Spring之RedisTemplate配置与使用
logo 文章链接:https://liuyueyi.github.io/hexblog/2018/06/11/180611-Spring之RedisTemplate配置与使用/ Spring ...
- TPO-12 C2 A problem of the TA's payroll
TPO-12 C2 A problem of the TA's payroll payroll n. 工资单:在册职工人数:工资名单: paycheck n. 付薪水的支票,薪水 paperwork ...
- Unity Lighting - The Precompute Process 预计算过程(二)
The Precompute Process 预计算过程 In Unity, precomputed lighting is calculated in the background - eith ...
- js写的数码时钟,在“最小化”浏览器 或者 “切换网页”是动画效果好像不对
一.问题 在“最小化”浏览器 或者 “切换网页”是动画效果不对,不知道哪里出了问题???是不是”最小化“时网页定时器关掉了,还是其他什么原因啊 ???? 二.HTML代码如下 <div id=& ...
- block inline 和 inline-block
概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素). block元素通常 ...
- python读取日志,存入mysql
1.从 http://www.almhuette-raith.at/apache-log/access.log 下载 1万条日志记录,保存为一个文件,读取文件并解析日志,从日志中提取ip, time_ ...
- GitHub把自己整个文件夹上传
我已经有了自己github,但是我怎么对我的项目进行上传呢,普通的上传只有上传单一的文件 这不我去下载了Git(链接至机房ftp文件夹下文件ftp://10.64.130.1/%C8%ED%BC%FE ...
- 硬件PCB Layout布局布线Checklist检查表(通用版)
按部位分类 技术规范内容 1 PCB布线与布局 PCB布线与布局隔离准则:强弱电流隔离.大小电压隔离,高低频率隔离.输入输出隔离.数字模拟隔离.输入输出隔离,分界标准为相差一个数量级.隔离方法包括:空 ...
- 软件工程-东北师大站-第二次作业psp
1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 本周PSP饼状图