记录编号 |
270548 |
评测结果 |
AAAAAAAAAA |
题目名称 |
奇怪的监狱 |
最终得分 |
100 |
用户昵称 |
521 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.000 s |
提交时间 |
2016-06-14 21:55:36 |
内存使用 |
0.00 MiB |
显示代码纯文本
- #include<stdio.h>
- #include<stdlib.h>
- #define M 0x7ffffff
- int f[1010][1010]={0},a[1010][1010]={0},A[1010]={0};
- int min(int x,int y){return x<y?x:y;}
- int cmp(const void*x,const void*y){return *(int*)x-*(int*)y;}
- inline int QR()
- {
- char ch;
- while(ch=getchar(),ch<'0'||ch>'9');
- int x=ch-48;
- while(ch=getchar(),ch>='0'&&ch<='9')x=x*10+ch-48;
- return x;
- }
- int _521()
- {
- freopen("prison.in","r",stdin);
- freopen("prison.out","w",stdout);
- int n,m,i,j,r,k;
- n=QR(),m=QR();
- for(i=1;i<=m;i++) A[i]=QR();
- qsort(A+1,m,sizeof(A[0]),cmp);
- for(i=1;i<=m;i++) a[1][i]=A[i];
- m++,a[1][m]=n+1;
- for(j=1;j<=m;j++) a[1][j]=a[1][j]-j;
- for(i=2;i<=m;i++)
- for(j=i;j<=m;j++)
- a[i][j]=a[1][j]-a[1][i-1];
- for(i=1;i<=m;i++)
- for(j=i+1;j<=m;j++)
- f[i][j]=M;
- for(r=1;r<m;r++)
- {
- for(i=1;i<=m-r;i++)
- {
- j=i+r;
- for(k=i;k<j;k++)
- f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+a[i][j]-i+j-1);
- }
- }
- printf("%d\n",f[1][m]);
- return 0;
- }
- int _520=_521();
- int main(){;}