洛谷 [P251] 餐巾计划问题】的更多相关文章

有上下界的最小费用最大流 可以联想到供求平衡问题,所以我们要拆点做这道题 把每天分为二分图两个集合中的顶点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+…
(题外话:心塞...大部分时间都在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(干净的餐巾).对于…
题目链接 /* 每一天的餐巾需求相当于必须遍历某些点若干次 设q[i]为Dayi需求量 (x,y)表示边x容y费 将每个点i拆成i,i',由i'->T连(q[i],0)的边,表示求最大流的话一定要流满q[i] 对于i,由S->i连(q[i],0)的边,表示满足Dayi需求后最多还能给出q[i]块餐巾(感觉INF好像also ok?) 对于三种方式: 购买(花p买一块餐巾): 由S->i'连(INF,p),表示可以直接花p供给Dayi的需求 送到快洗部(a天洗完 每块花b): 由i->…
传送门 不得不说这题真是思路清奇,真是网络流的一道好题,完全没想到网络流的建图还可以这么建 我们把每一个点拆成两个点,分别表示白天和晚上,白天可以得到干净的餐巾(购买的,慢洗的,快洗的),晚上可以得到脏餐巾(之前剩下的,今天用过的) 1.每一天,我们都从源点向晚上连边,容量为餐巾,费用$0$,表示可以免费获得这么多餐巾,从早上想汇点连边,容量为餐巾,费用为$0$,表示可以免费提供这么多餐巾,流满时表示当天餐巾够用 2.从每一天晚上向第二天晚上连边,容量$inf$,费用$0$,表示可以把脏餐巾留到…
题目大意:一个餐厅N天,每天需要$r_i$块餐巾.每块餐巾需要p元,每天用过的餐巾变脏,不能直接用.现在有快洗店和慢洗店,快洗店洗餐巾需要m天,每块花费f元:慢洗店洗餐巾需要n天,每块餐巾s元(m < n,s<  f).现要求最新的花费使满足每天所需. 题解:把每天拆点,变成上午和下午,进行连边,跑费用流 卡点:现TLE60 C++ Code: #include<cstdio> #include<cctype> #include<cstring> #defi…
题意 一家餐厅,第$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…
建图细节比较多,对于每个点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\)的边 脏毛巾可以留到第二天晚上…
P2680 运输计划 题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n−1 条航道连通了 LL 国的所有星球. 小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 u_iui​ 号星球沿最快的宇航路径飞行到 v_ivi​ 号星球去.显然,飞船驶过一条航道是需要时间的,对于航道 jj,任意飞船驶…
BZOJ原题链接 洛谷原题链接 用\(LCA\)初始化出所有运输计划的原始时间,因为答案有单调性,所以二分答案,然后考虑检验答案. 很容易想到将所有超出当前二分的答案的运输计划所经过的路径标记,在这些运输计划都经过的边中的权值最大的这条边上建立虫洞,如果能使得所有运输计划中需要时间最多的那个计划能在当前二分的答案之内完成,那么这个答案就是可行的. 然后考虑如何快速找到这些运输计划都经过的边,本质上我们要求的就是一条边被覆盖几次,所以考虑树上差分. 定义\(dif[i]\)表示点\(i\)到它父亲…