题目链接


复习了下餐巾计划问题。全忘了=-=

首先这是一道网络流。然后本题有\(n\)种建图方法,以及\(smy\) dalao还有单纯形做法。
先假设所有物品都是买入的。那么对于每一天,拆成两个点\(i,i'\),\(S\to i\)连边\((1,cost_{a_i})\)(容量\(1\)费用\(cost_{a_i}\)),\(i'\to T\)连边\((1,0)\),\(i\to i'\)连边\((1,0)\)。这样就能满足一些基本要求了。
然后考虑可以把某个\(a_i\)留到之后一天。考虑从\(i-1\)向\(a_i\)上次出现的位置\(las_{a_i}\)连边,容量\(1\)费用\(-cost_{a_i}\);\(i\to i+1\)连边\((k-1,0)\)。\(las_{a_i}\)那一天的流量可以流到\(i-1\)再流回\(las_{a_i}'\),退回\(cost_{a_i}\)的钱。
边的含义是,表示允许保留\(k-1\)种物品在架子上(必须要保留当前物品所以是\(k-1\))。当前物品的流量在\(i\)已经有了,所以让\(a_i\)上次的流量通过\(i-1\)流回去。


//31ms  100KB
#include <queue>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define S 0
#define gc() getchar()
typedef long long LL;
const int N=407,M=N*5,INF=0x3f3f3f3f;int Cost,T,A[N],c[N],las[N],H[N],Enum,nxt[M],to[M],cap[M],cost[M],dis[N],cur[N];
bool vis[N];inline int read()
{int now=0;register char c=gc();for(;!isdigit(c);c=gc());for(;isdigit(c);now=now*10+c-48,c=gc());return now;
}
inline void AE(int u,int v,int w,int c)
{to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum, cap[Enum]=w, cost[Enum]=c;to[++Enum]=u, nxt[Enum]=H[v], H[v]=Enum, cap[Enum]=0, cost[Enum]=-c;
}
bool SPFA()
{static bool inq[N];static std::queue<int> q;memset(inq,0,T+1), memset(dis,0x3f,T+1<<2);dis[S]=0, q.push(0);while(!q.empty()){int x=q.front(); q.pop();inq[x]=0;for(int i=H[x],v; i; i=nxt[i])if(cap[i]&&dis[v=to[i]]>dis[x]+cost[i])dis[v]=dis[x]+cost[i], !inq[v]&&(q.push(v),inq[v]=1);}return dis[T]<INF;
}
bool DFS(int x)
{if(x==T) return 1;vis[x]=1;for(int &i=cur[x],v; i; i=nxt[i])if(!vis[v=to[i]]&&cap[i]&&dis[v]==dis[x]+cost[i]&&DFS(v))return --cap[i],++cap[i^1],Cost+=cost[i],1;return 0;
}
int MCMF()
{while(SPFA()){memset(vis,0,T+1), memcpy(cur,H,T+1<<2);while(DFS(S));}return Cost;
}int main()
{
//  freopen("B.in","r",stdin);
//  freopen("B.out","w",stdout);int n=read(),K=read(); Enum=1, T=n<<1|1;for(int i=1; i<=n; ++i) A[i]=read();for(int i=1; i<=n; ++i) c[i]=read();for(int i=1; i<=n; ++i){AE(S,i,1,c[A[i]]), AE(i,i+n,1,0), AE(i+n,T,1,0);if(i<n&&K>1) AE(i,i+1,K-1,0);if(las[A[i]]) AE(i-1,las[A[i]]+n,1,-c[A[i]]);las[A[i]]=i;}printf("%d\n",MCMF());return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/10788412.html

Codeforces.802C.Heidi and Library (hard) (费用流zkw)相关推荐

  1. zkw费用流 java_[模板] 网络流相关/最大流ISAP/费用流zkw

    最大流/ISAP 话说ISAP是真快...(大多数情况)吊打dinic,而且还好写... 大概思路就是: 在dinic的基础上, 动态修改层数, 如果终点层数 $>$ 点数, break. 暂时 ...

  2. BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3836 (Codeforces) http://codeforces.com ...

  3. BZOJ.2597.[WC2007]剪刀石头布(费用流zkw)

    BZOJ 洛谷 \(Description\) 给定一张部分边方向已确定的竞赛图.你需要给剩下的边确定方向,使得图中的三元环数量最多. \(n\leq100\). \(Solution\) 这种选择之 ...

  4. 图论 —— 网络流 —— 费用流 —— zkw 费用流

    [概述] 求解费用流的方法很多,目前最流行的是 MCMF 费用流,其实质是将 EK 算法中的 bfs 换为了 SPFA 来计算最小费用,但其存在的一个缺点是 EK 是单路增广的,这样速度会相应的慢一些 ...

  5. [Neerc2016]Mole Tunnels (模拟费用流)

    题目链接:http://codeforces.com/gym/101190 SOLUTION: 模拟费用流 这题看完之后很容易想到费用流,但是n太大了不能直接跑. 我们考虑模拟这个费用流的增广过程,每 ...

  6. 网络流 费用流 模板 ISAP+SPFA+ZKW

    2020年4月20日重新发布.7年前的文章,几年前CSDN改版的时候变成了私密--重新发一下吧. 关于费用流ZKW算法的讲解:从入门到精通: 最小费用流的"zkw算法" 关于Din ...

  7. CodeForces 164C Machine Programming 费用流

    Machine Programming 题目连接: http://codeforces.com/problemset/problem/164/B Descriptionww.co One remark ...

  8. Codeforces 362E Petya and Pipes 费用流建图

    题意: 给一个网络中某些边增加容量,增加的总和最大为K,使得最大流最大. 费用流:在某条边增加单位流量的费用. 那么就可以2个点之间建2条边,第一条给定边(u,v,x,0)这条边费用为0 同时另一条边 ...

  9. CodeForces - 1426E Rock, Paper, Scissors(最小费用最大流+最大费用最大流)

    题目链接:点击查看 题目大意:A 和 B 在玩石头剪刀布,A 会出 a1 次石头,a2 次剪刀,a3 次布,同理 B 会出 b1 次石头,b2 次剪刀,b3 次布,若对战顺序是可以进行决定的,问 A ...

最新文章

  1. asp.net实现GZip压缩和GZip解压
  2. php通过ajax下载文件,通过Ajax如何请求下载Execl文件
  3. ng机器学习视频笔记(三) ——线性回归的多变量、特征缩放、标准方程法
  4. Bailian4044 小白鼠再排队【排序】
  5. OpenGL基础21:材质
  6. 正则RegExp对象的用法
  7. Java 算法刷题指南
  8. css的div垂直居中的方法,百分比div垂直居中
  9. 服务器安全狗的日志在哪儿 文件位置,服务器安全狗 防护日志功能介绍
  10. 我是社保局工作的,给大家介绍一下准确的“一老一小”保险知识[转载]
  11. 股票价格与采购经理人指数(PMI) 之间的关系
  12. HI3516A/Hi3516D H265流结构分析
  13. 转】用Hadoop构建电影推荐系统
  14. 二进制1010.0101转换为十进制
  15. 读取经纬度坐标并存储为字典格式,即key为ID,value为轨迹点
  16. MySQL使用HQL语句实现按中文拼音排序
  17. cmd 实用命令以及如何装逼
  18. 2022 年卡塔尔世界杯冠军可能是谁?
  19. package.json文件解读
  20. Prometheus_additional传统配置

热门文章

  1. CSU 1116 Kingdoms
  2. CVPR 2021 速览 | 旷视研究院入选学术成果盘点
  3. 视觉、语音、NLP、ML、AI安全,一家金融科技公司等你来
  4. OpenCV 4.5 发布!
  5. 2020年度中国人工智能学会优秀博士学位论文获奖名单正式出炉
  6. 南加州大学等开源元学习研究库learn2learn
  7. 近期计算机视觉相关算法竞赛汇总—总奖池超553万人民币
  8. [CV招聘]中科院空间应用工程与技术中心2019年校园招聘
  9. 【python教程入门学习】两道关于递归的练习题
  10. CVPR 2020 Oral:北大华为等提出只用加法的神经网络,重磅开源