CF724E Goods transportation】的更多相关文章

照惯例CF的题不放原题链接... 题意:一个序列上有n个点,每个点有权值pi和si.表示这个点一开始有pi个物品,最多可以卖出si个物品,每个点都可以把物品向编号更大的点运输,但是对于i < j的任意点对(i, j)最多从i到j运c个物品.求最多能卖出多少个物品. 题解: 如果不考虑数据范围的话,可以直接用网络流建图.s向每个点连流量为pi的边,表示一开始有pi的流量,每个点i向满足i < j的点j连流量为c的边,表示最多运送c个物品,每个点向t连流量为si的边,表示最多可以卖si个物品. 最…
最大流既视感 然后 TLEMLE既视感 然后 最大流=最小割 然后 dp[i][j]前i个点j个点在S集合,最小割 然后 dp[i][j]=min(dp[i-1][j]+p[i]+j*c,dp[i-1][j-1]+s[i])考虑i点和T的边要不要断 然后 滚动数组优化一下,O(n^2)过10000 #include<bits/stdc++.h> #define reg register int #define il inline #define numb (ch^'0') using name…
Goods transportation time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output There are n cities located along the one-way road. Cities are numbered from 1 to n in the direction of the road. The i-…
E. Goods transportation 题目连接: http://codeforces.com/contest/724/problem/E Description There are n cities located along the one-way road. Cities are numbered from 1 to n in the direction of the road. The i-th city had produced pi units of goods. No mo…
E - Goods transportation 思路:这个最大流-> 最小割->dp好巧妙哦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define PII pair<int, int> #define PLI pair<LL, int> #define ull unsigned long lo…
[codeforces724E]Goods transportation 试题描述 There are n cities located along the one-way road. Cities are numbered from 1 to n in the direction of the road. The i-th city had produced pi units of goods. No more than si units of goods can be sold in the…
题目链接:http://codeforces.com/contest/724/problem/E 题目大意: 有n个城市,每个城市有pi件商品,最多能出售si件商品,对于任意一队城市i,j,其中i<j,可以从城市i往j运输最多c件商品. 求最多一共能卖出多少件商品.  n<=10000 解法一(官方解法): 构造网络流,因为边太多,不可能直接跑最大流. 根据图的特殊性,考虑用dp求解最小割. 状态:dp[i,j]表示前i个中有j个和源点相通的最小割. 转移:如果第i个点不和源点相连,那么pi这…
Description 有 \(n\) 个点,每个点有一个入流和出流,每个点与编号比它大的点连边,容量为 \(c\) ,求最大流. Sol DP. 这种特殊的图可以DP,把最大流转化成最小割. 最小割就是 \(\sum s_i,i\in S + \sum p_j,j \in T + c \sum [i \in S][j\in T]\) . 最后一个式子其实就是 \(S\) 与 \(T\) 的割边. \(f[i][j]\) 表示前 \(i\) 个点有 \(j\) 个点 \(\in S\) 转移就是…
[题目链接] http://codeforces.com/problemset/problem/724/E [题目大意] 每个城市有pi的物品可以运出去卖,si个物品可以买, 编号小的城市可以往编号大的城市最多运送c的物品,问最多有多少物品可以被买卖 [题解] 源点向每个城市引pi的流,每个城市向汇点引si的流, 小编号的城市往大编号的城市引c的流,那么全图的最大流就是答案, 但是数据量过大,我们考虑转化. 因为最大流等于最小割,我们发现对于这个图,最后每个点不是跟s连就是跟t连, 那么我们设d…
妙啊 首先暴力建图跑最大流非常简单,s向每个i连流量为p[i]的边,每个i向t连流量为s[i]的边,每个i向j连流量为c的边(i<j),但是会又T又M 考虑最大流=最小割 然后dp求最小割,设f[i][j]为割到第i个点,有j条连着s(因为最小割中一个点不是连s就是连t),转移是 \[ f[i][j]=min(f[i-1][j]+1*j*c+p[i],f[i-1][j-1]+s[i]) \] #include<iostream> #include<cstdio> using…