| 记录编号 | 
        42753 | 
        评测结果 | 
        AWAWAAAWWW | 
    
    
        | 题目名称 | 
        100.[NOI 1999]棋盘分割 | 
        最终得分 | 
        50 | 
            
    
    
        | 用户昵称 | 
         Truth.Cirno | 
        是否通过 | 
        未通过 | 
    
    
        | 代码语言 | 
        C++ | 
        运行时间 | 
        0.361 s  | 
    
    
        | 提交时间 | 
        2012-09-28 21:49:16 | 
        内存使用 | 
        1.93 MiB  | 
        
    
    
    
    		显示代码纯文本
		
		#include <cstdio>
#include <cmath>
using namespace std;
int n,map[10][10]={0},sco[10][10]={0},rec[100];
double minnum=100000000;
void dfs(int deep,int x1,int y1,int x2,int y2)
{
	int i;
	if (deep==n)
	{
		double ave,s;
		rec[deep]=sco[x2][y2]-sco[x1-1][y2]-sco[x2][y1-1]+sco[x1-1][y1-1];
		ave=0;
		s=0;
		for (i=1;i<=n;i++)
			ave+=rec[i];
		ave/=n;
		for (i=1;i<=n;i++)
		{
			s+=pow(rec[i]-ave,2.0);
			if (s>=minnum)
				return;
		}
		minnum=s;
		return;
	}
	if ((x2-x1)*(y2-y1)</*!>=*/n-deep)
		return;//short cut
	for (i=x1;i<x2;i++)
	{
		rec[deep]=sco[x2][y2]-sco[i/*+1-1*/][y2]-sco[x2][y1-1]+sco[i/*+1-1*/][y1-1];//(i+1,y1)-->(x2,y2)
		dfs(deep+1,x1,y1,i,y2);
		rec[deep]=sco[i][y2]-sco[x1-1][y2]-sco[i][y1-1]+sco[x1-1][y1-1];//(x1,y1)-->(i,y2)
		dfs(deep+1,i+1,y1,x2,y2);
	}
	for (i=y1;i<y2;i++)
	{
		rec[deep]=sco[x2][y2]-sco[x1-1][y2]-sco[x2][i/*+1-1*/]+sco[x1-1][i/*+1-1*/];//(x1,i+1)-->(x2,y2)
		dfs(deep+1,x1,y1,x2,i);
		rec[deep]=sco[x2][i]-sco[x1-1][i]-sco[x2][y1-1]+sco[x1-1][y1-1];//(x1,y1)-->(x2,i)
		dfs(deep+1,x1,i+1,x2,y2);
	}
}
int main(void)
{
	freopen("division.in","r",stdin);
	freopen("division.out","w",stdout);
	int i,j;
	scanf("%d",&n);
	for (i=1;i<=8;i++)
		for (j=1;j<=8;j++)
		{
			scanf("%d",&map[i][j]);
			sco[i][j]=sco[i-1][j]+sco[i][j-1]-sco[i-1][j-1]+map[i][j];
		}
	dfs(1,1,1,8,8);
	printf("%.3lf\n",sqrt(minnum/n));
	return(0);
}