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

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

  题目链接:

  化简公式,然后记忆化搜索求解。a=sqrt( Σ(xi-x)^2/n )  =>  n*a^2=(x1-x)^2 + (x2-x)^2 + ...... + (xn-x)^2  =>  n*a^2=(x1^2+x2^2+......+xn^2) - 2*(x1+x2+......xn)*x + n*x^2 .  可以看出就是求分割后平方和的最小值,然后记忆化搜索就可以了,f[k][x1][y1][x2][y2]为方块(x1,y2)-(x2,y2)还需分割k次后的平方和的最小值。这里可以先求出所有方块的平方和值,使得在搜索过程中求任意方块O(1)。看一下时间复杂度上限,一共有8^4方块,每个方块最多被分割n次,最多被2*8次更新,则O(8^5*n),所以直接循环枚举都能过,但用忆化搜索可以去掉许多不必要的状态。

1 //STATUS:C++_AC_0MS_592KB 2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 using namespace std;13 #define LL __int6414 #define pii pair
15 #define Max(a,b) ((a)>(b)?(a):(b))16 #define Min(a,b) ((a)<(b)?(a):(b))17 #define mem(a,b) memset(a,b,sizeof(a))18 #define lson l,mid,rt<<119 #define rson mid+1,r,rt<<1|120 #define abs(a) ((a)>0?(a):-(a))21 const int N=9,INF=0x3f3f3f3f;22 23 int num[N][N],f[15][N][N][N][N],sv[N][N][N][N],s[N][N];24 int n;25 26 void getsv()27 {28 int i,j,t,x1,y1,x2,y2;29 for(i=1;i<=8;i++){30 for(j=1,t=0;j<=8;j++){31 t+=num[i][j];32 s[i][j]+=s[i-1][j]+t;33 }34 }35 for(x1=1;x1<=8;x1++)36 for(y1=1;y1<=8;y1++)37 for(x2=x1;x2<=8;x2++)38 for(y2=y1;y2<=8;y2++){39 sv[x1][y1][x2][y2]=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];40 sv[x1][y1][x2][y2]*=sv[x1][y1][x2][y2];41 }42 }43 44 int dfs(int x1,int y1,int x2,int y2,int cur)45 {46 if(cur==1)return sv[x1][y1][x2][y2];47 int& d=f[cur][x1][y1][x2][y2];48 if(d!=INF)return d;49 if( x2-x1+y2-y1

 

转载于:https://www.cnblogs.com/zhsl/archive/2013/02/26/2932902.html

你可能感兴趣的文章
HDU 1021 Fibonacci Again
查看>>
【BZOJ 1050】1050: [HAOI2006]旅行comf (动态SPFA)
查看>>
Handler.sendMessage 与 Handler.obtainMessage.sendToTarget比较
查看>>
(翻译)从底层了解ASP.NET体系结构 [转]
查看>>
IM开发通信协议基础知识(一)---TCP、UDP、HTTP、SOCKET
查看>>
UVa 10129 - Play on Words (欧拉回路, DFS)
查看>>
Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决...
查看>>
Android ViewPager使用详解
查看>>
【转】C# 过滤HTML,脚本,数据库关键字,特殊字符
查看>>
iATKOS v7硬盘安装教程(硬盘助手+变色龙安装版)
查看>>
Android连接数据库的问题
查看>>
A Story of One Country (Hard) CodeForces - 1181E2 (分治)
查看>>
Android使用本地广播
查看>>
python 删除大表数据
查看>>
【CC评网】2013.第44周 把握每天的第一个小时
查看>>
高效的使用STL
查看>>
用Perl编写Apache模块续 - SVNAuth
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
tips to understand kexec
查看>>
mybatis入门
查看>>