[SDOI2011]工作安排 BZOJ2245
分析:
费用流裸题,按照题面要求建边就可以了,语文题,我读了10多分钟才知道这题干啥...特别是注意一个细节a[j+1]-a[j]...
附上代码:
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <iostream>
#include <queue>
#include <cstdlib>
using namespace std;
#define N 555
#define S 0
#define T 550
struct node
{int to,next,val,flow,from;
}e[N*N<<5];
int head[N],cnt,vis[N],from[N],n,m,map[N][N],s[N],a[N];long long ans,dis[N];
void add(int x,int y,int z,int f){e[cnt].to=y;e[cnt].next=head[x];e[cnt].from=x;e[cnt].val=z;e[cnt].flow=f;head[x]=cnt++;}
void insert(int x,int y,int z,int f){add(x,y,z,f);add(y,x,-z,0);}
int spfa()
{memset(vis,0,sizeof(vis));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(dis[to1]>dis[x]+e[i].val&&e[i].flow){from[to1]=i;dis[to1]=dis[x]+e[i].val;if(!vis[to1])vis[to1]=1,q.push(to1);}}}return dis[T]==0x3f3f3f3f3f3f3f3f?0:1;
}
void mcf()
{int i=from[T],x=1<<30;while(i!=-1){x=min(x,e[i].flow);i=from[e[i].from];}i=from[T];while(i!=-1){e[i].flow-=x,e[i^1].flow+=x;ans+=e[i].val*x;i=from[e[i].from];}return ;
}
int main()
{memset(head,-1,sizeof(head));scanf("%d%d",&m,&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x);insert(i+m,T,0,x);}for(int i=1;i<=m;i++){for(int j=1;j<=n;j++){int x;scanf("%d",&x);if(x)insert(i,j+m,0,1<<30);}}for(int i=1;i<=m;i++){scanf("%d",&s[i]);for(int j=1;j<=s[i];j++){scanf("%d",&a[j]);}a[s[i]+1]=1<<30;for(int j=0;j<=s[i];j++){int x;scanf("%d",&x);insert(S,i,x,a[j+1]-a[j]);}}while(spfa())mcf();printf("%lld\n",ans);return 0;
}
转载于:https://www.cnblogs.com/Winniechen/p/9128618.html
[SDOI2011]工作安排 BZOJ2245相关推荐
- 【BZOJ2245】[SDOI2011]工作安排 拆边费用流
[BZOJ2245][SDOI2011]工作安排 Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被 ...
- bzoj2245 [SDOI2011]工作安排
(http://www.elijahqi.win/2017/12/11/bzoj2245-sdoi2011%E5%B7%A5%E4%BD%9C%E5%AE%89%E6%8E%92/%20%E2%80% ...
- 【bzoj2245】[SDOI2011]工作安排 费用流
题目描述 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由 ...
- bzoj2245 [SDOI2011]工作安排 费用流
注意这里的分段函数只和个数有关,与种类无关, 然后直接建图,注意开long long 码: #include<iostream> #include<cstdio> #inclu ...
- BZOJ2245: [SDOI2011]工作安排
题目链接 [分析] 先吐槽:题目读的真的烦..刚开始理解错了题意算出来答案怎么都不对还不知道哪里错了..中午回家才想出来..真的是勺的掺. 其实这个题还是很裸的费用流..看懂题就好. [建图] S向每 ...
- bzoj 2245 [SDOI2011]工作安排【最小费用最大流】
其实不用拆点,对于每个人我们假装他是\( s[i]+1 \)个点,可以由他向T点分别连\( s[i]+1 \)条边,容量为\( t[i][j]-t[i][j-1]\),由S点向所有产品i连容量为c[i ...
- [BZOJ1572][Usaco2009 Open]工作安排Job
1572: [Usaco2009 Open]工作安排Job Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1351 Solved: 632 [Sub ...
- 麦肯锡顾问深度工作安排:将工作可视化
工作表安排的三个步骤 凡是善于工作的人,都有一个共通的方法,那就是他们能够有意识或者无意识地使自己的整体工作可视化. 商业系统型的工作安排法: 流程:为了创造价值明确工作的整体流程 分解:将整体流程分 ...
- 综合布线工作组2008年上半年技术课题工作安排会议通知
中国工程建设标准化协会信息通信专业委员会 建标信通字[2008] 02号 综合布线工作组2008年上半年技术课题工作安排会议通知 各工作组成员 中国工程建设标准化协会信息通信专业委员会综合布线 ...
最新文章
- 2019 ICPC EC Finals C. Heretical … Möbius(中国剩余定理,序列检验)
- 网络营销外包——网络营销外包专员是怎样提升网站收录概率的?
- 一些stl格式的点云的显示结果
- 凭借识别人的情绪,他们做到了2000多万用户、1000多万订单
- 使用Nginx实现灰度发布
- 针对SAP OData 模型Addresssable属性的不同处理
- C#查找指定窗口的子窗口的句柄
- rebots css,我的robots.txt中涉及到.htaccss文件的奇怪https/http错误
- (转)国外优秀区块链创业公司梳理
- Oracle数据库安装教程
- 用html代码制作一个表单页面,HTML网页表单制作详细讲解
- 【读书笔记】--少有人走的路①:心智成熟的旅程
- 揭秘无聊程序猿的趣味人生|斑鸠职业
- 《一个广告人的自白》读书笔记
- 过cloudflare,使用cfscrape,以及cfscrape挂代理的方式
- 女子租房有钱交房租 男中介竟然不收她钱_无界财富
- 掌握聚合管道操作,熟悉Map-Reduce操作
- 2022年最新云开发去水印小程序源码
- js正则表达式(2)
- 实时音视频是什么?有哪些新的应用场景
热门文章
- 数组求和forEach方法
- MySQL的InnoDB和MyISAM比较
- extjs4动态生成多表头
- Apple Mac OS X每日一技巧016:MacBook电源线如何缠绕
- Android 完全退出应用程序实现代码
- Vue过渡 动画---vue工作笔记0014
- JAVA线程池_并发队列工作笔记0003---线程池的分类_可缓存线程池_定长线程池_定时线程池_单例线程池
- MFC工作笔记0001---认识MFC
- STM32工作笔记0036---C语言复习--寄存器地址名称映射
- 网络加速 java_快速入门之:使用 dragonite forwarder 加速 Shadowsocks 连接