poj 1191 DP
2014-03-02 19:43
253 查看
黑书上讲的很清楚。。。。
AC代码如下:
AC代码如下:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> using namespace std; #define MAX 0x3f3f3f3f int dp[17][17][17][17][17]; int num[17][17], sum[17][17]; int N; int DFS( int steps, int x1, int y1, int x2, int y2 ){ int temp = sum[x2][y2] - sum[x2][y1-1] - ( sum[x1-1][y2] - sum[x1-1][y1-1] ); if( steps == 1 ){ return temp * temp; } if( dp[steps][x1][y1][x2][y2] != -1 ){ return dp[steps][x1][y1][x2][y2]; } int ans = MAX; for( int i = x1; i < x2; i++ ){ int temp1 = sum[i][y2] - sum[i][y1-1] - ( sum[x1-1][y2] - sum[x1-1][y1-1] ); int temp2 = temp - temp1; ans = min( ans, temp1 * temp1 + DFS( steps - 1, i + 1, y1, x2, y2 ) ); ans = min( ans, temp2 * temp2 + DFS( steps - 1, x1, y1, i, y2 ) ); } for( int i = y1; i < y2; i++ ){ int temp1 = sum[x2][i] - sum[x2][y1-1] - ( sum[x1-1][i] - sum[x1-1][y1-1] ); int temp2 = temp - temp1; ans = min( ans, temp1 * temp1 + DFS( steps - 1, x1, i + 1, x2, y2 ) ); ans = min( ans, temp2 * temp2 + DFS( steps - 1, x1, y1, x2, i ) ); } return dp[steps][x1][y1][x2][y2] = ans; } int main(){ while( scanf( "%d", &N ) != EOF ){ memset( dp, -1, sizeof( dp ) ); memset( num, 0, sizeof( num ) ); memset( sum, 0, sizeof( sum ) ); for( int i = 1; i <= 8; i++ ){ int temp = 0; for( int j = 1; j <= 8; j++ ){ scanf( "%d", &num[i][j] ); temp += num[i][j]; sum[i][j] = sum[i-1][j] + temp; } } double temp1 = DFS( N, 1, 1, 8, 8 ); double temp2 = (double)sum[8][8] / (double)N; double ans = temp1 / N - temp2 * temp2; printf( "%.3lf\n", sqrt( ans ) ); } return 0; }
相关文章推荐
- Spring Security3配置使用
- Collapsible Tree Layout
- 二级缓存在项目中的集成和使用
- Mac pro 休眠后没声音
- Android 4.0 Launcher2源码分析——Workspace切换AllApps流程
- 在iOS上加载显示pdf文件
- 以用户为中心的Web网站设计流程
- 面试中经常问到的七种排序方法
- 华为OJ 对象管理器
- 抽象类是否有构造方法
- spring-security3.1 + spring mvc + Hibernate 控制系统权限
- 封装代码和UI利器—Fragment(二)
- grep 或egrep的用法
- Tomcat源码分析之Server与Lifecycle的设计与实现
- hdu 1542 Atlantis (线段树+离散化+扫描线)
- Android 4.0 Launcher2源码分析——Launcher内容加载详细过程
- Binary Tree Zigzag Level Order Traversal 疑惑ing
- Android发送SOAP数据给服务器调用webservice,实现手机号归属地查询
- 前序、中序、后序表达式
- Socket的重要性