那个均方差,可以通过展开、合并Σ,发现最终只有Xi^2会对答案造成影响,其他都是定值,所以求出最小的和的平方就行。

其实这才是这题最难的部分,以下都是码农部分。

f[x1][y1][x2][y2][k] 从(x1,y1)到(x2,y2)这个矩形,割k次的最小平方和。

边界 k==1时,就是矩形本身面积的平方和。

其余情况,分两种,横着割和竖着割,一块继续割,另一块的面积平方加入答案。

(强烈建议纸笔画图标出坐标,不用纠结下标+1/-1问题)

维数比较多,所以用了记忆化,好写一点。

洛谷AC代码

//Stay foolish,stay hungry,stay young,stay simple
#include<iostream>
using namespace std; int n; int a[9][9],s[9][9];
int f[9][9][9][9][16]; inline int S(int x1,int y1,int x2,int y2){
x1--;y1--;//it includes (x1,y1) ,so..
return s[x2][y2]-s[x2][y1]-s[x1][y2]+s[x1][y1];
} int slove(int x1,int y1,int x2,int y2,int k){
int &ans=f[x1][y1][x2][y2][k];
if(k==1) return S(x1,y1,x2,y2)*S(x1,y1,x2,y2);//actually there is no need to calc it twice
if(ans) return ans;
ans=1<<30;//big enough!
if(x1<x2)
for(int i=x1;i<x2;i++){ int t1=slove(x1,y1,i,y2,k-1);
int s1=S(i+1,y1,x2,y2);
int t2=slove(i+1,y1,x2,y2,k-1);
int s2=S(x1,y1,i,y2);
ans=min(ans,min(t1+s1*s1,t2+s2*s2));
}
if(y1<y2)//maybe useful?
for(int i=y1;i<y2;i++){
int t1=slove(x1,y1,x2,i,k-1);
int s1=S(x1,i+1,x2,y2);
int t2=slove(x1,i+1,x2,y2,k-1);
int s2=S(x1,y1,x2,i);
ans=min(ans,min(t1+s1*s1,t2+s2*s2));
}
return ans;
} int main(){
cin>>n;
for(int i=1;i<=8;i++)
for(int j=1;j<=8;j++)
cin>>a[i][j];
for(int i=1;i<=8;i++)
for(int j=1;j<=8;j++)
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
cout<<slove(1,1,8,8,n);
return 0;
}

最新文章

  1. [Eclipse][SVN] 在eclipse上安装SVN
  2. [Angular 2] Understanding Pure &amp; Impure pipe
  3. python+django+wusgi+nginx安装部署
  4. Java NIO内存映射---上G大文件处理(转)
  5. 浏览器兼容问题 chrome iframe location href
  6. HTML5无插件多媒体Media——音频audio与视频video
  7. Apache 解析.htaccess
  8. sql查找某一列中某一数值出现次数大于3的记录的前3条
  9. struts2实现文件上传和下载
  10. 《Apache kafka实战》读书笔记-kafka集群监控工具
  11. SpringMVC中请求路径参数使用正则表达式
  12. [P3452][POI2007]BIU-Offices (BFS)
  13. Ubuntu16.04安装YouCompleteMe
  14. OpenACC 异步计算
  15. sql-pivot
  16. 6.7 块管理器BlockManager
  17. Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法
  18. 基于 UML 的业务建模举例
  19. Enable SVM while booted from alternate media (ZT)
  20. 宝塔linux面板,修改root密码

热门文章

  1. 7天学完Java基础之4/7
  2. yield 为什么不能进入回调函数
  3. iOS 加载Viewcontroller的几种方法
  4. EOJ Monthly
  5. Java对象的内存布局以及对象的访问定位
  6. redirect与forward的区别
  7. CSS实现文字旋转/实现角标
  8. CF750D New Year and Fireworks
  9. mysql5.7.25集群部署和方案设计(附PXC一键部署脚本)
  10. Android studio 时间选择器