P2217 HAOI2007 分割矩陣

2022-05-19 08:22:36 字數 1124 閱讀 6686

傳送門

首先均方差公式: $\sigma = \sqrt^\frac)^2}}$

其中 $\bar$ 為小矩陣的平均值,顯然 $\bar=\frac^sum[i]}$

所以就是要最小化 $(sum[i]-\bar)^2$

看到資料這麼小,搜就完事了

直接 $dfs(xa,ya,xb,yb,k)$ 表示以 $(xa,ya)$ 為左下角,$(xb,yb)$ 為右上角的子矩陣內,切 $k$ 次後的 $(sum[i]-\bar)^2$ 最小值

然後發現重複的狀態很多,所以記憶化一下,穩了

#include#include

#include

#include

#include

using

namespace

std;

typedef

long

long

ll;typedef

double

db;inline

intread()

while(ch>='

0'&&ch<='

9')

return x*f;

}const

int n=11,inf=1e9;

intn,m,k,sum[n][n];

db f[n][n][n][n][n],p;

bool

vis[n][n][n][n][n];

inline db calc(

int xa,int ya,int xb,int yb)

db dfs(

int xa,int ya,int xb,int yb,int

k)

for(int i=0;i)

for(int j=xa;j)

t=min(t, dfs(xa,ya,j,yb,i)+dfs(j+1,ya,xb,yb,k-i-1

) );

for(int i=0;i)

for(int j=ya;j)

t=min(t, dfs(xa,ya,xb,j,i)+dfs(xa,j+1,xb,yb,k-i-1

) );

returnt;}

intmain()

P2215 HAOI2007 上公升序列 DP

這個字典序海星 先求出每個點往後的的最長上公升子串行。然後對於每個詢問,若詢問的長度 len 最長的上公升子串行的長度,直接 impossible 否則,我們從第乙個點開始找長度 len 的點,找到後 len 接著向後找 直到 len 0 include include define ull uns...

洛谷 P1463 HAOI2007 反素數ant

對於任何正整數x,其約數的個數記作g x 例如g 1 1 g 6 4。如果某個正整數x滿足 g x g i 0現在給定乙個數n,你能求出不超過n的最大的反質數麼?輸入格式 乙個數n 1 n 2,000,000,000 輸出格式 不超過n的最大的反質數。輸入樣例 1 1000 輸出樣例 1 840意思...

bzoj1048 HAOI2007 分割矩陣

將乙個a b 的數字矩陣進行如下分割 將原矩陣沿某一條直線分割成兩個矩陣,再將生成的兩個矩陣繼續如此分割 當然也可以只分割其中的乙個 這樣分割了 n 1 次後,原矩陣被分割成了 n 個矩陣。每次分割都只能沿著數字間的縫隙進行 原矩陣中每一位置上有乙個分值,乙個矩陣的總分為其所含各位置上分值之和。現在...