[bzoj2879][网络流,动态加边]美食节[Noi2012]
2024-10-20 07:51:24
就是bzoj1070的加强版,数据规模扩大了n倍,这样要是一次把所有边都加进去的话就爆炸了,,所以使用单路增广,增广过一条边后在加入下一条边。
//By hzwer
1 #include<iostream>
#include<cstdio>
#include<cstring> #define inf 0x7fffffff
#define T 100001 using namespace std; int n,m,tot,cnt=,ans,t[][];
int c[],d[],q[],from[],head[];
bool inq[]; struct edge{int from,to,next,c,v;}e[]; void ins(int u,int v,int w,int c)
{
cnt++;
e[cnt].from=u;e[cnt].to=v;
e[cnt].next=head[u];head[u]=cnt;
e[cnt].c=c;e[cnt].v=w;
} void insert(int u,int v,int w,int c)
{ins(u,v,w,c);ins(v,u,,-c);} bool spfa()
{
for(int i=;i<=T;i++)d[i]=inf;
int t=,w=;d[]=;inq[]=;q[]=;
while(t!=w)
{
int now=q[t];t++;if(t==T)t=;
for(int i=head[now];i;i=e[i].next)
if(e[i].v&&d[e[i].to]>d[now]+e[i].c)
{
d[e[i].to]=d[now]+e[i].c;from[e[i].to]=i;
if(!inq[e[i].to])
{inq[e[i].to]=;q[w++]=e[i].to;if(w==T)w=;}
}
inq[now]=;
}
if(d[T]==inf)return ;
return ;
} void mcf()
{
int x=inf,a,b,y;
for(int i=from[T];i;i=from[e[i].from])
{
x=min(x,e[i].v);
if(e[i].from==)
{y=e[i].to;a=(y-)/tot+;b=y%tot+;}
}
for(int i=from[T];i;i=from[e[i].from])
{e[i].v-=x;e[i^].v+=x;ans+=e[i].c*x;}
for(int i=;i<=m;i++)
insert((a-)*tot+b,n*tot+i,,b*t[i][a]);
} int main()
{
scanf("%d%d",&m,&n);
for(int i=;i<=m;i++)
{
scanf("%d",&c[i]);
tot+=c[i];
}
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
scanf("%d",&t[i][j]);
for(int i=;i<=n*tot;i++)
insert(,i,,);
for(int i=;i<=m;i++)
insert(n*tot+i,T,c[i],);
for(int i=;i<=n;i++)
for(int k=;k<=m;k++)
insert((i-)*tot+,n*tot+k,,t[k][i]);
while(spfa())mcf();
printf("%d",ans);
return ;
}
最新文章
- Nodejs事件引擎libuv源码剖析之:高效队列(queue)的实现
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
- MVC学习系列11---验证系列之客户端验证
- iOS开发 iOS10推送必看(基础篇)
- Ubuntu14.04安装MySql
- 纯CSS下拉导航菜单
- SQL触发器实例
- perl语言书籍教程推荐
- 一个超级简单的HTML模板框架源代码以及使用示例
- poj1330
- 使用runtime给类动态添加方法并调用 - class_addMethod
- 嵌入式 hi3518c下ramdisk文件系统与文件系统烧写以及uboot中change-the-env
- Character Encoding tomcat.
- MediaPlayer本地播放流程解析(一)
- Python全栈之路-Day33
- 【BZOJ1975】【SDOI2010】魔法猪学院(搜索,A*,贪心)
- 字符串拼接引发的BUG
- Java性能调优zz
- Learning-Python【13】:迭代器和生成器
- 从零实现Lumen-JWT扩展包(序):前因