COCI 2017/2018 Round #6,February 3rd Cover [DP]

题解:给二维平面的点,求多个以原点为重心的矩形,将所有的点包括的矩形面积和最小值。

题解:首先将所有点映射到第一象限,可以得知他肯定是一个矩形高度递减的重叠图。所以我们就定义dp[i]表示i点往前,矩形和的最小值,n^2转移即可。

AC代码:

#include
#include
#include
#include
#define INF 100000000000000ll
using namespace std;
typedef long long ll;
ll dp[5005],b[5005],tot,qx[5005],qy[5005],q[5005];
int main()
{
	for(ll i=1;i<5005;i++)dp[i]=INF;
	ll n;
	scanf("%lld",&n);
	for(ll i=0;i=1;j--)
		{
			dy=max(dy,q[j]);
			dp[i]=min(dp[i],dp[j-1]+dy*b[i-1]);
		}
	}
	printf("%lld\n",dp[tot]*4);
}

你可能感兴趣的:(DP)