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
阅读全文
0 0
- POJ 1191棋盘分割
- poj 1191 棋盘分割
- Poj 1191 棋盘分割
- poj 1191 棋盘分割
- POJ 1191 棋盘分割
- poj 1191棋盘分割
- poj 1191 棋盘分割
- POJ-1191-棋盘分割
- POJ 1191 棋盘分割
- poj 1191 棋盘分割
- poj 1191 棋盘分割
- POJ 1191 棋盘分割
- POJ 1191 棋盘分割
- POJ 1191 棋盘分割
- POJ 1191 棋盘分割
- POJ 1191--棋盘分割
- POJ 1191 棋盘分割
- poj 1191 棋盘分割
- Android开发使用https及Webview访问https页面
- ztree自定义单选框
- Android进阶#(7/12)装点程序“门面”——代码规范_命名+编码建议
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- HDU
- poj-1191-棋盘分割
- css基本操作
- Head First设计模式学习笔记
- 第四篇:深入浅出UML类图(一)
- vba中的自动筛选(atuo filter) 实现(realize)
- 301和302跳转的区别
- spark学习笔记:考察集群的文件读取机制
- 【23种设计模式】创建型模式 > 单例模式
- Java-继承、重载、重写、多态