洛谷2050 BZOJ2897美食节题解
其实这题就是修车的加强版,做法差不多,还是对于每个厨师进行拆点
可是这样强行建图跑网络流会T飞
我们发现,如果一个厨师没有做倒数第x到菜,他一定不会做倒数第x+1到菜
我们的每次增广表示有厨师的倒数第k道菜做了y,这样我们把这位厨师的倒数做k+1道菜的边连起来
动态加边
连边是注意每个点的意思是什么
# include<iostream>
# include<cstdio>
# include<algorithm>
# include<cmath>
# include<cstring>
# include<queue>
using namespace std;
const int inf = 0x3f3f3f3f;
const int mn = ;
int c[][],p[];
struct edge{int to,next,flow,cost;};
edge e[];
int head[mn],edge_max=;
void add(int x,int y,int z,int k)
{
//printf("%d %d %d %d\n",x,y,z,k);
e[++edge_max].to=y;
e[edge_max].flow=z;
e[edge_max].cost=k;
e[edge_max].next=head[x];
head[x]=edge_max;
}
int n,m,sum;
int dis[mn],pe[mn],pv[mn],ansc,ansf;
bool vis[mn];
queue<int> q;
bool spfa(int x,int y)
{
memset(dis,0x3f,sizeof(dis));
dis[x]=;
q.push(x);
while(!q.empty())
{
int u=q.front();
vis[u]=;
q.pop();
for(int i=head[u];i;i=e[i].next)
{
if(e[i].flow> && e[i].cost+dis[u]<dis[e[i].to])
{
dis[e[i].to]=dis[u]+e[i].cost;
pv[e[i].to]=u;
pe[e[i].to]=i;
if(!vis[e[i].to])
{
vis[e[i].to]=;
q.push(e[i].to);
}
}
}
}
//for(int i=0;i<=y;i++)
//printf("%d ",dis[y]);
return dis[y]<inf;
}
void max_flow(int x,int y)
{
int kflow,a,b;//a表示厨师编号
while(spfa(x,y))
{
//printf("%d %d\n",ansc,ansf);
kflow=inf;
for(int i=y;i!=x;i=pv[i])
kflow=min(kflow,e[pe[i]].flow);
a=(pv[y]-)/sum+;
b=pv[y]%sum+;
ansf+=kflow;
ansc+=kflow*dis[y];
for(int i=y;i!=x;i=pv[i])
{
e[pe[i]].flow-=kflow;
e[pe[i]^].flow+=kflow;
//ansc+=kflow*e[pe[i]].cost;
}
for(int i=;i<=n;i++)
add(i+m*sum,(a-)*sum+b,,c[i][a]*b),add((a-)*sum+b,i+m*sum,,-c[i][a]*b);
}
}
int main()
{
int st=;
//freopen("testdata.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&p[i]),sum+=p[i];
int en=sum*m+n+;
// printf("%d\n",en);
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&c[i][j]);
for(int i=;i<=n;i++)
add(st,i+m*sum,p[i],),add(i+m*sum,st,,);
for(int i=;i<=m*sum;i++)
add(i,en,,),add(en,i,,);
for(int i=;i<=m;i++)
for(int j=;j<=n;j++)
add(j+m*sum,(i-)*sum+,,c[j][i]),add((i-)*sum+,j+m*sum,,-c[j][i]);
max_flow(st,en);
printf("%d",ansc);
return ;
}
洛谷2050 BZOJ2897美食节题解的更多相关文章
- 洛谷P2832 行路难 分析+题解代码【玄学最短路】
洛谷P2832 行路难 分析+题解代码[玄学最短路] 题目背景: 小X来到了山区,领略山林之乐.在他乐以忘忧之时,他突然发现,开学迫在眉睫 题目描述: 山区有n座山.山之间有m条羊肠小道,每条连接两座 ...
- 【洛谷P3960】列队题解
[洛谷P3960]列队题解 题目链接 题意: Sylvia 是一个热爱学习的女孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Sylvia 所在的方阵中有 n×m ...
- 洛谷P2312 解方程题解
洛谷P2312 解方程题解 题目描述 已知多项式方程: \[a_0+a_1x+a_2x^2+\cdots+a_nx^n=0\] 求这个方程在 \([1,m]\) 内的整数解(\(n\) 和 \(m\) ...
- 洛谷P1577 切绳子题解
洛谷P1577 切绳子题解 题目描述 有N条绳子,它们的长度分别为Li.如果从它们中切割出K条长度相同的 绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位(直接舍掉2为后的小数). 输入输出格 ...
- 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
- 洛谷 P1220 关路灯 题解
Description 有 $n$ 盏路灯,每盏路灯有坐标(单位 $m$)和功率(单位 $J$).从第 $c$ 盏路灯开始,可以向左或向右关闭路灯.速度是 $1m/s$.求所有路灯的最少耗电.输入保证 ...
- 【洛谷2050】 [NOI2012]美食节(费用流)
大家可以先看这道题目再做! SCOI2007修车 传送门 洛谷 Solution 就和上面那道题目一样的套路,但是发现你会获得60~80分的好成绩!!! 考虑优化,因为是SPFA,所以每一次只会走最短 ...
- 【洛谷P3410】拍照题解(最大权闭合子图总结)
题目描述 小B有n个下属,现小B要带着一些下属让别人拍照. 有m个人,每个人都愿意付给小B一定钱让n个人中的一些人进行合影.如果这一些人没带齐那么就不能拍照,小B也不会得到钱. 注意:带下属不是白带的 ...
- [BZOJ 3039&洛谷P4147]玉蟾宫 题解(单调栈)
[BZOJ 3039&洛谷P4147]玉蟾宫 Description 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. ...
随机推荐
- SDF与MDF的区别
标签: 杂谈 数据库扩展名为.sdf,是一个基于sql server compact edition的数据库文件,不需要安装SQL Server就可以用 基于服务的数据库扩展名为.mdf,是基于S ...
- thinkphp+ajax 实现点击加载更多数据
https://blog.csdn.net/a898712940/article/details/78545599?utm_source=blogxgwz8 适用范围:thinkphp3.2和thin ...
- postfix+自签证书,实现加密传输
说明:当前在centos 6.x环境下: cd /etc/pki/tls/misc ./CA -newca ..... 生成根证书 openssl req -new -nodes -keyout ma ...
- 卸载VS2015之后,安装VS2017出错
安装出现问题. 可通过以下方式排查包故障问题: 1. 使用以下搜索 URL 来搜索针对每个包故障的解决方案 2. 针对受与影响的工作负荷或组件修改选项,然后重新尝试安装 3. 从计算机上删除产品,然后 ...
- jqGrid列的统计
$("#List").jqGrid({ url: "${pageContext.request.contextPath}/cbfx/getCbhzList.do" ...
- Opencv中RGB通道/HSV通道并分离
OpenCV中HSV颜色模型及颜色分量范围 opencv HSV 颜色模型(H通道取值 && CV_BGR2HSV_FULL) [opencv]在hsv颜色空间识别区域颜色 将原图分离 ...
- mongodb 使用常见问题汇总(主要是集群搭建)
1 安装 请使用官方推荐的教程 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ 2 远程访问失败: 操作系统是u ...
- ztree树节点重叠问题
使用zTree时,由于同时使用了bootstrap插件,导致样式起了冲突,生成的树都挤在一起了, 最后的解决办法是设置zTreeStyle.css文件的.ztree li ul{}属性,在里面加入he ...
- Sessions 与Cookies详解
一.Cookie 是什么? HTTP协议是无状态的,每一次数据交换完毕就结束,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接.例如:我逛淘宝买东西,我看上了易宝棒棒糖,而我下单的时候 ...
- UE4物理模块(二)---建立物体碰撞
在前文中介绍了什么是物理以及如何在UE4和PhysX中进行可视化调试: Jerry:UE4物理模块(一)---概述与可视化调试zhuanlan.zhihu.com 这里调试只谈到了碰撞盒(后续还会有 ...