【Luogu】P2488工作安排(费用流)
这题……费用流即可……(哇啊要被打死辣)
然而我printf("%d")爆零四次
好的心如死灰
#include<cstdio>
#include<cstring>
#include<cctype>
#include<cstdlib>
#include<algorithm>
#include<queue>
#define maxn 1000010
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} struct Edge{
long long next,from,to,val,dis;
}edge[maxn*];
long long head[maxn],num;
inline void addedge(long long from,long long to,long long val,long long dis){
edge[++num]=(Edge){head[from],from,to,val,dis};
head[from]=num;
}
inline void add(long long from,long long to,long long val,long long dis){
addedge(from,to,val,dis);
addedge(to,from,,-dis);
} inline long long count(long long i){ return i&?i+:i-; } long long Start,End;
long long dis[maxn];
bool vis[maxn];
long long pre[maxn];
long long flow[maxn]; long long spfa(){
memset(dis,/,sizeof(dis)); dis[Start]=; flow[Start]=dis[];
memset(pre,,sizeof(pre));
queue<long long>q; q.push(Start);
while(!q.empty()){
long long from=q.front();q.pop(); vis[from]=;
if(flow[from]==) continue;
for(long long i=head[from];i;i=edge[i].next){
long long to=edge[i].to;
if(dis[to]<=dis[from]+edge[i].dis||edge[i].val<=) continue;
dis[to]=dis[from]+edge[i].dis;
pre[to]=i; flow[to]=min(flow[from],edge[i].val);
if(vis[to]) continue;
vis[to]=; q.push(to);
}
}
if(pre[End]==) return ;
long long now=End;
while(now!=Start){
long long ret=pre[now];
edge[ret].val-=flow[End]; edge[count(ret)].val+=flow[End];
now=edge[ret].from;
}
return dis[End]*flow[End];
} long long s[maxn]; int main(){
long long m=read(),n=read();End=n+m+;
for(long long i=;i<=n;++i){
long long x=read();
add(i+m,End,x,);
}
for(long long i=;i<=m;++i)
for(long long j=;j<=n;++j){
long long x=read();
if(x) add(i,j+m,0x7fffffff,);
}
for(long long i=;i<=m;++i){
long long sum=read();
for(long long j=;j<=sum;++j) s[j]=read();
for(long long j=;j<=sum;++j){
long long x=read();
add(Start,i,s[j]-s[j-],x);
}
long long x=read();
add(Start,i,0x7fffffff,x);
}
long long ans=;
while(){
long long now=spfa();
if(now==) break;
ans+=now;
}
printf("%lld",ans);
return ;
}
【Luogu】P2488工作安排(费用流)的更多相关文章
- P2488 [SDOI2011]工作安排 费用流
\(\color{#0066ff}{ 题目描述 }\) 你的任务是制定出一个产品的分配方案,使得订单条件被满足,并且所有员工的愤怒值之和最小.由于我们并不想使用Special Judge,也为了使选手 ...
- BZOJ 2245: [SDOI2011]工作安排( 费用流 )
费用流模板题..限制一下不同愤怒值的工作数就可以了. ------------------------------------------------------------------------- ...
- 【bzoj2245】[SDOI2011]工作安排 费用流
题目描述 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由 ...
- BZOJ 2245 SDOI 2011 工作安排 费用流
题目大意:有一些商品须要被制造.有一些员工.每个员工会做一些物品,然而这些员工做物品越多,他们的愤慨值越大,这满足一个分段函数.给出哪些员工能够做哪些东西,给出这些分段函数,求最小的愤慨值以满足须要被 ...
- [bzoj2245][SDOI2011]工作安排——费用流
题目大意: 传送门 题解: 很容易建模,把每一个工作人员拆成两个点,由第一个点向第二个点连S+1条边即可. 这水题没什么难度,主要是longlong卡的丧心病狂... 代码 #include < ...
- 洛谷 - P4452 - 航班安排 - 费用流
https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流. 注意时间也影响节点,像题解那样建边就少很多了. #include<bits/std ...
- [SDOI2011][bzoj2245] 工作分配 [费用流]
题面 传送门 思路 数据范围n,m<=250 分配任务问题 这是典型的"看到数据范围就知道算法"类型 而且我们发现我们要保证一定产出的情况下最小化花费 这句话等价于保证一定流 ...
- bzoj 2245 [SDOI2011]工作安排(最小费用最大流)
2245: [SDOI2011]工作安排 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1197 Solved: 580[Submit][Statu ...
- 【BZOJ2245】[SDOI2011]工作安排(费用流)
[BZOJ2245][SDOI2011]工作安排(费用流) 题面 BZOJ 洛谷 题解 裸的费用流吧. 不需要拆点,只需要连边就好了,保证了\(W_j<W_{j+1}\). #include&l ...
随机推荐
- Android(java)学习笔记75:ListViewProject案例(ListView + BaseAdapter + CheckBox)
这个案例可能稍微复杂一点,我会讲述详细一点: 1. 首先是AndroidManifest.xml: <?xml version="1.0" encoding="ut ...
- matlplotlib 为折线图填充渐变颜色
概要 本篇记录绘图时填充颜色时的一些常用设置,主要用到了 imshow,fill 函数. 填充图实例 填充的效果图如下: 图 1:渐变色效果图 可根据下方给出的代码进行自定义. #!/us ...
- STMS传输队列中的请求状态一直是Running不能结束
通过STMS传输请求时,遇到了如下问题: STMS传输请求,不论等多久的时间,请求状态一直是running,不能结束.但检查传输的内容时,发现CHANGE REQUEST包含的内容已经传输到目标Cli ...
- ElasticSearch High Level REST API【4】多搜索
1.Multi-Search多搜索请求 Multi-Search可同时添加多个search搜索请求,并行地在一个http请求中执行多个搜索请求,相较多次单请求查询可提升查询效率.ES客户掉通过mget ...
- mybatis的环境搭建
mybatis是一个持久层框架,其主要思想就是想将程序中大量的SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置. 使得SQL与程序代码分离,即在不修改程序代码的情况下,直接在配置文件中修改S ...
- tcl之变量-数组array
- 为什么选择Redis
1)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储. 2)Redis支持master-slave(主-从)模式应用 3)Redi ...
- python3:判断手机的亮屏状态
在用python对手机做一些自动化操作时,常常会判断手机的亮屏状态,知晓手机的亮屏状态后才好做进一步的动作,如给屏幕解锁等. 用于了解手机的亮屏情况,有一个adb命令可用: adb shell du ...
- HDU:4417-Super Mario(离线线段树)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem ...
- Leetcode 872. 叶子相似的树
题目链接 https://leetcode-cn.com/problems/leaf-similar-trees/description/ 题目描述 请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到 ...