题解

1 条题解

  • 0
    @ 2017-03-12 17:26:03
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    using namespace std;
    int data[10001],f[10001];
    int n;
    
    int rua(int kong,int num)
    {   if(num==0) {
        if(kong==0) return 0; //神坑!!!! 
        return 500;
       }
        int pin=kong/num,fen=kong%num;
        return fen*pin*pin+(num-fen)*(pin-1)*(pin-1);
    }
    
    int main()
    { //freopen("in.txt","r",stdin); 
       int tot=0;
       char c[107];
       scanf("%d",&n);
    
       while (scanf("%s",c)==1)
       {  ++tot;
          int len=strlen(c);
          data[tot]=data[tot-1]+len;
       }
       
    
       for(int i=1;i<=tot;i++){
        
            f[i]=999999999;
       
            for(int k=0;k<i;k++)
            {
                if(data[i]-data[k]>(n-(i-k-1))) continue;
                f[i]=min(f[i],f[k]+rua(n-data[i]+data[k],i-k-1));
            }
    
       }
       printf("Minimal badness is %d.",f[tot]);
       
        return 0;
    }
    
  • 1

信息

难度
10
分类
(无)
标签
(无)
递交数
3
已通过
0
通过率
0%
上传者