1 条题解
-
0
C++ :
#include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; int f[10010]; int word[10010]; int n,num; int main() { scanf("%d\n",&n); num=0; char s[101]; while (scanf("%s",s)!=EOF) word[++num]=strlen(s); memset(f,255,sizeof(f)); f[0]=0; for (int i=0;i<num;i++){ int len=0; for (int j=1;1;j++){ if (i+j>num) break; int bad=0; len=len+word[i+j]; if (len+j-1>n) break; if (j==1&&len<n) bad=500; else if (j==1) bad=0; else { int k,kk; k=(n-len)/(j-1); kk=(n-len)-k*(j-1); bad=kk*k*k+(k-1)*(k-1)*(j-kk-1); } if ((f[i]+bad<f[i+j])||(f[i+j]==-1)) f[i+j]=f[i]+bad; } } printf("Minimal badness is %d.\n",f[num]); return 0; }
- 1
信息
- ID
- 77
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者