小R的烦恼 BZOJ3280
分析:
一开始一直Wa,发现是建图建错了,必须得拆点。
S连i,流量为a[i],费用为0,i+n连T,流量同上,费用为0,之后i连i+1费用为0,流量为inf,之后S连n*2+i,流量为li,费用为0,之后枚举j从1到n,n*2+i连接j+n,费用为p[i],之后i连接i+d[i]+1,费用为q[i],流量为inf,之后跑费用流就可以了。
附上代码:
- #include <cstdio>
- #include <cmath>
- #include <algorithm>
- #include <cstdlib>
- #include <cstring>
- #include <queue>
- #include <iostream>
- using namespace std;
- #define N 155
- #define S 0
- #define T 151
- struct node
- {
- int to,next,val,flow,from;
- }e[N*200];
- int head[N],cnt,dis[N],vis[N],from[N],ans,n,m,k;
- void add(int x,int y,int z,int v)
- {
- e[cnt].to=y,e[cnt].next=head[x],e[cnt].val=v;
- e[cnt].flow=z,e[cnt].from=x,head[x]=cnt++;
- }
- void insert(int x,int y,int z,int v)
- {
- add(x,y,z,v);add(y,x,0,-v);
- }
- int spfa()
- {
- memset(dis,0x3f,sizeof(dis));memset(from,-1,sizeof(from));
- queue <int>q;q.push(S);dis[S]=0;
- while(!q.empty())
- {
- int x=q.front();q.pop();vis[x]=0;
- for(int i=head[x];i!=-1;i=e[i].next)
- {
- int to1=e[i].to;
- if(e[i].flow&&dis[to1]>dis[x]+e[i].val)
- {
- from[to1]=i;
- dis[to1]=dis[x]+e[i].val;
- if(!vis[to1])vis[to1]=1,q.push(to1);
- }
- }
- }
- return dis[T]==0x3f3f3f3f?0:1;
- }
- void mcf()
- {
- int x,i=from[T];
- while(i!=-1){x=min(e[i].flow,x);i=from[e[i].from];}
- i=from[T];
- while(i!=-1){e[i].flow-=x,e[i^1].flow+=x,ans+=x*e[i].val,i=from[e[i].from];}
- return ;
- }
- int a[N];
- int main()
- {
- int t;
- scanf("%d",&t);
- for(int cas=1;cas<=t;cas++)
- {
- printf("Case %d: ",cas);
- int v=0;ans=0;
- memset(head,-1,sizeof(head));cnt=0;
- scanf("%d%d%d",&n,&m,&k);
- for(int i=1;i<n;i++)insert(i,i+1,1<<30,0);
- for(int i=1;i<=n;i++)
- {
- int x;
- scanf("%d",&x);a[i]=x;
- insert(S,i,x,0);
- insert(i+n,T,x,0);
- }
- for(int i=1;i<=m;i++)
- {
- int x,y;
- scanf("%d%d",&x,&y);
- insert(S,2*n+i,x,0);
- for(int j=1;j<=n;j++)insert(2*n+i,j+n,x,y);
- }
- for(int i=1;i<=k;i++)
- {
- int x,y;
- scanf("%d%d",&x,&y);
- for(int j=1;j+x+1<=n;j++)
- {
- insert(j,j+n+x+1,1<<30,y);
- }
- }
- while(spfa())mcf();
- for(int i=head[T];i!=-1;i=e[i].next)
- {
- if(e[i^1].flow!=0)
- {
- v=1;
- puts("impossible");
- break;
- }
- }
- if(!v)printf("%d\n",ans);
- }
- return 0;
- }
小R的烦恼 BZOJ3280的更多相关文章
- 【BZOJ3280】小R的烦恼 最小费用最大流
[BZOJ3280]小R的烦恼 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的 ...
- BZOJ3280: 小R的烦恼
题解: 随便建一下图费用流就可以过吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath> #incl ...
- 【BZOJ】【3280】小R的烦恼
网络流/费用流 和软件开发那题基本相同,只是多加了一个“雇佣研究生”的限制:不同价格的研究生有不同的数量…… 那么只需加一个附加源点,对每一种研究生连边 S->ss 容量为l[i],费用为p[i ...
- BZOJ 3280: 小R的烦恼 & BZOJ 1221: [HNOI2001] 软件开发
3280: 小R的烦恼 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 399 Solved: 200[Submit][Status][Discuss ...
- BZOJ_3280_小R的烦恼_最小费用最大流
BZOJ_3280_小R的烦恼_最小费用最大流 Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难 ...
- bzoj3280: 小R的烦恼(最小费用最大流)
Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实 ...
- 【bzoj3280】小R的烦恼 费用流
题目描述 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项邪恶的实验来证明P=N ...
- bzoj 3280: 小R的烦恼 费用流
题目: Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要求小R帮助他一起解决一个难题. 问题是这样的,程设老师最近要进行一项 ...
- BZOJ 3280: 小R的烦恼
Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实 ...
随机推荐
- jQuery操作table数据上移、下移和置顶
jQuery 操作table中的tr换行的步骤如下: 1.获取当前tr var $tr = $(this).parents("tr"); 2.移动tr //上移 $tr.prev( ...
- JS--我发现,原来你是这样的JS(引用类型不简单[上篇],且听我娓娓道来)
一.介绍 没错,这是第五篇,到了引用类型,这次要分成两次博文了,太多内容了,这是前篇,篇幅很长也很多代码,主要讲引用类型和常用的引用类型,代码试验过的,老铁没毛病. 坚持看坚持写,不容易不容易,希望大 ...
- Jmeter 测试结果分析之聚合报告简介
Jmeter 测试结果分析之聚合报告简介 by:授客 QQ:1033553122 聚合报告(aggregate report) 对于每个请求,它统计响应信息并提供请求数,平均值,最大,最小值,错误率, ...
- chrome浏览器使用chrome://inspect调试app 网页,打开空白的问题
使用chrome浏览器,输入chrome://inspect可以调试android app里面的网页,如果inspect的时候,是空白, 问题截图: 那就在C:\Windows\System32\dr ...
- AutoCompleteTextView 自定义提示样式
项目中用到AutoCompleteTextView 自动提示功能,如果用自带的ArrayAdapter就一种样式,非常丑,而且每一项提示文字过多的话不会自动换行. 所以自己自定义了一个适配器. 效果 ...
- 绝版Node--Sequlize搭建服务(Node全栈之路)
绝版Node--Sequlize搭建服务(Node全栈之路) 参考资料:https://itbilu.com/nodejs/npm/VkYIaRPz-.html 准备环境:Mysql,Node 前沿: ...
- UWP开发细节记录:判断文件类型
StorageFile.ContentType 属性,是 string 类型,用来表示文件内容的 MIME 类型.例如,音乐文件可能有 "audio/mpeg" MIME 类型.( ...
- 【转】boost库之geometry
#include <boost/assign.hpp> #include <boost/geometry/geometry.hpp> #include <boost/ge ...
- Linux简单使用
1.基本命令 创建目录pathA:mkdir pathA 进入目录pathA:cd pathA 查看目录内容:ls 查看目录下文件的详细信息:ls -l,也可以是:ll(l是小写的L,别看错了) 拷贝 ...
- HTIML5 真的打败了Flash?新测试结果出人意料
[编者按]本文最早发布于 2010 年,通过 Flash 与 HTML5 在 Mac 及 Windows 平台不同浏览器中的测试表现,比较两者的性能并分析背后的原因.虽然是一篇老文,但其客观冷静的分析 ...