题目

\(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. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. python 2.django的镜像安装与第一次项目创建-运行以及app创建

    django的设计模式 Django是一个遵循MVC设计模式的框架,MVC是Model.View.Controller的三个单词的简写.分别代表模型.视图.控制器. 而Django也是是一个MTV的设 ...

  3. react学习记录(三)——状态、属性、生命周期

    react的状态state React 里,只需更新组件的 state,然后根据新的 state 重新渲染用户界面(不要操作 DOM) class Clock extends React.Compon ...

  4. Ubuntu 系统装机指南

    1.vim设置 2.git配置 3.系统性能监视器:Ubuntu安装系统监视器 4.编译环境安装:sudo apt-get install build-essential

  5. 【数据泵】EXPDP导出表结构

    [数据泵]EXPDP导出表结构(真实案例) BLOG文档结构图         因工作需要现需要把一个生产库下的元数据(表定义,索引定义,函数定义,包定义,存储过程)导出到测试库上,本来以为很简单的, ...

  6. Java多线程 常见问题整理

    线程 什么是线程 线程是指程序在执行过程中,能够执行程序代码的一个执行单元. 线程和进程的区别 线程:一段程序执行过程中的一个执行单元,各个线程之间共享程序的内存空间以及一些进程级的资源,各线程拥有自 ...

  7. JavaScript: 详解正则表达式之一

    正则表达式是一个精巧的利器,经常用来在字符串中查找和替换,JavaScript语言参照Perl,也提供了正则表达式相关模块,开发当中非常实用,在一些类库或是框架中,比如jQuery,就存在大量的正则表 ...

  8. 【RocketMQ】同一个项目中,同一个topic,可以存在多个消费者么?

    一.问题答案 是不可以的 而且后注册的会替换前注册的,MqConsumer2会替换MqConsumer,并且只结束tag-2的消息 /** * @date 2019/05/28 */ @Compone ...

  9. 嵌入式LINUX启动时间优化

    1. 实践过程 我是对海思3559进行启动时间优化的.具体的操作可以参考<Hi3559V100/Hi3556V100 快速启动优化指南>.软件上启动时间的优化一般是从三方面进行的:ubbo ...

  10. VLAN实验4:利用单臂路由实现VLAN间路由

    单臂路由: 实验环境: 实验拓扑图: 实验编址: 实验步骤:1.创建VLAN并配置Access.Trunk接口. 我们在S2上创建VLAN10和VLAN20,并且吧链接PC1的E0/0/1和链接PC2 ...