poj-1191-棋盘分割
2017-08-23 10:15
330 查看
题目地址
http://poj.org/problem?id=1191题目大意
解题思路
Code
#include <stdio.h> #include <iostream> #include <stdlib.h> #include <string.h> #include <queue> #include <map> #include <vector> #include <math.h> #include <algorithm> #define INF 0x3fffffff #define N 80 using namespace std; typedef long long LL; int n; int s[9][9]; //每个格子的分数 int sum[9][9]; //(1,1)到(i,j)的矩形的分数之和 int res[15][9][9][9][9]; //fun的记录表 //(x1,y1)到(x2,y2)的矩形的分数之和 int get_sum(int x1, int y1, int x2, int y2) { return sum[x2][y2] - sum[x2][y1-1] - sum[x1-1][y2] + sum[x1-1][y1-1]; } int fun(int n, int x1, int y1, int x2, int y2) { if (res [x1][y1][x2][y2] != -1) { return res [x1][y1][x2][y2]; } if (n == 1) { int ans = get_sum(x1, y1, x2, y2); res [x1][y1][x2][y2] = ans*ans; return res [x1][y1][x2][y2]; } int MIN = INF; for (int x = x1; x < x2; x++) { int up = get_sum(x1, y1, x, y2); int down = get_sum(x+1, y1, x2, y2); int local = min(fun(n-1, x1, y1, x, y2) + down*down, fun(n-1, x+1, y1, x2, y2) + up*up); MIN = min(MIN, local); } for (int y = y1; y < y2; y++) { int left = get_sum(x1, y1, x2, y); int right = get_sum(x1, y+1, x2, y2); int local = min(fun(n-1, x1, y1, x2, y) + right*right, fun(n-1, x1, y+1, x2, y2) + left*left); MIN = min(MIN, local); } res [x1][y1][x2][y2] = MIN; return MIN; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #else // #endif scanf("%d", &n); memset(sum, 0, sizeof(sum)); memset(res, -1, sizeof(res)); for (int i = 1; i < 9; i++) { int row_sum = 0; for (int j = 1; j < 9; j++) { scanf("%d", &s[i][j]); row_sum += s[i][j]; sum[i][j] = sum[i-1][j] + row_sum; } } double ans = fun(n, 1, 1, 8, 8) - 1.0 * (sum[8][8]*sum[8][8]) / n; ans = sqrt(ans/n); printf("%.3f\n", ans); return 0; }
参考
https://d396qusza40orc.cloudfront.net/pkupop/lectures/Week12/W12-03_%E9%80%92%E5%BD%92-%E6%A3%8B%E7%9B%98%E5%88%86%E5%89%B2.pdf相关文章推荐
- (中等) POJ 1191 棋盘分割,DP。
- POJ 1191 棋盘分割
- POJ-1191-棋盘分割
- [POJ] 1191 [LUOGU] P1436 棋盘分割
- OpenJudge/Poj 1191 棋盘分割
- poj 1191 棋盘分割(dp,黑书dp例二)
- POJ 1191 DP+DFS棋盘分割问题
- POJ-1191 棋盘分割
- poj 1191 棋盘分割 (DFS+DP思想)
- POJ 1191 棋盘分割
- poj 1191 棋盘分割 动态规划
- 【递归 & 动态规划】POJ 1191 棋盘分割
- POJ 1191 棋盘分割
- poj 1191 棋盘分割 dp-进阶
- poj1191 棋盘分割
- poj 1191 棋盘分割(dp)
- POJ 1191 && HDU 2517 棋盘分割(dp)
- POJ-1191 棋盘分割 动态规划
- poj 1191棋盘分割(递归dp, 记忆化搜索)
- (POJ 1191)棋盘分割 <DFS>