E-goods Transportation
Idea: This maximum flow--min cut->dp good clever oh.
#include <bits/stdc++.h>#defineLL Long Long#defineFi first#defineSe Second#defineMk Make_pair#definePII Pair<int, int>#definePLI Pair<ll, int>#defineull unsigned long Longusing namespacestd;Const intN = 1e4 +7;Const intINF =0x3f3f3f3f;ConstLL INF =0x3f3f3f3f3f3f3f3f;Const intMoD = 1e9 +7;intN, C, cur, p[n], s[n]; LL dp[2][n];intMain () {scanf ("%d%d", &n, &c); for(inti =1; I <= N; i++) scanf ("%d", &P[i]); for(inti =1; I <= N; i++) scanf ("%d", &S[i]); memset (Dp[cur], INF,sizeof(Dp[cur])); dp[cur][0] =0; for(inti =1; I <= N; i++) {cur^=1; memset (Dp[cur], INF,sizeof(Dp[cur])); dp[cur][0] = dp[cur^1][0] +P[i]; for(intj =1; J < I; J + +) {Dp[cur][j]= Min (dp[cur^1][J] + 1ll*j*c + p[i], dp[cur^1][j-1] +S[i]); } Dp[cur][i]= dp[cur^1][i-1] +S[i]; } LL ans=INF; for(inti =0; I <= N; i++) ans =min (ans, dp[cur][i]); printf ("%lld\n", ans); return 0;}/**/
Intel Code Challenge Final Round (div. 1 + div. 2, Combined) e-goods Transportation max Flow min. cut DP