题解见大佬博客

我的丑陋代码:

#include<cstdio>
#include<cstring>
#include<cstdlib>
inline int read()
{
int x;char c;
while((c=getchar())<''||c>'');
for(x=c-'';(c=getchar())>=''&&c<='';)x=x*+c-'';
return x;
}
#define MN 8000
#define MV 16000
#define ME 56000
#define INF 0x3FFFFFFF
struct edge{int nx,t,l,w;}e[ME*+];
int S=MV+,T=MV+,h[MV+],en=,d[MV+],q[MV+],qn,c[MV+];
int cnt=,L[MN+],R[MN+],u[MN+],z[MN+],fa[MN+];
inline void ins(int x,int y,int l,int w)
{
e[++en]=(edge){h[x],y,l,w};h[x]=en;
e[++en]=(edge){h[y],x,,};h[y]=en;
}
bool build(int k,int l,int r)
{
u[k]=read();
if(k>&&u[k]&&!u[fa[k]])exit(*puts("OwO"));
if(l<r)
{
int mid;
fa[L[k]=++cnt]=k;build(L[k],l,mid=read());
fa[R[k]=++cnt]=k;build(R[k],mid+,r);
z[L[k]]=R[k];
ins(k,L[k],,INF);
}
L[k]=l;R[k]=r;
}
bool bfs()
{
int i,j;
memset(d,,sizeof(d));
for(d[q[i=qn=]=S]=;i<=qn;++i)for(j=c[q[i]]=h[q[i]];j;j=e[j].nx)
if(e[j].w&&!d[e[j].t])d[q[++qn]=e[j].t]=d[q[i]]+;
return d[T];
}
int dfs(int x,int r)
{
if(x==T)return r;
int k,u=;
for(int&i=c[x];i;i=e[i].nx)if(e[i].w&&d[e[i].t]==d[x]+)
{
k=dfs(e[i].t,r-u<e[i].w?r-u:e[i].w);
u+=k;e[i].w-=k;e[i^].w+=k;
if(u==r)return u;
}
return d[x]=,u;
}
int main()
{
int n=read(),i,j;
build(,,n);
for(i=;i<*n;++i)if(u[i])
{
ins(S,i,,INF);
for(j=i;++j<*n;)if(L[i]<=L[j]&&R[i]>=R[j]&&u[j])u[i]=;
ins(i,i+*n,u[i],INF);
ins(i+*n,T,,INF);
for(j=i;++j<*n;)if(R[i]+==L[j]&&z[i]!=j){ins(i+*n,j,,INF);break;}
}
for(i=;i<=T;++i)for(j=h[i];j;j=e[j].nx)d[i]-=e[j].l,d[e[j].t]+=e[j].l,e[j].w-=e[j].l;
for(S+=,T+=,i=;i<S;++i)
{
if(d[i]<)ins(i,T,,-d[i]);
if(d[i]>)ins(S,i,,d[i]);
}
while(bfs())dfs(S,INF);
ins(T-,S-,,INF);
while(bfs())dfs(S,INF);
for(i=h[S-];i;i=e[i].nx)if(e[i].t==T-)printf("%d",e[i].w);
}

最新文章

  1. 【Android接百度地图API】百度地图Demo点击按钮闪退
  2. Win7 下安装VirtualBox 没有Ubuntu 64bit 选项问题
  3. 《CODE》读后笔记——第21~25章
  4. VC----资源文件RC &amp;&amp; RES
  5. CCF 模拟E DFS深搜
  6. MySQL 范式
  7. for循环的三种写法
  8. &lt;五&gt;面向对象分析之UML核心元素之边界
  9. 【转】Emmagee app性能测试工具使用教程
  10. 安装saltstack
  11. 数据分页SQL语句的比较
  12. 思考----拒绝单纯copy
  13. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2
  14. Python之FTP多线程下载文件之分块多线程文件合并
  15. 避免IE执行AJAX时,返回JSON出现下载文件
  16. 制作流程图,activity,好不容易找到的
  17. kvm的sshd起不来
  18. Unity 脚本中各种[XXX]的用法
  19. CCS模块库文件的生成与使用
  20. jQuery hover() 方法

热门文章

  1. TCP和UDP的最完整的区别
  2. 201621123031 《Java程序设计》第3周学习总结
  3. 解决background图片拉伸问题
  4. vue 在methods中调用mounted中的方法?
  5. print 函数设置字体颜色
  6. 新概念英语(1-101)A Card From Jimmy
  7. T410升级笔记
  8. 新概念英语(1-19)Tired and thirsty
  9. Spring Security 入门(1-6-1)Spring Security - 配置文件解析和访问请求处理
  10. 关于block的循环引用的问题