wikioi 1035 火车停留 裸费用流
链接: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 火车停留 裸费用流的更多相关文章
- 习题:codevs 1035 火车停留解题报告
本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...
- BZOJ-3130 费用流 (听题目胡扯丶裸最大流) 二分判定+最大流+实数精度乱搞
DCrusher爷喜欢A我做的水题,没办法,只能A他做不动的题了.... 3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec ...
- 【wikioi】1033 蚯蚓的游戏问题(费用流)
http://wikioi.com/problem/1033/ 这题也是很水的费用流啊,同之前那题一样,拆点然后建边,容量为1,费用为点权.然后建个源连第一行每个点,容量为1,费用为0,然后最后一行每 ...
- 【wikioi】1227 方格取数 2(费用流)
http://www.wikioi.com/problem/1227 裸题,拆点,容量为1,费用为点权的负数(代表只能取一次).再在拆好的两个点连边,容量为oo,费用为0.(代表能取0) 然后向右和下 ...
- HDU 3376 && 2686 方格取数 最大和 费用流裸题
题意: 1.一个人从[1,1] ->[n,n] ->[1,1] 2.仅仅能走最短路 3.走过的点不能再走 问最大和. 对每一个点拆点限流为1就可以满足3. 费用流流量为2满足1 最大费用流 ...
- 【wikioi】1034 家园(最大流+特殊的技巧)
http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...
- BZOJ 1061: [Noi2008]志愿者招募 费用流
1061: [Noi2008]志愿者招募 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1061 Description 申奥成功后,布布 ...
- Aizu 2304 Reverse Roads 费用流
Reverse Roads Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view ...
- BZOJ 1927: [Sdoi2010]星际竞速 费用流
1927: [Sdoi2010]星际竞速 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...
随机推荐
- Django框架【基础篇】
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- 双态运维分享之:业务场景驱动的服务型CMDB
最近这几年,国内外CMDB失败的案例比比皆是,成功的寥寥可数,有人质疑CMDB is dead?但各种业务场景表明,当下数据中心运维,CMDB依然是不可或缺的一部分,它承载着运维的基础,掌握运维的命脉 ...
- JQuery的Ajax跨域请求的解决方式
今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究 ...
- loadNibNamed:(NSString *)name owner:(nullable id)owner options:(nullable NSDictionary *)options用法
1.name xib的名字 owner当前类对象 options初始参数 实际应用: NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@&quo ...
- php计算中英文混合或中文字符串的字数
转载来源链接: http://blog.csdn.net/hueise_h/article/details/22920937 php的strlen和mb_strlen用于统计字符个数.中英文混合的字符 ...
- 跟我学Makefile(六)
shell 函数 :和反引号“`”是相同的功能 . shell 函数把执行操作系统命令后的输出作为函数返回. contents := $(shell cat foo) files := $(shell ...
- Web前台学习总结
前台的技术有很多种,流行的框架也是枚不胜举,在这里我们只讨论html,css,js这些基本的技术,相信大家如果掌握了这些最基本的技术,其他的技术也就会使用了. 下面是一个案例的形式来讲解上述的技术. ...
- 牛客国庆集训派对Day6 Solution
A Birthday 思路:设置一个源点,一个汇点,每次对$源点对a_i, b_i , a_i 对 b_i 连一条流为1,费用为0的边$ 每个点都再连一条 1, 3, 5, 7, ....的边到 ...
- BabelMap 10.0.0.3 汉化版已经发布
新的 BabelMap 在日前发布. 新版本增加了字符书签的管理功能,以及将窗口最小化到系统通知栏(时钟区域)的功能. 请点击主页左上角进入下载页面下载.
- 【android】如何实现猿题库题目的排版
最近我们的产品来了个新的模块,类似猿题库一样,给学生做题提高成绩的. 要求如下: 1:支持单选.多选.填空题 2:支持图片文字混排 3:输入框有交互,排版精致美观 4:为了体验优化,不能使用网页实现效 ...