1 条题解
-
0
C++ :
#include<iostream> #include<string> using namespace std; const int N(10000+5); int n,t,f[N],len[N]; string word[N]; //ifstream cin("format.in"); //ofstream cout("format.out"); void init(); void solve(); int main() { init(); solve(); //system("pause"); return 0; } void init() { cin>>n; t=1; while (cin>>word[t]) t++; t--; len[0]=0; for (int i=1;i<=t;i++) len[i]=len[i-1]+word[i].size(); } void solve() { f[0]=0; f[1]=500; for (int i=2;i<=t;i++) { if (word[i].size()<n) f[i]=f[i-1]+500; else f[i]=f[i-1]; //当前单词长度等于限制宽度时 for (int j=2;j<=i&&len[i]-len[i-j]+j-1<=n;j++) { int x,y,z,s=0; z=n-(len[i]-len[i-j]); x=z/(j-1); y=z%(j-1); for (int k=1;k<=y;k++) s+=x*x; for (int k=1;k<=j-1-y;k++) s+=(x-1)*(x-1); f[i]=min(f[i],f[i-j]+s); } } cout<<"Minimal badness is "<<f[t]<<".\n"; }
- 1
信息
- ID
- 90
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者