zoukankan      html  css  js  c++  java
  • luogu P4767 [IOI2000]邮局 四边形不等式优化

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm> 
    using namespace std;
    const int N=3030,INF=0x3f3f3f3f;
    int V,P,X[N],dp[N][N],w[N][N],d[N][N];
    void init()
    {
    	for(int l=1; l<=V; l++)
    	{
    		w[l][l]=0;
    		for(int r=l+1; r<=V; r++)
    			w[l][r]=w[l][r-1]+X[r]-X[l+r>>1];
    	}
    }
    
    int main()
    {
    	cin>>V>>P;
    	for(int i=1; i<=V; i++) cin>>X[i];
    	init();
    	sort(X+1,X+V+1);
    	memset(dp,0x3f,sizeof(dp));
    	dp[0][0]=0;
    	for(int j=1; j<=P; j++)
    	{
    		d[V+1][j]=V;
    		for(int i=V; i>=1; i--)
    		{
    			int minn=INF,minid;//w满足四边形不等式 
    			for(int k=d[i][j-1]; k<=d[i+1][j]; k++)
    			{
    				if(dp[k][j-1]+w[k+1][i]<minn)
    				{
    					minn=dp[k][j-1]+w[k+1][i];
    					minid=k;
    				}
    			}
    			dp[i][j]=minn;
    			d[i][j]=minid;
    		}
    	}
    	cout<<dp[V][P]<<endl;
    	return 0;
    }
    
  • 相关阅读:
    c++ *.h和*.cpp在编译中的作用
    test
    DOM Tree
    SecureCRT
    趣味盒1
    数据结构笔试:前缀表达式|后缀表达式
    Shell 文件包含
    Shell 输入/输出重定向
    Shell 函数
    Shell 流程控制
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12836723.html
Copyright © 2011-2022 走看看