正解:网络流

解题报告:

传送门$QwQ$

昂开始看到$jio$得,哇长得好像上一题嗷$QwQ$

然后仔细康康数据范围,发现,哇好像要几万个点,,,显然就$GG$了

但感$jio$思路方向好对的亚子?就考虑怎么优化趴$QwQ$

考虑到如果还没考虑好倒数第$i$道菜做啥就不用考虑倒数第$k+1$道?所以考虑动态加边,每次只有考虑完倒数第$k$道才做倒数第$k+1$道

所以动态加边就好$QwQ$?

就不详细港建图了$QwQ$和上题一样的嘛$QwQ$

$over$

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define lf double
#define gc getchar()
#define t(i) edge[i].to
#define w(i) edge[i].wei
#define fy(i) edge[i].fy
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define e(i,x) for(ri i=head[x];~i;i=edge[i].nxt) const int N=1e5+,M=;
int head[N],ed_cnt=-,vis[N],S,T,fr_ed[N],fr_nod[N],dis[N],n,m,as,t[M][M],bl[N],tim[N],nod_cnt;
struct ed{int to,nxt,wei,fy;}edge[N<<]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int nam(ri x,ri y){return (x-)*n+y;}
il void ad(ri x,ri y,ri z,ri p)
{edge[++ed_cnt]=(ed){x,head[y],z,p};head[y]=ed_cnt;edge[++ed_cnt]=(ed){y,head[x],,-p};head[x]=ed_cnt;}
il bool spfa()
{
queue<int>Q;Q.push(S);memset(vis,,sizeof(vis));vis[S]=;memset(dis,,sizeof(dis));dis[S]=;
while(!Q.empty())
{
ri nw=Q.front();Q.pop();vis[nw]=;
e(i,nw)
if(w(i) && fy(i)+dis[nw]<dis[t(i)])
{dis[t(i)]=dis[nw]+fy(i),fr_ed[t(i)]=i,fr_nod[t(i)]=nw;if(!vis[t(i)])Q.push(t(i)),vis[t(i)]=;}
}
if(dis[T]==dis[T+])return ;
ri flow=dis[T+];
for(ri i=T;i!=S;i=fr_nod[i])flow=min(flow,w(fr_ed[i]));
for(ri i=T;i!=S;i=fr_nod[i])w(fr_ed[i])-=flow,w(fr_ed[i]^)+=flow;as+=dis[T]*flow;
return ;
} int main()
{
//freopen("2050.in","r",stdin);freopen("2050.out","w",stdout);
memset(head,-,sizeof(head));n=read();m=read();S=,T=;
rp(i,,n)ad(++nod_cnt,S,read(),);rp(i,,n)rp(j,,m)t[i][j]=read();
rp(i,,m){tim[i]=;bl[++nod_cnt]=i;ad(T,nod_cnt,,);rp(j,,n)ad(nod_cnt,j,,t[j][i]);}
while(spfa())
{ri nw=bl[fr_nod[T]];++tim[nw];bl[++nod_cnt]=nw;ad(T,nod_cnt,,);rp(i,,n)ad(nod_cnt,i,,t[i][nw]*tim[nw]);}
printf("%d\n",as);
return ;
}

洛谷$P2050\ [NOI2012]$美食节 网络流的更多相关文章

  1. 洛谷P2050 [NOI2012]美食节

    动态加边网络流 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring ...

  2. Solution -「NOI 2012」「洛谷 P2050」美食节

    \(\mathcal{Description}\)   Link.   美食节提供 \(n\) 种菜品,第 \(i\) 种的需求量是 \(p_i\),菜品由 \(m\) 个厨师负责制作,第 \(j\) ...

  3. P2050 [NOI2012]美食节

    题目地址:P2050 [NOI2012]美食节 先来讲一下P2053 [SCOI2007]修车(如果会做请跳过) 同一时刻有 \(N\) 位车主带着他们的爱车来到了汽车维修中心.维修中心共有 \(M\ ...

  4. P2050 [NOI2012]美食节(费用流)

    P2050 [NOI2012]美食节 P2053 [SCOI2007]修车的加强版 因为数据较大,一次性把所有边都加完会T 于是我们每次只连需要的边跑费用流 就是开始先连所有厨师做倒数第1道菜 跑费用 ...

  5. 洛谷P2050 美食节

    修车加强版.发现每个厨师拆成p个点太浪费了,毕竟总共用到的才p个点.于是从下往上一个一个加,加到满流就停. 论动态加点费用流的正确姿势...... 我自己加总是出现负环...我是每次加一整层,然后跑完 ...

  6. 洛谷P1251 餐巾(网络流)

    P1251 餐巾 15通过 95提交 题目提供者该用户不存在 标签网络流贪心 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 为什么我全部10个测试点都对… 题目描述 一个餐厅在相继的N天里 ...

  7. 3150luogu洛谷

    若说代码 那真的是很水 但是 思想却有点意思 这道题是洛谷博弈论专题的第一道入门题, 然而刚开始我是不会做的, 毕竟是道入门题, 我博弈论还没入门呢. 这道题的做法就是: 如果m为偶数, 那么先手赢( ...

  8. P1219 八皇后 洛谷

    题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 ...

  9. 洛谷2050 BZOJ2897美食节题解

    放个链接 BZ链接 其实这题就是修车的加强版,做法差不多,还是对于每个厨师进行拆点 可是这样强行建图跑网络流会T飞 我们发现,如果一个厨师没有做倒数第x到菜,他一定不会做倒数第x+1到菜 我们的每次增 ...

随机推荐

  1. websocket实现数据库更新时前端页面实时刷新

    websocket实现数据库更新时前端页面实时刷新 javaweb 目录(?)[+] userjsp ManagerServletjava 如题,实现以上功能,我知道主要有两大种思路: 轮询:轮询的原 ...

  2. @codeforces - 117C@ Cycle

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个竞赛图(有向完全图),请找出里面的某个三元环,或者判断不 ...

  3. SuperSocket 中的日志系统

    当 SuperSocket boostrap 启动时,日志系统将会自动启动. 所以你无须创建自己的日志工具,最好直接使用SuperSocket内置的日志功能. SuperSocket 默认使用log4 ...

  4. History和Location

    Location 对象属性属性 描述hash 设置或返回从井号 (#) 开始的 URL(锚).host 设置或返回主机名和当前 URL 的端口号.hostname 设置或返回当前 URL 的主机名.h ...

  5. uni-app学习记录01-pages配置项

    { // 每个页面都需要在pages里面去声明配置 "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/coll ...

  6. vue创建脚手架 cil

    1.检查环境是否安装好了!node -vnpm -vnpm install cnpm -g --registry=https://registry.npm.taobao.orgcpm -v (版本与n ...

  7. H3C 出站包过滤工作流程

  8. element 树形控件使用

    <el-tree :data="morkDataList" show-checkbox ref="tree" node-key="id" ...

  9. spring security (BCryptPasswordEncoder)加密及判断密码是否相同

    通过BCryptPasswordEncoder的加密的相同字符串的结果是不同的,如果需要判断是否是原来的密码,需要用它自带的方法. 加密: BCryptPasswordEncoder encode = ...

  10. H3C STP基本配置