博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1191 棋盘分割
阅读量:5265 次
发布时间:2019-06-14

本文共 1426 字,大约阅读时间需要 4 分钟。

题目大意:

有一个8*8的正方形棋盘,每个格子有相对应的值,对于这个棋盘,我们可以割(n-1)次,使得切割后的n块棋盘权值和的标准差最小。

同时每次切割后下一次切割只能对上次被切割的其中一块进行切割,另一块就不能够再被切割了。

思路:

dp

首先可以注意到棋盘非常小,是8*8,n<15也并不大,先利用方差来计算,最后在用标准差

dp(x1,y1,x2,y2,k)表示(x1,y1) 为左上角(x2,y2)为右下角的矩形切k刀的答案。

首先,我们可以把方差的公式化简一下:

   1/n(x1^2+x2^2+...+xn^2-2*x1*avg-2*x2*avg-...-2*xn*avg+n*avg*avg)

=1/n(x1^2+x2^2+...+xn^2-2*avg*sum+sum*avg)

=1/n(x1^2+x2^2+...+xn^2-n*avg*avg)

=(x1^2+x2^2+...+xn^2)/n-avg^2

因为所有矩阵的和一定,所以我们先预处理出avg,然后dp表示每块的答案就好了

先预处理每块不切的情况 即dp(x1,y1,x2,y2,0)=sum^2

然后最外圈套k

枚举每一块的切割线以及左右两边哪边是新切的

最后把dp(0,0,7,7,n-1)带入公式

就做完了哈哈哈

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #define long long ll11 #define inf 21474836412 using namespace std;13 int n,map[9][9],sum[9][9];14 int f[9][9][9][9][17];15 double avg;16 int main()17 {18 scanf("%d",&n);19 for(int i=0;i<8;i++)20 for(int j=0;j<8;j++)21 {22 scanf("%d",&map[i][j]);23 sum[i][j]=sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1]+map[i][j];24 avg+=map[i][j];25 }26 avg=1.0*avg/n;27 for(int i1=0;i1<8;i1++)28 for(int j1=0;j1<8;j1++)29 for(int i2=i1;i2<8;i2++)30 for(int j2=j1;j2<8;j2++)31 {32 int s=sum[i2][j2]-sum[i1-1][j2]-sum[i2][j1-1]+sum[i1-1][j1-1];33 f[i1][j1][i2][j2][0]=s*s;34 }35 for(int k=1;k
View Code

转载于:https://www.cnblogs.com/yyc-jack-0920/p/7217077.html

你可能感兴趣的文章
HDU 4122
查看>>
Suite3.4.7和Keil u3自带fx2.h、fx2regs.h文件的异同
查看>>
打飞机游戏【来源于Crossin的编程教室 http://chuansong.me/account/crossincode 】
查看>>
[LeetCode] Merge Intervals
查看>>
【翻译自mos文章】当点击完 finishbutton后,dbca 或者dbua hang住
查看>>
Linux编程简介——gcc
查看>>
一种高效的序列化方式——MessagePack
查看>>
2019年春季学期第四周作业
查看>>
2019春第十周作业
查看>>
解决ThinkPHP关闭调试模式时报错的问题汇总
查看>>
【APT】SqlServer游标使用
查看>>
关于ExecuteNonQuery()返回值为-1
查看>>
Firefox修復QQ快速登錄
查看>>
PAT——1060. 爱丁顿数
查看>>
分布式技术追踪 2017年第二十期
查看>>
git添加公钥后报错sign_and_send_pubkey: signing failed: agent refused operation的解决办法
查看>>
Linux环境变量永久设置方法(zsh)
查看>>
MVC4.0 利用IActionFilter实现简单的后台操作日志功能
查看>>
脑袋卡在窗子里
查看>>
ruby 中文字符to_json后乱码(unicode)
查看>>