poj1191 棋盘分割。 dp
连接:http://poj.org/problem?id=1191
思路:额,其实就是直接搞记录一下就可以了。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#define loop(s,i,n) for(i = s;i < n;i++)
#define cl(a,b) memset(a,b,sizeof(a))
int map[][];
int sum[][][][];
int dp[][][][][];
double average;
int n;
using namespace std;
void init()
{
int i,j,ii,jj,iii,jjj;
loop(,i,)
{
loop(,j,)
{
loop(i,ii,)
{
loop(j,jj,)
{
int ans;
ans = ;
loop(i,iii,ii+)
loop(j,jjj,jj+)
ans+=map[iii][jjj];
ans = (ans)*(ans);
sum[i][j][ii][jj] += ans;
} }
}
}
}
int deal(int k,int x,int y,int xx,int yy)
{ if(dp[k][x][y][xx][yy] >= ) return dp[k][x][y][xx][yy];
if(k == n)
return sum[x][y][xx][yy]; int i,j,ans;
dp[k][x][y][xx][yy] = ;
for(i = x;i <= xx-;i++)
{
ans = min(deal(k+,x,y,i,yy)+sum[i+][y][xx][yy],deal(k+,i+,y,xx,yy)+sum[x][y][i][yy]);
dp[k][x][y][xx][yy] = min(ans,dp[k][x][y][xx][yy]);
} for(j = y;j <= yy-;j++)
{
ans = min(deal(k+,x,y,xx,j)+sum[x][j+][xx][yy],deal(k+,x,j+,xx,yy)+sum[x][y][xx][j]);
dp[k][x][y][xx][yy] = min(ans,dp[k][x][y][xx][yy]);
} return dp[k][x][y][xx][yy];
}
int main()
{
//int n;
//
// freopen("in.txt","r",stdin);
while(~scanf("%d",&n))
{
int i,j;
average = ;
loop(,i,)
{
loop(,j,)
scanf("%d",map[i]+j),average += map[i][j];
} average = 1.0*average/n;
cl(sum,);
cl(dp,-);
init();
deal(,,,,);
// puts("yes"); double ans = sqrt(dp[][][][][]*1.0/n-average*average);
printf("%.3f",ans);
}
return ;
}
poj1191 棋盘分割。 dp的更多相关文章
- poj1191 棋盘分割【区间DP】【记忆化搜索】
棋盘分割 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 16263 Accepted: 5812 Description ...
- poj1191棋盘分割——区间DP
题目:http://poj.org/problem?id=1191 分析题意,可知每次要沿棋盘中的一条线把一块一分为二,取其中一块继续分割: σ最小经分析可知即为每块的xi和的平方最小: 故用区间DP ...
- POJ1191 棋盘分割(DP)
化简一下那个方差得到:$$\sqrt\frac{(\Sigma_{i=1}^nx_i)-n\bar x^2}{n}$$ 除了$\Sigma_{i=1}^nx_i$这部分未知,其余已知,而那部分显然越大 ...
- P1436 棋盘分割[dp]
题目描述 将一个8*8的棋盘进行如下分割:将原棋盘割下一块矩形棋盘并使剩下部分也是矩形,再将剩下的两部分中的任意一块继续如此分割,这样割了(n-1)次后,连同最后剩下的矩形棋盘共有n块矩形棋盘.(每次 ...
- POJ 1191 棋盘分割(DP)
题目链接 大体思路看,黑书...其他就是注意搞一个in数组,这样记忆化搜索,貌似比较快. #include <cstdio> #include <cstring> #inclu ...
- POJ1191棋盘分割
题目:http://poj.org/problem?id=1191 1.分析式子!!! 发现xba是定值,σ的大小仅和∑ xi^2 有关.故dp条件是平方和最小. 2.分出一块就像割掉一条,只需枚举从 ...
- NOI1999 JZYZOJ1289 棋盘分割 dp 方差的数学结论
http://172.20.6.3/Problem_Show.asp?id=1289 除了下标一坨一坨屎一样挺恶心其他都还挺容易的dp,这道题才发现scanf保留小数位是四舍五入的,惊了. f[k][ ...
- poj 1191 棋盘分割(dp + 记忆化搜索)
题目:http://poj.org/problem?id=1191 黑书116页的例题 将方差公式化简之后就是 每一块和的平方 相加/n , 减去平均值的平方. 可以看出来 方差只与 每一块的和的平方 ...
- POJ1191 棋盘分割
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: Accepted: 题目链接: http://poj.org/problem?id ...
随机推荐
- webView返回不刷新
[[NSUserDefaults standardUserDefaults] setInteger:2 forKey: @"WebKitCacheModelPreferenceKey&quo ...
- Python网络爬虫学习总结
1.检查robots.txt 让爬虫了解爬取该网站时存在哪些限制. 最小化爬虫被封禁的可能,而且还能发现和网站结构相关的线索. 2.检查网站地图(robots.txt文件中发现的Sitemap文件) ...
- 【转】sql server 订阅发布、快照发布(一)
原文链接:https://blog.csdn.net/tiandi_5000/article/details/11646023 SQL SERVER 2012 使用订阅发布同步数据库(一) 2013年 ...
- js-template-art【三】js api
一.js api使用 1.template(filename, data) 根据模板名渲染模板. var html = template('tplScriptId', { value: 'aui' } ...
- file /etc/httpd/conf.d/php.conf from install of php-5.6.37-1.el7.remi.x86_64 conflicts with file from package mod_php71w-7.1.18-1.w7.x86_64
yum remove mod_php71w php71w-cli
- 2.4 The Object Model -- Computed Properties and Aggregate Data with @each(计算的属性和使用@each聚合数据)
1. 通常,你可能有一个计算的属性依赖于数组中的所有元素来确定它的值.例如,你可能想要计算controller中所有todo items的数量,以此来确定完成了多少任务. export default ...
- 3.8 Templates -- Actions
一.The {{action}} Helper 你的应用程序通常会需要一种方法来让用户用控件交互改变应用程序状态. 例如,你有一个显示blog post的模板,并支持用额外的信息扩展post. 可以使 ...
- TabControl delphi
1.TTabControl 组件的典型用法TTabControl 组件使用起来,根本不会使程序简单化,所以不提倡使用此组件,可以用TPageControl组件代替.与多页组件不同的是,虽然Tab 组件 ...
- idea使用插件activate-power-mode给编码加上特效和带来乐趣。
一.安装. 1. 2. 二.使用. 1. 2.
- CCPC-Wannafly Winter Camp Day1 (Div2, onsite)
Replay Dup4: 要是不挂机,再多仔细想想就好了 J确实自闭好久,一直在想正确性,最后数据错了,喵喵喵? 还是要保证充足的休息啊,中间睡了一小会儿,也不知道睡了多久,醒来他们就又过了一道 要发 ...