链接:http://wikioi.com/problem/1035/

怎么说呢,只能说这个建图很有意思。因为只有m条道,然后能互相接在一起的连通,对每个点进行拆点,很有意思的一道裸费用留题。

代码:

 #include <iostream>
#include <queue>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
using namespace std;
const int maxn = ;
const int inf = ;
struct node
{
int u,v,cap,flow,cost,next;
}edges[];
int head[maxn],cnt;
void init(int n)
{
int i;
for(i = ;i <= n;i++)
head[i] = -;
cnt = ; return ;
}
void addedge(int u,int v,int cap,int flow,int cost)
{
edges[cnt].u = u;
edges[cnt].v = v;
edges[cnt].cap = cap;
edges[cnt].flow = flow;
edges[cnt].cost = cost;
edges[cnt].next = head[u];
head[u] = cnt;
cnt++;
edges[cnt].u = v;
edges[cnt].v = u;
edges[cnt].cap = ;
edges[cnt].flow = flow;
edges[cnt].cost = -cost;
edges[cnt].next = head[v];
head[v] = cnt;
cnt++;
}
int vis[maxn],a[maxn],pre[maxn],dis[maxn];
int spfa(int s,int t,int n,int &flow,int &cost)
{
int i;
queue<int> q;
for(i = ;i <= n ;i++)
dis[i] = -,vis[i] = ; dis[s] = ;
pre[s] = ;
vis[s] = ;
a[s] = inf; int u,v;
q.push(s); while(!q.empty())
{
u = q.front();
q.pop();
vis[u] = ; for(i = head[u];i != -;i = edges[i].next)
{
struct node & e = edges[i]; v = e.v;
if(e.cap > e.flow &&dis[v] < dis[u]+e.cost)
{
dis[v] = dis[u]+e.cost;
a[v] = min(a[u],e.cap-e.flow);
pre[v] = i;
if(!vis[v])
{
vis[v] = ;
q.push(v);
}
}
}
} if(dis[t] <= )
return ;
flow+= a[t];
cost += dis[t]*a[t];
u = t;
while(u != s)
{
edges[pre[u]].flow += a[t];
edges[pre[u]^].flow -= a[t];
u = edges[pre[u]].u;
}
return ;
}
int MCMF(int s,int t,int n)
{
int flow = ,cost = ; while(spfa(s,t,n,flow,cost)); return cost;
}
int r[],c[],s[];
int main()
{
int n,m,u,v,i,j; scanf("%d %d",&n,&m);
init(*m);
for(i = ;i <= m;i++)
cin>>r[i]>>c[i]>>s[i]; addedge(,*m+,n,,);
for(i = ;i <= m;i++)
{
addedge(*m+,i,inf,,);
addedge(i,m+i,,,c[i]);
addedge(m+i,*m+,inf,,);
for(j = ;j <= m;j++)
{
if(r[i]+s[i] < r[j])
addedge(m+i,j,inf,,);
}
}
double ans;
ans = 1.0*MCMF(,*m+,*m+); printf("%.2f\n",ans/);
return ;
}

wikioi 1035 火车停留 裸费用流的更多相关文章

  1. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  2. BZOJ-3130 费用流 (听题目胡扯丶裸最大流) 二分判定+最大流+实数精度乱搞

    DCrusher爷喜欢A我做的水题,没办法,只能A他做不动的题了.... 3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec ...

  3. 【wikioi】1033 蚯蚓的游戏问题(费用流)

    http://wikioi.com/problem/1033/ 这题也是很水的费用流啊,同之前那题一样,拆点然后建边,容量为1,费用为点权.然后建个源连第一行每个点,容量为1,费用为0,然后最后一行每 ...

  4. 【wikioi】1227 方格取数 2(费用流)

    http://www.wikioi.com/problem/1227 裸题,拆点,容量为1,费用为点权的负数(代表只能取一次).再在拆好的两个点连边,容量为oo,费用为0.(代表能取0) 然后向右和下 ...

  5. HDU 3376 &amp;&amp; 2686 方格取数 最大和 费用流裸题

    题意: 1.一个人从[1,1] ->[n,n] ->[1,1] 2.仅仅能走最短路 3.走过的点不能再走 问最大和. 对每一个点拆点限流为1就可以满足3. 费用流流量为2满足1 最大费用流 ...

  6. 【wikioi】1034 家园(最大流+特殊的技巧)

    http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...

  7. BZOJ 1061: [Noi2008]志愿者招募 费用流

    1061: [Noi2008]志愿者招募 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1061 Description 申奥成功后,布布 ...

  8. Aizu 2304 Reverse Roads 费用流

    Reverse Roads Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...

  9. BZOJ 1927: [Sdoi2010]星际竞速 费用流

    1927: [Sdoi2010]星际竞速 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

随机推荐

  1. windows 文件查找 大小:>250M

    win7怎么快速查找大文件_百度经验 https://jingyan.baidu.com/article/acf728fd299ffff8e510a333.html

  2. docker 数据管理数据卷

    1,数据卷 数据卷是一个可供容器使用特殊目录,他将主机操作系统目录直接映射容器 1,在容器内创建一个数据卷 在使用docker run命令的时候,使用-v标记就可以创建一个数据卷,多次重复使用-v可以 ...

  3. mysql 数据类型 枚举类型与集合类型

    字段的值只能在给定范围中选择,如单选框,多选框 enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female   set 多选 在给定的范围内可以选择一个或一个以上的值(爱好 ...

  4. 通过html<map>标签给图片加链接

    前面我们有谈到了通过图片定位给一张图片添加多个链接,现在用另外一种方法来实现,用html<map>标签给图片加链接 <img src="/images/hlj.jpg&qu ...

  5. Spark中RDD转换成DataFrame的两种方式(分别用Java和Scala实现)

    一:准备数据源     在项目下新建一个student.txt文件,里面的内容为: ,zhangsan, ,lisi, ,wanger, ,fangliu, 二:实现 Java版: 1.首先新建一个s ...

  6. HDU3579:Hello Kiki(解一元线性同余方程组)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=3579 题目解析:求一元线性同余方程组的最小解X,需要注意的是如果X等于0,需要加上方程组通解的整数区间lc ...

  7. PAT 1105 Spiral Matrix[模拟][螺旋矩阵][难]

    1105 Spiral Matrix(25 分) This time your job is to fill a sequence of N positive integers into a spir ...

  8. Mail.Ru Cup 2018 Round 3 Solution

    A. Determine Line Water. #include <bits/stdc++.h> using namespace std; ]; int main() { while ( ...

  9. iOS error: -34018

    一般报这个错误是由于操作keychain 报的错. 遇到该情况的情况: 1.是否打开权限 2.苹果自身的bug,传送门:https://stackoverflow.com/questions/2974 ...

  10. Android查缺补漏(IPC篇)-- 进程间通讯之AIDL详解

    本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8436529.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...