博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2424: [HAOI2010]订货
阅读量:5325 次
发布时间:2019-06-14

本文共 2347 字,大约阅读时间需要 7 分钟。

最小费用最大流即可。-=a[t] 写成了-=-a[t],于是为此找了很久的错QAQsading

#include
#include
#include
#include
#include
using namespace std;#define rep(i,n) for(int i=1;i<=n;i++)#define clr(x,c) memset(x,c,sizeof(x))#define REP(i,s,t) for(int i=s;i<=t;i++)#define qwq(x) for(edge*e=head[x];e;e=e->next)const int nmax=55;const int inf=0x3f3f3f3f;int x;char c;int read(){ x=0;c=getchar();bool f=true; while(!isdigit(c)){ if(c=='-') f=false; c=getchar(); } while(isdigit(c)) x=x*10+c-'0',c=getchar(); return f?x:-x;}struct edge{ int to,cap,cost;edge *next,*rev;};edge edges[nmax<<3],*pt,*head[nmax],*p[nmax];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++;}void adde(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[nmax],a[nmax];bool inq[nmax];int mincost(int s,int t){ int flow=0,cost=0; while(1){ clr(inq,0);clr(d,0x3f);d[s]=0;inq[s]=1;a[s]=inf; queue
q;q.push(s); while(!q.empty()){ int x=q.front();q.pop();inq[x]=0; qwq(x) 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+=a[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; // printf("%d %d %d\n",d[t],flow,cost); } return cost;}int main(){ int n=read(),m=read(),v=read(); int s=0,t=n+1,tmp; pt=edges;clr(head,0); rep(i,n) tmp=read(),adde(i,t,tmp,0); rep(i,n) tmp=read(),adde(s,i,inf,tmp); rep(i,n-1) adde(i,i+1,v,m); /*REP(i,0,n+1){ qwq(i) printf("%d %d %d ",e->to,e->cap,e->cost); printf("\n"); }*/ printf("%d\n",mincost(s,t)); return 0;}

2424: [HAOI2010]订货

Time Limit: 10 Sec  Memory Limit: 128 MB
Submit: 809  Solved: 564
[ ][ ][ ]

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

[ ][ ][ ]

转载于:https://www.cnblogs.com/fighting-to-the-end/p/5656661.html

你可能感兴趣的文章
线程安全问题
查看>>
集合的内置方法
查看>>
IOS Layer的使用
查看>>
Android SurfaceView实战 带你玩转flabby bird (上)
查看>>
Android中使用Handler造成内存泄露的分析和解决
查看>>
SSM集成activiti6.0错误集锦(一)
查看>>
个人作业
查看>>
下拉刷新
查看>>
linux的子进程调用exec( )系列函数
查看>>
MSChart的研究
查看>>
C# 索引器
查看>>
MySQLdb & pymsql
查看>>
zju 2744 回文字符 hdu 1544
查看>>
XmlDocument
查看>>
delphi 内嵌汇编例子
查看>>
SQL server 2012 安装SQL2012出现报错: 启用 Windows 功能 NetFx3 时出错
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>