1 条题解
-
0
刷题去 LV 9 MOD @ 8 年前
- 1
信息
- 难度
- 10
- 分类
- (无)
- 标签
- (无)
- 递交数
- 3
- 已通过
- 0
- 通过率
- 0%
- 上传者
#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;
}