题目

\(n\)个点\(m\)条边的有向图,每个点有点权

你可以选择拓扑序的一个区间的

最大化点权和

$n \le 50 \ , m \le \frac{n*(n-1)}{2} , 0 \le |a_i| \le 200 $

题解

  • 一条路径上的点一定是:不选-选-不选

  • 把所有正权加起来为sum,然后建最小割模型,割哪段表示选在

  • 连边:

    $ (w_i \gt 0) (S,i,w_i) \ (i',T,w_i) $

    $ (w_i \lt 0) (i,i',-w_i) $

  • 边有向边\((a,b)\)相当于限制了a割的段不能在b后面

    那连边:

    \((a,b,inf) \ , \ (a',b',inf)\)

  • 答案是sum-flow

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f using namespace std; const int N=110;
int n,m,vis[N],cur[N],hd[N],o,S,T,d[N];
struct Edge{int v,nt,f;}E[N*N];
int q[N],head,tail;
void adde(int u,int v,int f){
E[o]=(Edge){v,hd[u],f};hd[u]=o++;
E[o]=(Edge){u,hd[v],0};hd[v]=o++;
} bool bfs(){
for(int i=S;i<=T;++i)vis[i]=0,d[i]=0;
head=tail=0;vis[q[++tail]=S]=1;d[S]=1;
while(head<tail){
int u=q[++head];
for(int i=hd[u];~i;i=E[i].nt)if(E[i].f){
int v=E[i].v;
if(vis[v])continue;
vis[v]=1;
d[v]=d[u]+1;
q[++tail]=v;
if(v==T)return true;
}
}return false;
} int dfs(int u,int F){
if(u==T||!F)return F;
int flow=0,f;
for(int i=cur[u];~i;i=E[i].nt){
int v=E[cur[u]=i].v;
if(d[v]==d[u]+1&&(f=dfs(v,min(F,E[i].f)))){
flow+=f,F-=f;
E[i].f-=f,E[i^1].f+=f;
if(!F)break;
}
}
if(!flow)d[u]=0;//记得加上这条优化
return flow;
} int main(){
freopen("san.in","r",stdin);
freopen("san.out","w",stdout);
scanf("%d%d",&n,&m);
int ans=0;S=0;T=n*2+1;
for(int i=S;i<=T;++i)hd[i]=-1;
for(int i=1,w;i<=n;++i){
scanf("%d",&w);
if(w>0)ans+=w,adde(S,i,w),adde(i+n,T,w);
else adde(i,i+n,-w);
}
for(int i=1,u,v;i<=m;++i){
scanf("%d%d",&u,&v);
adde(u,v,inf);
adde(u+n,v+n,inf);
}
while(bfs()){
for(int i=S;i<=T;++i)cur[i]=hd[i];
ans-=dfs(S,inf);
}
cout<<ans<<endl;
return 0;
}

【JZOJ6229】【20190621】san的更多相关文章

  1. 20款精致的长阴影 LOGO 设计【附免费生成工具】

    长阴影(Long Shadow)概念来自于最新非常流行的扁平化设计(Flat Design).扁平化设计趋势影响最大的是用户界面元素和图标,但它也开始蔓延到其他网页设计的其他部分. 长阴影其实就是扩展 ...

  2. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 特殊问题和实战经验(五)

    原文地址:http://www.cnblogs.com/baiboy/p/orc5.html   阅读目录 目录 共享存储 时间一致性 互联网络(或者私有网络.心跳线) 固件.驱动.升级包的一致性 共 ...

  3. 【转】【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之缓存融合技术和主要后台进程(四)

    原文地址:http://www.cnblogs.com/baiboy/p/orc4.html   阅读目录 目录 Cache Fusion 原理 什么是 Cache Fusion? 什么是高可用 FA ...

  4. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  5. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  6. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  7. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  8. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

  9. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  10. 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】

    由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...

随机推荐

  1. Net Core 自定义 Middleware 加密解密

    前言:第一次写文章,有问题请轻喷 当前使用 Net Core 版本 2.1.3 我们经常在开发中需要把实体的主键 Id 传输到前端,但是在Get的时候又不想让前端能看到明文,我们通常会加密这些数据,所 ...

  2. 批量关联update

    UPDATE A SET A.field = B.field from table A inner join table B ON A.field = b.field

  3. MVC运行机制[转]

    原:http://www.cnblogs.com/jyan/archive/2012/06/29/2569566.html#3122335 ASP.NET是一种建立动态Web应用程序的技术.它是.NE ...

  4. for循环优化

    转自:https://blog.csdn.net/lfc18606951877/article/details/78592823 1:多个for循环时,遵循外小内大(从外至里,循环对象size要从小到 ...

  5. 网页调用文件另存为js

    查看引用是否正常,页面添加html代码. <a id="downLoad" onclick="oDownLoad('downLoad')">下载&l ...

  6. Python的virtualenv管理

    原文链接 虚拟环境 Python 开发中所谓的虚拟环境,就是为 Python 版本及第三方库创建独立的开发环境,使不同项目之间互不干扰.借助于虚拟环境,我们可以在同一台电脑上构建出项目 A 在基于 P ...

  7. 深入理解JVM(三) -- 对象的内存布局和访问定位

    一 对象的内存布局: 在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header),实例数据(Instance Data)和对齐填充(Padding). HotSpot的对 ...

  8. 解决vue-cli项目开发中跨域问题

    一.开发环境中跨域 使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问非本机上的接口http://10.1.0.34:8000/queryRole.不同域名之间的访问 ...

  9. Oracle数据库之四大语言

    一.数据定义语言: 1.用于改变数据库结构,包括创建.更改和删除数据库对象: 2.命令: create table :创建 alter table 修改 drop table 删除表 truncate ...

  10. FFmpeg参考资料合集(会一直更新)

    让你的软件飞起来:RGB转为YUV 朋友曾经给我推荐了一个有关代码优化的pdf文档<让你的软件飞起来>,看完之后,感受颇深.为了推广其,同时也为了自己加深印象,故将其总结为word 文档. ...