poj-1191-棋盘分割

来源:互联网 发布:淘宝好听的用户名大全 编辑:程序博客网 时间:2024/05/29 09:25

题目地址

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 80using 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[n][x1][y1][x2][y2] != -1) {        return res[n][x1][y1][x2][y2];    }    if (n == 1) {        int ans = get_sum(x1, y1, x2, y2);        res[n][x1][y1][x2][y2] = ans*ans;        return res[n][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[n][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

原创粉丝点击