UESTC_神秘绑架案 CDOJ 881

神秘绑架案

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

冬马被方师傅绑架了!!!

一天,春希收到了一个信封,里面有一张印有8×8棋盘的纸,一个被加了密的U盘和一个便条。便条上写着:



冬马在我手上,如果你想救出冬马,U盘里就有我详细的地址,当然前提是你能解出密码!

你可以把这个棋盘分割成n块,每一次你可以从一棋盘上割下一块矩形,并让剩下的部分也是矩形,再将剩下的部分如此分割。

原棋盘每一格有一个分值,一块矩形的总分为其所含各格分值之和。你需要按上述方法将棋盘分成n块后,求出各矩形棋盘总分的均方差。我也不介意告诉你,所有均方差中的最小值就是U盘的密码,那么请挣扎吧!

平均数公式:

x¯=∑ni=1xin

均方差公式:

σ=∑ni=1(xi−x¯)2n−−−−−−−−−−−−√

------方师傅留



春希非常焦急的找到了你,希望你能找出这个最小值,救出冬马。

Input

第一行一个整数n,表示分割后的块数。(1<n<15)

第二行到第九行,每行八个小于100的非负整数,表示棋盘上相应格子的分值。

Output

一个数,表示求出的最小值。(四舍五入精确到小数点后三位)

Sample input and output

Sample Input Sample Output
3
1 1 1 1 1 1 1 3
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 0
1 1 1 1 1 1 0 3
1.633

Source

2014 UESTC Training for Dynamic Programming

解题报告

。。。这题最大的坑点在于题意。。(我悲剧的查了两小时的错,结果发现题读错了。。。)

注意到你切矩形一次,有一边就不能再切了!!!。。。

也就是说你每切一次,就只能选择其中的一边继续切(玩醉了)

记忆化搜索,f(i,j,k) 表示把坐上角序号为i ,右下角序号为j的矩形分成k块的最小(x - x_)^2值..

剩下的搜就是了(水题)

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <cmath>
 6 using namespace std;
 7 const int maxn = 10;
 8 int sum[maxn][maxn],n;
 9 double f[70][70][20],average= 0.;
10 bool arrive[70][70][20];
11
12 inline int getr(int x)
13 {
14   return (x-1)/8 + 1;
15 }
16
17 inline int getc(int x)
18 {
19   return (x-1) % 8 + 1;
20 }
21
22
23 inline int getid(int x,int y)
24 {
25   return (x-1)*8+y;
26 }
27
28
29 double getval(int left,int right)
30 {
31     int sumx = 0 ;
32     int rst = getr(left) , red = getr(right) , cst = getc(left) , ced = getc(right);
33     for(int i = rst ; i <= red ; ++ i)
34      sumx += sum[i][ced] - sum[i][cst-1];
35     return (double)(sumx - average)*(sumx - average);
36 }
37
38 double dp(int left,int right,int times)
39 {
40    if (arrive[left][right][times])
41     return f[left][right][times];
42    double  &ans = f[left][right][times] = 1e110;
43    arrive[left][right][times] = true;
44    int rst = getr(left) , red = getr(right) , cst = getc(left) , ced = getc(right);
45    int number = (red - rst + 1) * (ced - cst + 1);
46    if (times > number)
47     return ans;
48    if (times == 1) //无法继续切割
49     return ans = getval(left,right);
50    //竖着切
51    for(int i = cst + 1 ; i <= ced ; ++ i)
52     {
53         int newleft = getid(rst,i);
54         int newright = getid(red,i-1);
55         ans = min(ans,getval(left,newright)+dp(newleft,right,times-1)); //拿右边继续切
56         ans = min(ans,getval(newleft,right)+dp(left,newright,times-1)); //拿左边继续切
57     }
58    //横着切
59    for(int i = rst ; i < red ; ++ i)
60     {
61        for(int j = 1 ; j <= times-1 ; ++ j)
62         {
63            int newleft = getid(i+1,cst);
64            int newright = getid(i,ced);
65            ans = min(ans,getval(left,newright)+dp(newleft,right,times-1)); //拿下面继续切
66            ans = min(ans,getval(newleft,right)+dp(left,newright,times-1)); //拿上面继续切
67         }
68     }
69    return ans;
70 }
71
72
73
74 int main(int argc,char *argv[])
75 {
76   memset(sum,0,sizeof(sum));
77   memset(arrive,false,sizeof(arrive));
78   scanf("%d",&n);
79   for(int i = 1 ; i <= 8 ; ++ i)
80    for(int j = 1 ; j <= 8 ; ++ j)
81     {
82        int temp;
83        scanf("%d",&temp);
84        sum[i][j] = sum[i][j-1] + temp;
85        average += (double)temp;
86     }
87   average /= n;
88   printf("%.3f\n",sqrt(dp(1,64,n) / n));
89   return 0;
90 }
时间: 2024-10-11 03:09:05

UESTC_神秘绑架案 CDOJ 881的相关文章

UESTC 881 神秘绑架案

LRJ黑书上的例题. 化简均方差公式: 均值的平方一定,所以只需让矩形的总分的平方和最小即可. 定义:dp[k][x1][y1][x2][y2],以(x1,y1)为左上角坐标,(x2,y2)为右下角坐标的矩形,切割K次以后得到的k+1块举行的总分平方和的最小值 转移方程:(分成横割和竖割) dp[k][x1][y1][x2][y2]=min{ dp[k-1][x1][y1][a][y2]+sum[a+1][y1][x2][y2], dp[k-1][a+1][y1][x2][y2]+sum[x1]

香港入室绑架案受害者向亲友报平安

新华网香港4月30日电 25日凌晨遭遇匪徒入室绑架的受害者罗君儿,30日晚主动召开记者会向亲友报平安. 罗君儿晚间于中环的一家酒店举行记者会.她表示,希望借记者会向家人和朋友报平安.记者会约三分钟,罗君儿没有回答媒体问题. 香港警方透露,罗君儿一度被藏匿于飞鹅山的山洞内,直至绑匪收到赎金后,她才被释放. 罗君儿说,在绑架期间她受到惊吓.感谢父母为事件奔波.由于警方正调查案件,因此不能向大家交代详情. 25日凌晨,一伙匪徒闯入罗君儿居住的清水湾道独立屋打劫,先抢走价值超过200万港元财物再掳走她本

UESTC_冬马党 CDOJ 882

冬马党 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Status 终于到了冬马党与雪菜党决战的时候了,为了方便,他们的决战之地可看成一个n×m矩阵. 决战前夜,冬马党安插在雪菜党中的内线告诉白学家Kuros,雪菜党已经在他们的决战之地埋下了地雷. 白学家Kuros根据多年来扫雷的经验,推测出雪菜党一定不会在相邻的格子里都放地雷.(两个格子相邻指它们共享一条边)

《远古外星人》 目录

目前字幕 下载 地址 http://pan.baidu.com/s/1pKLoZBP 第1季-(6) 00:战车 众神 太空 Chariots, Gods & Beyond 01:证据The   Evidence 02:天外来客  The Visitors 03:使命  The Mission 04:亲密接触  Closer Encounters 05:回归  The Return 第2季-(10) 01:神秘地区  Mysterious Places 02:众神与外星人 Gods & A

椅悄文偎死mevzhd2f84j986x

刘尘远连忙答道:"是我们医院新来的医生,是林主任介绍来的.""目前还不能确认,或许是工业中毒也说不定,但要最终确诊,需要抽血化验才行."深呼一口气,杜晨毅然决然的把卧室的门给关了上来.用最快的速度冲进的浴室,也不用去调了,直接放出冷水淋在身体上,浇熄身体的欲火.杜晨转过身去,冷眼望着刘尘远,道:"再多插一句嘴,就把你舌头拔掉!"看着这个站在自己面前,看上去很是雍容华贵,实则却是一副要杀人模样的贵妇,杜晨心中难免有些疑惑.这男人现在明显是误食了含有

忧芡勤米任x6givk501

几个医生在急救室门口进行低声讨论,一群护士也神情十分紧张.这几个医生都很年轻,显然无法凭借经验判断出这个男人是中了什么毒."那便恭敬不如从命了."杜晨有些愕然,愕然的是刘尘远替她下跪,她的神色却是这样理所应当,这难道就是上流人与生俱来的优越感么?杜晨无奈的叹了口气,瞟了一眼李藏德,似乎有那么一种后生不可教的感觉.觉得没必要跟这年轻人争执,便往自己的蛇皮袋走去,打算把蛇皮袋拿开,给李藏德让路.是一个头发稀疏,身材微胖,长得有些猥琐的,四十多岁的中年男人.他是急救科的副主任,除了林英男之外

芸疚坑尤瀑oci798uo86708w5d

"嗯,芳儿不怕的.要不是这个坏叔叔偷袭我,从我背后用**把我迷晕,就算叔叔不在,芳儿也不怕他!"说着芳儿忽然将手里的棒棒糖对准了地上的黄毛."好了,竟然真的活了过来!"最绝顶的往往却是人们看不见的,无论是昨天杜晨给那个中毒的男人解毒,还是今天给董璃治病.他倒要看看,这董夫人是那种真的自以为是的人,还是因为太关心女儿了,才乱了分寸,才以为自己要害她女儿,口不择言.而直到看见这个患者,杜晨才知道小莲嘴里的"很严重"是个什么概念."看脚!&q

盟铀磊躺致vy55n8cutdu9q8f5

这小护士就是昨天给自己打下手的那个,脸上长着一些雀斑,斯斯文文的小护士.也不知道为什么,面对自己的时候,她的小脸蛋总有些红扑扑的,好像很害羞一样."唉!"以气生机法!"杜晨,你好大的胆,你以为你是谁?你知道她是谁?她是董夫人啊,你敢让她跪?"刘尘远拦在了杜晨和董夫人之间,大声叫道.但如董璃这样痛的昏迷的,还正是一个没有见到.杜晨皱起了眉头,倒不是说他没有见过昏迷的病人."妈的,乡巴佬你想死啊!"呼-深呼一口气,杜晨毅然决然的把卧室的门给关了上来.

沿搜芾推粟wg6n4z8135672p4jnhc

杜晨蹙起了眉头,缓缓的朝衣柜走去,才一靠近,他就知道是自己多疑了.而反观这病人,虽然还呈现昏迷状态,但哪里还有之前那种半死不活的样子,气色看起来甚至比在场大多数人都要好."哼!你懂什么,治病要采取循序渐进的方法.恰巧我最近学了一套中医按摩手法,这一次绝对能够治好董小姐的痛经,让你见识见识!"刘尘远毫无办法,要搁在以前,董璃发病的时候,他也就打点杜冷丁之类的止痛药而已.可现在别说是止痛药了,他甚至已经给董璃打了麻醉剂,都不见任何好转.杜晨并没有真正接触过军队,但从这这些军装的缝线.军装上