懒得贴题目,直接放不稳定的传送门(雾):点击前往暴风城(雾)

据说这题是BZOJ3490,但本蒟蒻没有权限╮(╯_╰)╭

这题似乎就是裸树上差分。。。

对于树上(x,y)之间的路径上的点区间c[i]加k<==>c[x]+=k,c[y]+=k,c[lca(x,y)]-=k,c[father[lca(x,y)]-=k

就是这样,虽然这题我因为各种智障的原因在luogu上交了3遍,为拉低这题通过率做出了巨大的贡献。。。

最后统计的时候从树根dfs一遍,把子节点的c值加到父节点上就行了~~

所以这题重点就是求lca(x,y)了,在这里我用了Tarjan,因为比倍增快,而且链剖LCA我也不会(或许也没有Tarjan快)。。

贴代码:

#include<cstdio>
#define N 50005
#define M 100005
#define gc getchar
struct edge
{
int to,next;
}e[N<<1];
struct ques
{
int to,next,id;
}f[M<<1];
int n,m,u[N],v[N],c[N],fa[N],up[N],ans[M],tot,tit=0,maxn=0;
bool vis[N],vis2[N];
int find(int x)
{
return fa[x]==x?x:fa[x]=find(fa[x]);
}
void qin(int &a)
{
a=0;char c=gc();bool f=0;
for(;(c<'0'||c>'9')&&c!='-';c=gc());
if(c=='-') f=1,c=gc();
for(;c>='0'&&c<='9';c=gc()) a=a*10+c-'0';
if(f) a=-a;
}
void build(int x,int y)
{
e[++tot].to=y; e[tot].next=v[x]; v[x]=tot;
e[++tot].to=x; e[tot].next=v[y]; v[y]=tot;
}
void quest(int x,int y,int z)
{
f[++tit].to=y; f[tit].next=u[x]; u[x]=tit; f[tit].id=z;
f[++tit].to=x; f[tit].next=u[y]; u[y]=tit; f[tit].id=z;
}
void dfs(int x)
{
vis[x]=1; fa[x]=x;
for(int i=v[x];i;i=e[i].next)
if(!vis[e[i].to])
up[e[i].to]=x,dfs(e[i].to),fa[e[i].to]=x;
for(int i=u[x];i;i=f[i].next)
if(vis[f[i].to])
ans[f[i].id]=find(f[i].to);
}
void dfs2(int x)
{
vis2[x]=1;
for(int i=v[x];i;i=e[i].next)
{
int y=e[i].to;
if(!vis2[y]) dfs2(y),c[x]+=c[y];
}
if(c[x]>maxn) maxn=c[x];
}
int main()
{
qin(n);qin(m);
for(int i=1;i<n;i++)
{
int a,b;qin(a),qin(b);
build(a,b);
}
for(int i=1;i<=m;i++)
{
int a,b;qin(a),qin(b);
c[a]++;c[b]++;
quest(a,b,i);
}
dfs(1);
for(int i=1;i<=m;i++)
c[ans[i]]--,c[up[ans[i]]]--;
dfs2(1);
printf("%d\n",maxn);
}

嗯 就是这样。。。

【学术篇】树上差分--洛谷3128最大流Max Flow的更多相关文章

  1. 树上差分学习笔记 + [USACO15DEC]最大流$Max \ \ Flow \ \ By$

    #\(\mathcal{\color{red}{Description}}\) \(Link\) \(FJ\)给他的牛棚的\(N(2≤N≤50,000)\)个隔间之间安装了\(N-1\)根管道,隔间编 ...

  2. bzoj 5120 无限之环 & 洛谷 P4003 —— 费用流(多路增广SPFA)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5120 https://www.luogu.org/problemnew/show/P4003 ...

  3. 洛谷P3128 [USACO15DEC]最大流Max Flow

    P3128 [USACO15DEC]最大流Max Flow 题目描述 Farmer John has installed a new system of N-1N−1 pipes to transpo ...

  4. P3128 [USACO15DEC]最大流Max Flow(LCA+树上差分)

    P3128 [USACO15DEC]最大流Max Flow 题目描述 Farmer John has installed a new system of  pipes to transport mil ...

  5. luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)

    链接一下题目:luoguP3128 [USACO15DEC]最大流Max Flow(树上差分板子题) 如果没有学过树上差分,抠这里(其实很简单的,真的):树上差分总结 学了树上差分,这道题就极其显然了 ...

  6. 洛谷3128 [USACO15DEC]最大流Max Flow——树上差分

    题目:https://www.luogu.org/problemnew/show/P3128 树上差分.用离线lca,邻接表存好方便. #include<iostream> #includ ...

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

    题意 题目链接 Sol 树上差分模板题 发现自己傻傻的分不清边差分和点差分 边差分就是对边进行操作,我们在\(u, v\)除加上\(val\),同时在\(lca\)处减去\(2 * val\) 点差分 ...

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

    ###题目链接### 题目大意: 给你一棵树,k 次操作,每次操作中有 a  b 两点,这两点路上的所有点都被标记一次.问你 k 次操作之后,整棵树上的点中被标记的最大次数是多少. 分析: 1.由于数 ...

  9. [USACO15DEC]最大流Max Flow(树上差分)

    题目描述: Farmer John has installed a new system of N−1N-1N−1 pipes to transport milk between the NNN st ...

随机推荐

  1. P1650 赛马

    P1650 赛马 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...

  2. Linux环境上的图形化界面SVN客户端软件“RabbitVCS”

    RabbitVCS基本支持所有的Linux发行版本包括ubuntu.Debian.Fedora.Arch Linux.Gentoo.Mandriva.OpenSUSE.RHEL.CentOS 5等.其 ...

  3. python round, ceil, flooor

    round(num, n) 保留n位小数 round(80.23456, 2) : 80.23 round(100.000056, 3) : 100.0 round(-100.000056, 3) : ...

  4. ionic-CSS:ionic tab(选项卡)

    ylbtech-ionic-CSS:ionic tab(选项卡) 1.返回顶部 1. ionic tab(选项卡) ionic tab(选项卡) 是水平排列的按钮或者链接,用以页面间导航的切换.它可以 ...

  5. [转]mysql主从同步

    Mysql镜像机制配置过程主服务器:   192.168.0.25从服务器:   192.168.0.26MYSQL版本:mysql-5.0.22.tar.gz安装日期:2010年5月14日  一.镜 ...

  6. 【6折抢】戴尔i7新品Latitude高性能商用本

    致敬拼搏成长中的企业 戴尔5月有钜惠! 买1赠1送同款,单台价格2500元 这波来自戴尔官网的致敬很走心 满足初级办公和高性能运算多重需求 限时折扣火热开抢! 新品  latitude 6折抢! 戴尔 ...

  7. 【23. 合并K个排序链表】【困难】【优先队列/堆排序】

    合并 k 个排序链表,返回合并后的排序链表.请分析和描述算法的复杂度. 示例: 输入: [ 1->4->5, 1->3->4, 2->6] 输出: 1->1-> ...

  8. 网页设计师神器,快速生成网站配色、字型等风格的工具——Stylify Me

    在设计网页时,最重要的一项便是网页的配色,颜色的使用在网页制作中起着非常关键的作用,不同的网站有着自己不同的风格,也有着自己不同的颜色.今天给大家介绍一个在线生成网站配色的工具——Stylify Me ...

  9. C 终端输入 字符123 输出 10进制123

    #include <stdio.h> #define N 20 int main(int argc, const char *argv[]) { char a[N] = {'\0'}; i ...

  10. FaceNet pre-trained模型以及FaceNet源码使用方法和讲解

    Pre-trained models Model name LFW accuracy Training dataset Architecture 20180408-102900 0.9905 CASI ...