LA 3353 最优巴士线路设计
给出一个 n 个点的有向图,找若干个圈,是的每个结点恰好属于一个圈。要求总长度尽量小。
三倍经验题 Uva 12264,HDU 1853
这题有两种解法,一是匹配:
每个点只在一个圈中,则他有唯一的前驱和后继,也就是入度为1,出度为1,拆成 入度点和出度点,跑最小全匹配,因为是匹配,这样就保证了他在唯一的一个圈中,但是刘汝佳的板子有个问题,就是他会产生被迫的匹配,瞎起的名字,注意有这样的原本不存在的边,就说明无解。再次熟悉一下顶标。太久没写了~~~~
而是费用流:MCMF
就是中间cap = c,有无解就是看流量是否为 n ,是的,就是最小费用。
#include <bits/stdc++.h> using namespace std; const int maxn = ;
const int inf = <<;
int W[maxn][maxn],n;
int Lx[maxn],Ly[maxn]; ///顶标
int lefts[maxn]; ///left[i] 为右边第 i 个点的标号
bool S[maxn],T[maxn]; ///S,T左右第 i 个点是否标记 bool match(int i) {
S[i] = true;
for(int j = ; j <= n; j++) if(Lx[i]+Ly[j]==W[i][j]&&!T[j]) {
T[j] = true;
if(!lefts[j]||match(lefts[j])) {
lefts[j] = i;
return true;
}
}
return false;
} void update() {
int a = <<;
for(int i = ; i <= n; i++) if(S[i])
for(int j = ; j <= n; j++) if(!T[j])
a = min(a,Lx[i]+Ly[j]-W[i][j]);
for(int i = ; i <= n; i++) {
if(S[i]) Lx[i]-=a;
if(T[i]) Ly[i]+=a;
}
} void KM() {
for(int i = ; i <= n; i++) {
lefts[i] = Lx[i] = Ly[i] = ;
for(int j = ; j <= n; j++)
Lx[i] = max(Lx[i],W[i][j]);
} for(int i=;i<=n;i++) {
for(;;) {
for(int j=;j<=n;j++)
S[j] = T[j] = ;
if(match(i))
break;
else update();
}
}
} int main()
{
//freopen("in.txt","r",stdin);
while(scanf("%d",&n),n) { for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
W[i][j] = -inf; memchr(W,-inf,sizeof(W));
for(int u = ; u <= n ; u++) {
int v,c;
while(scanf("%d",&v),v) {
scanf("%d",&c);
W[u][v] = max(W[u][v],-c);
}
}
KM();
bool flag = true;
int ans = ; for(int j = ; j <= n; j++) {
int i = lefts[j];
if(W[i][j]==-inf) {
flag = false;
break;
}
ans+= -W[i][j];
} if(flag==false) puts("N");
else printf("%d\n",ans); } return ;
}
LA 3353 最优巴士线路设计的更多相关文章
- MySQL性能优化总结___本文乃《MySQL性能调优与架构设计》读书笔记!
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...
- MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...
- MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...
- MySQL性能调优与架构设计——第 16 章 MySQL Cluster
第 16 章 MySQL Cluster 前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等 ...
- MySQL性能调优与架构设计——第 15 章 可扩展性设计之Cache与Search的利用
第 15 章 可扩展性设计之Cache与Search的利用 前言: 前面章节部分所分析的可扩展架构方案,基本上都是围绕在数据库自身来进行的,这样是否会使我们在寻求扩展性之路的思维受到“禁锢”,无法更为 ...
- MySQL性能调优与架构设计——第 14 章 可扩展性设计之数据切分
第 14 章 可扩展性设计之数据切分 前言 通过 MySQL Replication 功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时候,我 ...
- MySQL性能调优与架构设计——第13章 可扩展性设计之 MySQL Replication
第13章 可扩展性设计之 MySQL Replication 前言: MySQL Replication 是 MySQL 非常有特色的一个功能,他能够将一个 MySQL Server 的 Instan ...
- MySQL性能调优与架构设计——第12章 可扩展设计的基本原则
第12章 可扩展设计的基本原则 前言: 随着信息量的飞速增加,硬件设备的发展已经慢慢的无法跟上应用系统对处理能力的要求了.此时,我们如何来解决系统对性能的要求?只有一个办法,那就是通过改造系统的架构体 ...
- MySQL性能调优与架构设计——第11章 常用存储引擎优化
第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...
随机推荐
- 第二次 Scrum Meeting
第二次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/4/4 19:00 20min 微信群 附Github仓库:WEDO 例会照片 清明假期期间 线上小组例会 工作情 ...
- python 十大经典排序算法
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.常见的内部排序算法有:插入排序.希尔排序.选 ...
- VUE中toast的使用与开发
在这篇文章中介绍了toast是什么,这篇文章主要介绍toast的开发与使用. 开发 Vuejs很流行,并且官方也给出了路由插件vue-router.数据管理插件vuex,但是我们仅仅停留在了使用的阶段 ...
- BFC --- Block Formatting Context --- 块级格式化上下文
虽然知道块级格式化上下文是什么东西,但要我把这个东西给说清楚,还真的不是一件容易的事儿,所以这篇文章我就要说说清楚到底什么使传说中的BFC,即块级格式化上下文. 一.BFC的通俗理解 通俗的理解 -- ...
- 岛屿问题求最短路径(DFS)
用1代表陆地,用0代表陆地,你可以上下左右移动,给出下面这张地图求出最短路径 0101100001101001010110000 #include <iostream> #include ...
- 2、java内存间交互操作
关于主内存与工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存,如何从工作内存同步回主内存之类的实现细节,java内存模型中定义了8种操作来完成,虚拟机实现时必须保证这8种操作都是原子的 ...
- php高手干货【必看】
1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数&quo ...
- VRRP协议介绍--转
http://www.cnblogs.com/jony413/articles/2697404.html VRRP协议介绍 参考资料: RFC 3768 1. 前言 VRRP(Virtual Rout ...
- [转]Oracle ROWNUM用法和分页查询总结
本文转自:http://blog.csdn.net/fw0124/article/details/42737671 ****************************************** ...
- winform代码生成器(二)
代码下载 地址 http://pan.baidu.com/s/1nuZjyat 接着说 上文继续说,这次我们要生成主从表. 此方用到了第三方的 控件 DevExpress 的Gridview .大家可 ...