• [codevs2102]石子归并


    2102 石子归并   codevs

    题目描述 Description

    在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。
    试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分.

    输入描述 Input Description

    数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.

    输出描述 Output Description

    输出共2行,第1行为最小得分,第2行为最大得分.

    样例输入 Sample Input

    4
    4 4 5 9

    样例输出 Sample Output

    43
    54

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    
    using namespace std;
    const int MAX=0x7fffffff/2;
    
    int read()
    {
        int x=0,f=1,ch=getchar();
        while(!isdigit(ch))if(ch=='-')f=-1,ch=getchar();
        while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
        return x*f;
    }
    int n,a[210],j,ansmin=MAX,ansmax=0;
    int sum[210],maxn[210][210],minn[210][210];
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[n+i]=a[i];}//不知道为什么a[i]用read输入就TLE???
        for(int i=1;i<=2*n;i++)
        {
            sum[i]=sum[i-1]+a[i];
            minn[i][i]=0;
            maxn[i][i]=0;
        }
        for(int L=2;L<=n;L++)
        {
            for(int i=1;i<=2*n-L+1;i++)
            {
                j=i+L-1;
                minn[i][j]=MAX;maxn[i][j]=0;
                for(int k=i;k<j;k++)
                {
                    minn[i][j]=min(minn[i][j],minn[i][k]+minn[k+1][j]);
                    maxn[i][j]=max(maxn[i][j],maxn[i][k]+maxn[k+1][j]);
                }
                minn[i][j]=minn[i][j]+sum[j]-sum[i-1];
                maxn[i][j]=maxn[i][j]+sum[j]-sum[i-1];
            }
        }
        for(int i=1;i<=n;i++)ansmax=max(ansmax,maxn[i][i+n-1]),ansmin=min(ansmin,minn[i][i+n-1]);
        printf("%d
    %d",ansmin,ansmax);
        return 0;
    }
  • 相关阅读:
    研修班第四次课笔记
    形象革命——穿搭
    对管理者的几点要求
    全链路压测
    项目管理最忌的5件事,千万不要忽视!
    2018年计划小目标(9月)PMP
    NLP是什么
    (深度好文)重构CMDB,避免运维之耻
    《转》我们不得不面对的中年职场危机
    项目管理,让自己更从容
  • 原文地址:https://www.cnblogs.com/taojy/p/9474195.html
Copyright © 2020-2023  润新知