题目链接

  这题……费用流即可……(哇啊要被打死辣)

  然而我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工作安排(费用流)的更多相关文章

  1. P2488 [SDOI2011]工作安排 费用流

    \(\color{#0066ff}{ 题目描述 }\) 你的任务是制定出一个产品的分配方案,使得订单条件被满足,并且所有员工的愤怒值之和最小.由于我们并不想使用Special Judge,也为了使选手 ...

  2. BZOJ 2245: [SDOI2011]工作安排( 费用流 )

    费用流模板题..限制一下不同愤怒值的工作数就可以了. ------------------------------------------------------------------------- ...

  3. 【bzoj2245】[SDOI2011]工作安排 费用流

    题目描述 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由 ...

  4. BZOJ 2245 SDOI 2011 工作安排 费用流

    题目大意:有一些商品须要被制造.有一些员工.每个员工会做一些物品,然而这些员工做物品越多,他们的愤慨值越大,这满足一个分段函数.给出哪些员工能够做哪些东西,给出这些分段函数,求最小的愤慨值以满足须要被 ...

  5. [bzoj2245][SDOI2011]工作安排——费用流

    题目大意: 传送门 题解: 很容易建模,把每一个工作人员拆成两个点,由第一个点向第二个点连S+1条边即可. 这水题没什么难度,主要是longlong卡的丧心病狂... 代码 #include < ...

  6. 洛谷 - P4452 - 航班安排 - 费用流

    https://www.luogu.org/problemnew/show/P4452 又一道看题解的费用流. 注意时间也影响节点,像题解那样建边就少很多了. #include<bits/std ...

  7. [SDOI2011][bzoj2245] 工作分配 [费用流]

    题面 传送门 思路 数据范围n,m<=250 分配任务问题 这是典型的"看到数据范围就知道算法"类型 而且我们发现我们要保证一定产出的情况下最小化花费 这句话等价于保证一定流 ...

  8. bzoj 2245 [SDOI2011]工作安排(最小费用最大流)

    2245: [SDOI2011]工作安排 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1197  Solved: 580[Submit][Statu ...

  9. 【BZOJ2245】[SDOI2011]工作安排(费用流)

    [BZOJ2245][SDOI2011]工作安排(费用流) 题面 BZOJ 洛谷 题解 裸的费用流吧. 不需要拆点,只需要连边就好了,保证了\(W_j<W_{j+1}\). #include&l ...

随机推荐

  1. NOIP2018赛前停课集训记——最后的刷板子计划

    前言 再过两天就\(NOIP2018\)了. 于是,我决定不做其他题目,开始一心一意刷板子了. 这篇博客记录的就是我的刷板子计划. [洛谷3383][模板]线性筛素数 这种普及-的题目我还写挂了两次( ...

  2. pyqt4 python2.7 中文乱码的解决方法

    import sysimport localefrom PyQt4.QtGui import *from PyQt4.QtCore import *from untitled import Ui_Di ...

  3. x5webview 微信H5支付

    mWebView.setWebViewClient(new WebViewClient() { // @Override // public boolean shouldOverrideUrlLoad ...

  4. AngularJS 历经实例

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  5. 利用原生JS实现类似浏览器查找高亮功能(转载)

    利用原生JS实现类似浏览器查找高亮功能 在完成 Navify 时,增加一个类似浏览器ctrl+f查找并该高亮的功能,在此进行一点总结: 需求 在.content中有许多.box,需要在.box中找出搜 ...

  6. Java基础面试操作题:读取该文件内容,并按照自然顺序排序后输出到 另一个文件中

    package com.swift; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...

  7. Vue入门之HelloWorld

    对于新学习一门技术,一门语言比如JAVA.Python等都是从编写Hello World开始的,这样一来有益于初学者的人门,并给予初学者一定的信心,所以我也从HelloWorld开始讲起. 干货: 对 ...

  8. tcl之基本语法—1

  9. Base64及其Python实现

    1. 什么是Base64 Base64是一种基于64个可打印字符来表示二进制数据的表示方法 Base64是一种编码方式,提及编码方式,必然有其对应的字符集合.在Base64编码中,相互映射的两个集合是 ...

  10. Pycharm中F4查看函数的相关小BUG

    我们都知道在Pycharm中我们要快速查看某个函数或者模块的源码,可以在该函数上按F4快捷键,其可以打开源码相关的.py文件,这两天偶然发现起打开的文件不一定是对的. -代码如下: import os ...