最小费用最大流..乱搞即可

------------------------------------------------------------------------------

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<queue>
 
#define rep( i, n ) for( int i = 0; i < n; ++i )
#define Rep( i, n ) for( int i = 1; i <= n; ++i )
#define clr( x, c ) memset( x, c, sizeof( x ) )
  

using namespace std;

 
const int maxn = 50 + 5;
 
struct edge {
int to, cap, cost;
edge *next, *rev;
};
 
edge *head[ maxn ], *p[ maxn ];
edge* pt;
edge EDGE[ maxn << 3 ];
 
void init() {
pt = EDGE;
clr( head, 0 );
}
 
inline void add( int u, int v, int d, int w ) {
pt->to = v;
pt->cap = d;
pt->cost = w;
pt->next = head[ u ];
head[ u ] = pt++;
}
 
inline void add_edge( int u, int v, int d, int w ) {
add( u, v, d, w );
add( v, u, 0, -w );
head[ u ]->rev = head[ v ];
head[ v ]->rev = head[ u ];
}
 
int d[ maxn ], a[ maxn ];
bool inQ[ maxn ];
 
int minCost( int S, int T ) {
const int inf = 0x3f3f3f3f;
int flow = 0, cost = 0;
for( ; ; ) {
clr( inQ, 0 );
clr( d, inf );
d[ S ] = 0;
inQ[ S ] = 1;
a[ S ] = inf;
queue< int > Q;
Q.push( S );
while( !Q.empty() ) {
int x = Q.front(); Q.pop();
inQ[ x ] = 0;
for( edge* e = head[ x ]; e; e = e->next )
   if( e->cap > 0 && d[ e->to ] > d[ x ] + e->cost ) {
    int to = e->to;
    d[ to ] = d[ x ] + e->cost;
    a[ to ] = min( a[ x ], e->cap );
    p[ to ] = e;
    if( !inQ[ to ] )
       Q.push( to ), inQ[ to ] = 1;
   }
}
if( d[ T ] == inf ) break;
flow += d[ T ];
cost += d[ T ] * a[ T ];
int x = T;
while( x != S) {
p[ x ]->cap -= a[ T ];
p[ x ]->rev->cap += a[ T ];
x = p[ x ]->rev->to;
}
}
return cost;
}
 
const int INF = 0x7fffffff;
 
int main() {
freopen( "test.in", "r", stdin );
int n, m, V;
cin >> n >> m >> V;
int s = 0, t = n + 1;
init();
Rep( i, n ) {
int x;
scanf( "%d", &x );
add_edge( i, t, x, 0 );
}
Rep( i, n ) {
int x;
scanf( "%d", &x );
add_edge( s, i, INF, x );
}
Rep( i, n - 1 )
   add_edge( i, i + 1, V, m );
cout << minCost( s, t ) << "\n";
return 0;
}

------------------------------------------------------------------------------

2424: [HAOI2010]订货

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 603  Solved: 394
[Submit][Status][Discuss]

Description

某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为零,问如何安排这n个月订购计划,才能使成本最低?每月月初订购,订购后产品立即到货,进库并供应市场,于当月被售掉则不必付存贮费。假设仓库容量为S。

Input

第1行:n, m, S (0<=n<=50, 0<=m<=10, 0<=S<=10000)
第2行:U1 , U2 , ... , Ui , ... , Un (0<=Ui<=10000)
第3行:d1 , d2 , ..., di , ... , dn (0<=di<=100)

Output

只有1行,一个整数,代表最低成本

Sample Input

3 1 1000
2 4 8
1 2 4

Sample Output

34

HINT

Source

BZOJ 2424: [HAOI2010]订货(最小费用最大流)的更多相关文章

  1. BZOJ 2424: [HAOI2010]订货(费用流)

    裸的费用流了= =从源点向每个点连费用为di,从汇点向每个点连流量为ui,每个点向下一个点连费用为m,流量为s的边就行了 CODE: #include<cstdio>#include< ...

  2. bzoj 2424: [HAOI2010]订货 (费用流)

    直接费用流,天数就是点数 type arr=record toward,next,cap,cost:longint; end; const maxm=; maxn=; mm=<<; var ...

  3. BZOJ 2424: [HAOI2010]订货 费用流

    2424: [HAOI2010]订货 Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月 ...

  4. BZOJ 2424: [HAOI2010]订货

    2424: [HAOI2010]订货 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 915  Solved: 639[Submit][Status][ ...

  5. BZOJ 1927 星际竞速(最小费用最大流)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1927 题意:一个图,n个点.对于给出的每条边 u,v,w,表示u和v中编号小的那个到编号 ...

  6. 2424. [HAOI2010]订货【费用流】

    Description 某公司估计市场在第i个月对某产品的需求量为Ui,已知在第i月该产品的订货单价为di,上个月月底未销完的单位产品要付存贮费用m,假定第一月月初的库存量为零,第n月月底的库存量也为 ...

  7. BZOJ 1070: [SCOI2007]修车 [最小费用最大流]

    1070: [SCOI2007]修车 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 4936  Solved: 2032[Submit][Status] ...

  8. bzoj 1061 志愿者招募(最小费用最大流)

    [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3792  Solved: 2314[Submit][Status][Di ...

  9. BZOJ 3550 Vacation(最小费用最大流)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3550 题意:给出3×n个数字,从中选出一些数字,要求每连续的n个数字中选出的数字个 ...

随机推荐

  1. Let the Balloon Rise(map)

    Let the Balloon Rise Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth ...

  2. ubuntu 安装mysql, 以及全然又一次安装的方法

    sudo apt-get install mysql-server 装完后 是无法远程訪问的. 要先改动 sudo vim /etc/mysql/my.cnf 找到 bind-address = 12 ...

  3. Flash,EEPROM差别

    flash是用来存储代码的,在执行过程中不能改:EEPROM是用来保存用户数据,执行过程中能够改变,比方一个时钟的闹铃时间初始化设定为12:00,后来在执行中改为6:00,这是保存在EEPROM里,不 ...

  4. Ubuntu 14.04安装地里编码软件Nominatim过程

    一.必须软件: 在Ubuntu系统编译执行Nominatim软件系统必须安装的软件有: 1.GCC 编译器 2.postgresql 数据库 3.proj4 4.geos 5.postgis 6.PH ...

  5. 如何学习.Net的步骤

    如果你已经有较多的面向对象开发经验,跳过以下这两步:   第一步 掌握一门.NET面向对象语言,C#或VB.NET 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET. ASP. ...

  6. Gridpanel多种操作帮助文档

    1.Ext.grid.GridPanel 主要配置项: store:表格的数据集 columns:表格列模式的配置数组,可自动创建ColumnModel列模式 autoExpandColumn:自动充 ...

  7. IIS发布网站后局域网其他用户不能访问问题(转)

    如果本机能正常访问,而局域网其他用户不能访问,那么判断的结果很可能是防火墙问题. 解决方法: 既然问题出在Windows7或Windows Server 2008 R2的防火墙上,那么我们可以有以下两 ...

  8. SnappyDB—Android上的NoSQL数据库简介

    参考:http://www.open-open.com/lib/view/open1420816891937.html 参考:http://android-arsenal.com/details/1/ ...

  9. AutoCompleteTextView 自动提示

    在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,这种效果在Android中是用AutoCompleteTextView实现的. public class MainActivity ex ...

  10. 项目需要简单些了个WEB APP 的弹出窗

    var diag = { showDlg:'',//需要显示的DIV rushdiv:"<div id=v style='top:0;position: absolute;z-inde ...