• CF#715 div2


    C. The Sports Festival
    首先sort一下,用d[i][j]表示上场为s[i]到s[j]时的最小值。 ans=d[1][n],最后上场的肯定为最大最小值。

    状态转移方程:d[i][j]=s[j]-s[i]+min(d[i+1][j],d[i][j-1]),只能从这两个状态得到。

    边界:上场为一个人时,都为0,即d[i][i]=0

    代码
    
    int s[2005];
    ll d[2005][2005];
    int main()
    {
    	ios::sync_with_stdio(false); cin.tie(nullptr);
    	int n;
    	cin >> n;
    	for (int i = 1; i <= n; i++) {
    		cin >> s[i];
    	}
    	sort(s + 1, s + n + 1);
    	for (int i = 1; i <= n; i++) {
    		d[i][i] = 0;
    	}
    	for (int dis = 1; dis < n; dis++) {
    		for (int i = 1; i + dis <= n; i++) {
    			d[i][i + dis] = s[i + dis] - s[i] 
    				+ min(d[i + 1][i + dis], d[i][i + dis - 1]);
    		}
    	}
    	cout << d[1][n];
    }
      
  • 相关阅读:
    linux运维、架构之路-MySQL主从复制
    多线程
    IO
    查看信息
    乱码
    字节流与字符流
    file
    JDBC
    规范
    Java常用包
  • 原文地址:https://www.cnblogs.com/lingshi321/p/14672857.html
Copyright © 2020-2023  润新知