博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最小割dp Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) E
阅读量:6330 次
发布时间:2019-06-22

本文共 1897 字,大约阅读时间需要 6 分钟。

http://codeforces.com/contest/724/problem/E

 

题目大意:有n个城市,每个城市有pi件商品,最多能出售si件商品,对于任意一队城市i,j,其中i<j,可以从城市i往j运输最多c件商品。 求最多一共能卖出多少件商品。  n<=10000

 

思路:

定义dp(i,j)目前在位置i,删除了j个s(换说法就是:dp[i,j]表示前i个中有j个和源点相通的最小割)

转移:如果第i个点不和源点相连,那么pi这条边一定要割掉,并且之前和源点相连的j个点,每个点会有一条边连向第i个点,这些边也要割掉。
花费是dp[i-1][j]+p[i]+j*c;
如果第i个点和源点相连,那么si这条边肯定要割掉。 花费是dp[i-1][j-1]+s[i];
故dp[i][j]=min(dp[i-1][j]+p[i]+j*c,dp[i-1][j-1]+s[i])。

 

刚开始智障的定义错了,估计网络流写多了习惯性的拆点了

//看看会不会爆int!数组会不会少了一维!//取物问题一定要小心先手胜利的条件#include 
using namespace std;#pragma comment(linker,"/STACK:102400000,102400000")#define LL long long#define ALL(a) a.begin(), a.end()#define pb push_back#define mk make_pair#define fi first#define se second#define haha printf("haha\n")const int maxn = 10000 + 5;const LL inf = 1e18;LL dp[2][maxn];LL p[maxn], s[maxn];int n, c;/*定义dp(i, j)表示目前是第i个position,我们要删除j个p如果这次删除的是sdp(i, j) = min(dp(i, j), dp(i-1, j) + (i-j) * c + s[i]);如果是删除pdp(i, j+1) = min(dp(i, j+1), dp(i-1, j) + p[i])///抱歉。上面的方法是错误的TAT。网络流做多了都一直习惯的把节点分开了定义dp(i,j)目前在位置i,删除了j个s(换说法就是:dp[i,j]表示前i个中有j个和源点相通的最小割)转移:如果第i个点不和源点相连,那么pi这条边一定要割掉,并且之前和源点相连的j个点,每个点会有一条边连向第i个点,这些边也要割掉。 花费是dp[i-1][j]+p[i]+j*c;如果第i个点和源点相连,那么si这条边肯定要割掉。 花费是dp[i-1][j-1]+s[i];故dp[i][j]=min(dp[i-1][j]+p[i]+j*c,dp[i-1][j-1]+s[i])。*/int main(){ cin >> n >> c; for (int i = 1; i <= n; i++) scanf("%lld", p + i); for (int i = 1; i <= n; i++) scanf("%lld", s + i); int pos = 0; for (int i = 1; i <= n; i++){ pos = pos ^ 1; for (int j = 0; j <= i; j++) dp[pos][j] = inf; for (int j = 0; j < i; j++){ dp[pos][j + 1] = min(dp[pos][j + 1], dp[pos ^ 1][j] + s[i]); dp[pos][j] = min(dp[pos][j], dp[pos ^ 1][j] + 1LL * j * c + p[i]); } } LL ans = inf; for (int i = 0; i <= n; i++) ans = min(dp[pos][i], ans); cout << ans << endl; return 0;}
View Code

 

转载于:https://www.cnblogs.com/heimao5027/p/6677218.html

你可能感兴趣的文章
C# tips ---值类型的装箱和拆箱
查看>>
SQL some any all
查看>>
电子书下载:Programming Windows Identity Foundation
查看>>
有理想的程序员必须知道的15件事
查看>>
用于测试的字符串
查看>>
财付通和支付宝资料收集
查看>>
PHPCMS V9数据库表结构分析
查看>>
『原创』+『参考』基于PPC的图像对比程序——使用直方图度量
查看>>
理解 IEnumerable 与 IEnumerator
查看>>
NHibernate 2.0 Beta 1 Released和一些工具
查看>>
【每天一个Linux命令】12. Linux中which命令的用法
查看>>
软件接口数据一致性机制
查看>>
微服务架构介绍和RPC框架对比
查看>>
Debian下使用OpenLDAP 管理端
查看>>
泛型排序器TComparer
查看>>
9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路...
查看>>
创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...
查看>>
Adobe驳斥Flash过度耗电论 称HTML5更耗电
查看>>
No!No!No! It's not fashion!
查看>>
艰困之道中学到的经验教训
查看>>