日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【题解】HAOI2007分割矩阵

發(fā)布時間:2023/11/30 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【题解】HAOI2007分割矩阵 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  水題盛宴啦啦啦……做起來真的極其舒服,比某些毒瘤題好太多了……

  數(shù)據(jù)范圍極小 --> 狀壓 / 搜索 / 高維度dp;觀察要求的均方差,開始考慮是不是能夠換一下式子。我們用\(a_{x}\)來表示第 \(x\) 個矩陣的總值,則式子為:

  \(ans = sqrt \frac{{\left ( \sum_{1}^{n} a_{x} - \bar{x} \right )^2}}{n}\)

  轉(zhuǎn)化一下,化成:

  \(ans = sqrt \frac{{\left ( -n\bar{x}^2 + \sum_{1}^{n}a_{x}^2 \right )}}{n}\)

  然后問題就變成了:使劃分出來的矩陣的平方和最小。直接上記憶化搜索,BINGO~

#include <bits/stdc++.h> using namespace std; #define maxn 11 #define INF 99999999 #define db double int n, m, K, sum[maxn][maxn]; int f[maxn][maxn][maxn][maxn][maxn]; int tot; db aver;int read() {int x = 0;char c;c = getchar();while(c < '0' || c > '9') c = getchar();while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();return x; }int dfs(int a, int b, int c, int d, int K) {int *F = f[a][b][c][d];if(~F[K]) return F[K];else F[K] = INF;if(c * d - (a - 1) * (b - 1) < K) return F[K] = INF;if(K == 1){F[K] = sum[c][d] - sum[a - 1][d] - sum[c][b - 1] + sum[a - 1][b - 1];return F[K] = F[K] * F[K];}for(int i = a; i < c; i ++)for(int j = 1; j < K; j ++){ int x1 = dfs(a, b, i, d, j);int x2 = dfs(i + 1, b, c, d, K - j);F[K] = min(F[K], x1 + x2);} for(int i = b; i < d; i ++)for(int j = 1; j < K; j ++){int x1 = dfs(a, b, c, i, j);int x2 = dfs(a, i + 1, c, d, K - j);F[K] = min(F[K], x1 + x2);}return F[K]; }int main() {n = read(), m = read(), K = read();memset(f, -1, sizeof(f));for(int i = 1; i <= n; i ++)for(int j = 1; j <= m; j ++){int x = read(); tot += x;sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + x;}db aver = (db) tot / K;dfs(1, 1, n, m, K);printf("%.2f\n", sqrt(((db) f[1][1][n][m][K] - aver * aver * (db) (K)) / (db) K));return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/twilight-sx/p/9027775.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的【题解】HAOI2007分割矩阵的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。