洛谷P1251 餐巾(网络流)】的更多相关文章

(题外话:心塞...大部分时间都在debug,拆点忘记加N,总边数算错,数据类型标错,字母写错......) 题目链接:https://www.luogu.org/problemnew/show/P1251 洛谷 P1251 餐巾计划问题 输入输出样例 输入样例#1: 3 1 7 5 11 2 2 3 1 输出样例#1: 134 说明 N<=2000 ri<=10000000 p,f,s<=10000 时限4s 题解:拆点再跑费用流呗,第i天拆成Xi(脏的餐巾)和Yi(干净的餐巾).对于…
P1251 餐巾 15通过 95提交 题目提供者该用户不存在 标签网络流贪心 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 为什么我全部10个测试点都对… 题目描述 一个餐厅在相继的N天里,第i天需要Ri块餐巾(i=l,2,…,N).餐厅可以从三种途径获得餐巾. (1)购买新的餐巾,每块需p分: (2)把用过的餐巾送到快洗部,洗一块需m天,费用需f分(f<p).如m=l时,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情况也如此. (3)把餐巾送到慢洗部,洗一块需n天(n>m)…
传送门 不得不说这题真是思路清奇,真是网络流的一道好题,完全没想到网络流的建图还可以这么建 我们把每一个点拆成两个点,分别表示白天和晚上,白天可以得到干净的餐巾(购买的,慢洗的,快洗的),晚上可以得到脏餐巾(之前剩下的,今天用过的) 1.每一天,我们都从源点向晚上连边,容量为餐巾,费用$0$,表示可以免费获得这么多餐巾,从早上想汇点连边,容量为餐巾,费用为$0$,表示可以免费提供这么多餐巾,流满时表示当天餐巾够用 2.从每一天晚上向第二天晚上连边,容量$inf$,费用$0$,表示可以把脏餐巾留到…
题意 一家餐厅,第$i$天需要$r_i$块餐巾,每天获取餐巾有三种途径 1.以$p$的费用买 2.以$f$的费用送到快洗部,并在$m$天后取出 3.以$s$的费用送到慢洗部,并在$n$天后取出 问满足要求时的最小费用 Sol 一道非常不错的网络流,应该不难看出是费用流. 首先进行拆点,把每个点早上和晚上,然后进行连边 从$S$向i连边$(0, r_i)$,表示到了晚上有$r_i$块脏餐巾 从$i'$向$T$连边$(0, r_i)$,表示早上有$r_i$块新餐巾 从$S$向$i'$连边$(p, I…
题目大意:一个餐厅N天,每天需要$r_i$块餐巾.每块餐巾需要p元,每天用过的餐巾变脏,不能直接用.现在有快洗店和慢洗店,快洗店洗餐巾需要m天,每块花费f元:慢洗店洗餐巾需要n天,每块餐巾s元(m < n,s<  f).现要求最新的花费使满足每天所需. 题解:把每天拆点,变成上午和下午,进行连边,跑费用流 卡点:现TLE60 C++ Code: #include<cstdio> #include<cctype> #include<cstring> #defi…
建图细节比较多,对于每个点i,拆成i和i',i表示用的餐巾,i'表示脏餐巾,连接: (s,i,r[i],p)表示在这一天买新餐巾 (i,t,r[i],0)表示这一天用了r[i]的餐巾 (s,i+n,r[i],0)表示这一天有r[i]条脏餐巾 if(i+ft<=n) ins(i+n,i+ft,inf,fp)注意特判,表示送去快洗,inf是因为这一天的脏餐巾不止这一天剩下的,还有之前剩下的 if(i+st<=n) ins(i+n,i+st,inf,sp)注意特判,表示送去慢洗,inf是因为这一天的…
题目链接 最小费用最大流. 每天拆成两个点,早上和晚上: 晚上可以获得\(r_i\)条脏毛巾,从源点连一条容量为\(r_i\),费用为0的边. 早上要供应\(r_i\)条毛巾,连向汇点一条容量为\(r_i\)吗,费用为0的边. 每天可以买毛巾,晚上向第二天早上连一条费用为\(p\),容量为\(inf\)的边. 可以送快洗,晚上向\(m\)天之后的早上连费用\(f\),容量\(inf\)的边 可以送慢洗,晚上向\(n\)天之后的早上连费用\(s\),容量\(inf\)的边 脏毛巾可以留到第二天晚上…
[洛谷P3376题解]网络流(最大流)的实现算法讲解与代码 更坏的阅读体验 定义 对于给定的一个网络,有向图中每个的边权表示可以通过的最大流量.假设出发点S水流无限大,求水流到终点T后的最大流量. 起点我们一般称为源点,终点一般称为汇点 内容前置 1.增广路 ​ 在一个网络从源点S到汇点T的一条各边剩余流量都大于0(还能让水流通过,没有堵住)的一条路. 2.分层 ​ 预处理出源点到每个点的距离(每次寻找增广路都要,因为以前原本能走的路可能因为水灌满了,导致不能走了).作用是保证只往更远的地方放水…
题目链接 我做的网络流24题里的第一题.. 想是不可能想到的,只能看题解. 首先,我们拆点,将一天拆成晚上和早上,每天晚上会受到脏餐巾(来源:当天早上用完的餐巾,在这道题中可理解为从原点获得),每天早上又有干净的餐巾(来源:购买.快洗店.慢洗店). 1.从原点向每一天晚上连一条流量为当天所用餐巾x,费用为0的边,表示每天晚上从起点获得x条脏餐巾. 2.从每一天早上向汇点连一条流量为当天所用餐巾x,费用为0的边,每天白天,表示向汇点提供x条干净的餐巾,流满时表示第i天的餐巾够用 . 3.从每一天晚…
有上下界的最小费用最大流 可以联想到供求平衡问题,所以我们要拆点做这道题 把每天分为二分图两个集合中的顶点Xi,Yi,建立附加源S汇T. 1.从S向每个Xi连一条容量为ri,费用为0的有向边. 2.从每个Yi向T连一条容量为ri,费用为0的有向边. 3.从S向每个Yi连一条容量为无穷大,费用为p的有向边. 4.从每个Xi向Xi+1(i+1<=N)连一条容量为无穷大,费用为0的有向边. 5.从每个Xi向Yi+m(i+m<=N)连一条容量为无穷大,费用为f的有向边. 6.从每个Xi向Yi+n(i+…