bzoj4390[Usaco2015 dec]Max Flow

题意:

给定一棵有N个点的树,所有节点的权值都为0。有K次操作,每次指定两个点s,t,将s到t路径上所有点的权值都加一。请输出K次操作完毕后权值最大的那个点的权值。n≤50000,k≤100000。

题解:

先链剖把树变为链。然后用数组区间加的方式(即在数组区间左端点位置增加值,数组区间右端点+1位置增加这个值的相反数,最后扫一遍a[i]+=a[i-1])累计权值。类似bzoj3631

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #define inc(i,j,k) for(int i=j;i<=k;i++)
 5 #define maxn 50010
 6 using namespace std;
 7
 8 inline int read(){
 9     char ch=getchar(); int f=1,x=0;
10     while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
11     while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
12     return f*x;
13 }
14 int sm[maxn],sz[maxn],dep[maxn],fa[maxn],top[maxn],pos[maxn],n,q,ans,tot;
15 struct e{int t,n;}es[maxn*2]; int g[maxn],ess;
16 void pe(int f,int t){es[++ess]=(e){t,g[f]}; g[f]=ess; es[++ess]=(e){f,g[t]}; g[t]=ess;}
17 void dfs1(int x,int f){
18     sz[x]=1;
19     for(int i=g[x];i;i=es[i].n)if(es[i].t!=f){
20         fa[es[i].t]=x; dep[es[i].t]=dep[x]+1; dfs1(es[i].t,x); sz[x]+=sz[es[i].t];
21     }
22 }
23 void dfs2(int x,int f,int tp){
24     pos[x]=++tot; top[x]=tp; int mx1=0,mx2=0;
25     for(int i=g[x];i;i=es[i].n)if(es[i].t!=f&&sz[es[i].t]>mx1)mx1=sz[es[i].t],mx2=es[i].t;
26     if(!mx2)return; dfs2(mx2,x,tp);
27     for(int i=g[x];i;i=es[i].n)if(es[i].t!=f&&es[i].t!=mx2)dfs2(es[i].t,x,es[i].t);
28 }
29 void solve(int x,int y){
30     for(;top[x]!=top[y];sm[pos[top[x]]]++,sm[pos[x]+1]--,x=fa[top[x]])if(dep[top[x]]<dep[top[y]])swap(x,y);
31     if(dep[x]>dep[y])swap(x,y); sm[pos[x]]++; sm[pos[y]+1]--;
32 }
33 int main(){
34     n=read(); q=read(); inc(i,1,n-1){int x=read(),y=read(); pe(x,y);} dfs1(1,0); dfs2(1,0,1);
35     inc(i,1,q){int x=read(),y=read(); solve(x,y);}
36     inc(i,1,n)sm[i]+=sm[i-1],ans=max(ans,sm[i]); printf("%d",ans); return 0;
37 }

20160908

转载于:https://www.cnblogs.com/YuanZiming/p/5876093.html

bzoj4390[Usaco2015 dec]Max Flow*相关推荐

  1. 【bzoj 4390】 [Usaco2015 dec]Max Flow(树上差分)

    4390: [Usaco2015 dec]Max Flow Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 156  Solved: 100 [Sub ...

  2. bzoj4393[Usaco2015 Dec]Fruit Feast*

    bzoj4393[Usaco2015 Dec]Fruit Feast 题意: 奶牛一开始饱胀值为0,上限为T.每个柠檬派提供a点饱胀值,每个橘子派提供b点饱胀值,有一次机会喝水,使得饱胀值div2.柠 ...

  3. bzoj4396[Usaco2015 dec]High Card Wins*

    bzoj4396[Usaco2015 dec]High Card Wins 题意: 一共有2n张牌,Alice有n张,Bob有n张,每一局点数大的赢.知道Bob的出牌顺序,求Alice最多能赢几局.n ...

  4. P3128 [USACO15DEC]最大流Max Flow

    P3128 [USACO15DEC]最大流Max Flow 对,这是一道最大流的题目qwq 树上跑最大流,没错 也就是跑最小割 你看名字里都有最大流,为什么不能跑最大流qwq............. ...

  5. P3128 [USACO15DEC]Max Flow P

    P3128 [USACO15DEC]Max Flow P 树上差分之点差分模板题 题目描述: FJ给他的牛棚的N(2≤N≤50,000)个隔间之间安装了N-1根管道,隔间编号从1到N.所有隔间都被管道 ...

  6. HDU 4183(max flow)

    HDU 4183(max flow) 链接 题意:orz,论翻译的重要性,看了半天.进入正题: 有n(2 <= n <= 300)个圆圈,每个圆圈都有其频率f,坐标(x,y),半径r.(题 ...

  7. max flow value 是网络流里的什么_为什么你这么努力,还是没有通过投行面试

    临近11月 想必参加秋招的同学都陆续接到了好消息 收到了面试邀请投行也迎来了面试季 又是神仙打架的日子 通过几轮的筛选 你终于进入了投行的面试 准备投行的面试得花费大量的时间和精力 想要事半功倍下面这 ...

  8. [LUOGU] P3128 [USACO15DEC]最大流Max Flow

    题意:一棵树,多次给指定链上的节点加1,问最大节点权值 n个点,n-1条边很容易惯性想成一条链,幸好有样例.. 简单的树剖即可!(划去) 正常思路是树上差分,毕竟它就询问一次.. #include&l ...

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

    题意简述 给定一颗树,每次操作可以使两个点最短路上的点+1,求最大的点 题解思路 树上差分 若操作u, v,则++f[u], ++f[v], --f[lca(u, v)], --f[father(lc ...

最新文章

  1. C++ demo:文本搜索以及'指针的引用'的思考
  2. java中的接口中的方法
  3. html 图片能重叠吗,css两张图片怎么叠加在一起?
  4. 控制面板项 .cpl 文件说明
  5. 研发人员为什么留不住
  6. 小米12后壳谍照曝光:后置三摄相机模组 采用大眼瞪小眼设计
  7. 微信停机断网可充话费;苹果正研发可折叠屏幕 iPad;Rust 1.36.0 发布 | 极客头条...
  8. webbench之编译安装(一)
  9. Mac 开机没声音了?只需 2 招关闭/恢复Mac开机音效「咚」
  10. mysql可以授予的权限包括多选题_mysql中的权限有( )。 (5.0分)_学小易找答案
  11. (Windows)Scala学习3--列表、数组
  12. 常见10种自然语言处理技术
  13. 最详细iOS打包流程
  14. 10行java代码实现email代码表白感恩节必备~
  15. 《当程序员的那些狗日日子》(四十)繁杂的需求
  16. java spring登录验证_详解使用Spring Security进行自动登录验证
  17. 企业微信机器人脚本python_Python实现企业微信机器人每天定时发消息实例
  18. android 生成条码,Android -条形码的生成
  19. 纯js实现搜索框自动补全
  20. 为创业者搭建梦想舞台,让技术与创新说话|腾讯数字安全创新大赛 · 嘉宾访谈

热门文章

  1. 编程小技巧(一)——系统性能优化之多次数据库访问处理
  2. 华为HCIE7-中间系统到中间系统的路由泄露、防环、认证和优化机制
  3. 洛谷——P1017 进制转换
  4. A + B Problem II
  5. 亲热接触Redis-第一天
  6. js delete删除对象属性,delete删除不了变量及原型链中的变量
  7. Windows7 登陆失败:未知的用户名或密码错误 网络共享文件夹
  8. 春节必看的五个Asp.net源码!
  9. 如何充分利用各大银行免费资源最大限度减少理财成本
  10. 前后端分离后 前端获得session数据_机器学习模型部署--打通前后端任督二脉