记录编号 270548 评测结果 AAAAAAAAAA
题目名称 奇怪的监狱 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 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(){;}