子矩陣

?

題目描述

給出如下定義:

  1. 子矩陣:從一個矩陣當中選取某些行和某些列交叉位置所組成的新矩陣(保持行與列的相對順序)被稱為原矩陣的一個子矩陣。

例如,下面左圖中選取第2、4行和第2、4、5列交叉位置的元素得到一個2*3的子矩陣如右圖所示。

9 3 3 3 9

9 4 8 7 4

1 7 4 6 6

6 8 5 6 9

7 4 5 6 1

的其中一個2*3的子矩陣是

4 7 4

8 6 9

  1. 相鄰的元素:矩陣中的某個元素與其上下左右四個元素(如果存在的話)是相鄰的。

  2. 矩陣的分值:矩陣中每一對相鄰元素之差的絕對值之和。

本題任務:給定一個n行m列的正整數矩陣,請你從這個矩陣中選出一個r行c列的子矩陣,使得這個子矩陣的分值最小,并輸出這個分值。

(本題目為2014NOIP普及T4)

輸入輸出格式

輸入格式:

?

第一行包含用空格隔開的四個整數n,m,r,c,意義如問題描述中所述,每兩個整數之間用一個空格隔開。

接下來的n行,每行包含m個用空格隔開的整數,用來表示問題描述中那個n行m列的矩陣。

?

輸出格式:

?

輸出共1行,包含1個整數,表示滿足題目描述的子矩陣的最小分值。

?

輸入輸出樣例

輸入樣例#1:?復制
5 5 2 3
9 3 3 3 9
9 4 8 7 4
1 7 4 6 6
6 8 5 6 9
7 4 5 6 1
輸出樣例#1:?復制
6
輸入樣例#2:?復制
7 7 3 3  
7 7 7 6 2 10 5
5 8 8 2 1 6 2 
2 9 5 5 6 1 7 
7 9 3 6 1 7 8 
1 9 1 4 7 8 8 
10 5 9 1 1 8 10
1 3 1 5 4 8 6
輸出樣例#2:?復制
16

說明

【輸入輸出樣例1說明】

該矩陣中分值最小的2行3列的子矩陣由原矩陣的第4行、第5行與第1列、第3列、第4列交叉位置的元素組成,為

6 5 6

7 5 6

,其分值為

|6?5| + |5?6| + |7?5| + |5?6| + |6?7| + |5?5| + |6?6| =6。

【輸入輸出樣例2說明】

該矩陣中分值最小的3行3列的子矩陣由原矩陣的第4行、第5行、第6行與第2列、第6列、第7列交叉位置的元素組成,選取的分值最小的子矩陣為

9 7 8 9 8 8 5 8 10

【數據說明】

對于50%的數據,1 ≤ n ≤ 12,1 ≤ m ≤ 12,矩陣中的每個元素1 ≤ a[i][j] ≤ 20;

對于100%的數據,1 ≤ n ≤ 16,1 ≤ m ≤ 16,矩陣中的每個元素1 ≤ a[i][j] ≤ 1,000,

1 ≤ r ≤ n,1 ≤ c ≤ m。

?

【題解】

具體思路就是先枚舉行,然后進行DP。

方程可以是這樣:$f(i,j)$表示前i個選j且選了i列的最小分數

那么$f(i,j)=min\{f(i,j),f(k,j-1)|k\in [1,i-1]\}$

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,r,c,xz[20]= {0},a[20][20],w[20],f[20][20],s[20]= {0},ans=0x3f3f3f3f;void judge() {memset(w,0,sizeof(w));memset(f,0x3f,sizeof(f));for(int i=1; i<=m; i++)for(int j=1; j<r; j++)w[i]+=abs(a[xz[j]][i]-a[xz[j+1]][i]);for(int i=1;i<=m;i++)f[i][1]=w[i];for(int i=1; i<=m; i++)for(int j=2; j<=c; j++)for(int k=1; k<i; k++) {int t=0;for(int l=1; l<=r; l++)t+=abs(a[xz[l]][i]-a[xz[l]][k]);f[i][j]=min(f[i][j],f[k][j-1]+w[i]+t);}for(int i=c; i<=m; i++)ans=min(ans,f[i][c]);
}void dfs(int x,int pre) {if(x>r)judge();elsefor(int i=pre+1; i<=n; i++) {xz[x]=i;dfs(x+1,i);}
}int main() {scanf("%d%d%d%d",&n,&m,&r,&c);for(int i=1; i<=n; i++)for(int j=1; j<=m; j++)scanf("%d",&a[i][j]);for(int j=1; j<=m; j++)for(int i=1; i<=n; i++)s[j]+=a[i][j];dfs(1,0);printf("%d\n",ans);return 0;
}

?

轉載于:https://www.cnblogs.com/kcfzyhq/p/8534040.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278330.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278330.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278330.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot入門(一)--快速搭建一個springboot框架

原文出處 前言在開始之前先簡單介紹一下springboot&#xff0c;springboot作為一個微框架&#xff0c;它本身并不提供Spring框架的核心特性以及擴展功能&#xff0c;只是用于快速、敏捷地開發新一代基于Spring框架的應用程序&#xff0c;總的來說springboot不是為了要替代Sprin…

q-dir 打不開文件_Q-Dir –多窗格文件管理器

q-dir 打不開文件Sometimes when looking through a file manager, it would be nice to have more than a dual-pane view. Now you can manage your files with up to four viewing panes at once with Q-Dir. 有時&#xff0c;在查看文件管理器時&#xff0c;擁有多個雙窗格…

用面向對象的方法寫敲門磚

一道名為"敲門磚"的面試題: 用面向對象的方法寫,點擊列表內,子元素的子標簽, 來刪除子元素 敲門磚考點: 遞歸(刪除標簽, 需要找到列表的直屬子標簽, 需要通過遞歸層層往上找, parentNode)冒泡(只需為頂級父元素addEventListener綁定事件, 并通過e.target區分子標簽, …

windows10加載動畫_如何關閉動畫并使Windows 10看起來更快

windows10加載動畫Windows 10 fades and window animations are pure eye candy, but waiting for them to load can make your PC seem a bit slow. If you’d like an instant response, you can disable Windows 10’s animations for a snappier desktop experience. Windo…

JData大數據競賽18年賽題-如期而至-用戶購買時間預測

年前做的&#xff0c;也是學習別人的作品作為記錄 一、賽題 表1&#xff1a;sku基本信息表&#xff08;jdata_sku_basic_info&#xff09; 表2&#xff1a;用戶基本信息表&#xff08;jdata_user_basic_info&#xff09; 表3&#xff1a;用戶行為表&#xff08;jdata_user_acti…

LNMP架構(二)

2019獨角獸企業重金招聘Python工程師標準>>> 一 Nginx安裝 1、切換目錄 # cd /usr/local/src 2、下載 # wget http://nginx.org/download/nginx-1.12.1.tar.gz 3、解壓 # tar xzvf nginx-1.12.1.tar.gz 4、切換到nginx目錄下 # cd nginx-1.12.1/ 5、編譯 # ./confi…

edge無法上網dns_如何在Microsoft Edge中通過HTTPS啟用DNS

edge無法上網dnsMicrosoft will one day enable DNS over HTTPS (DoH) for all Windows applications, but you can enable it in the new version of Microsoft Edge today with a hidden flag. DoH will improve your security and privacy online, but it isn’t yet enable…

UIButton小結

前言 本來沒有打算寫這篇文章的, 主要是因為在工作中遇到一些同事再用 有UIButton的時候, 有些很基本的,系統API提供的都不知道, 例如 如何讓UIButton的文字居上,居左, 居右, 居下對其等一些基本點, 為此我特地寫了一下UIButton小結 UIButton回顧 繼承關系 NSObject -> UIRe…

Channel Allocation HDU1373

染色問題&#xff1a;相鄰不能染同一種顏色 最少需要的顏色的數量最大團點的數量 #include<bits/stdc.h> using namespace std;#define N 27int n; int mp[N][N]; int ans; int alt[N][N]; int Max[N];bool dfs(int cur,int tot)//cur是s1集合的個數 {if(0cur){if(tot>…

satis原理淺析

什么是satis 我們一般是從packagist獲取composer包的&#xff0c;但這些都是公開的。那如果我們想創建自己的私有庫呢&#xff0c;比如企業就會有這方便的需要&#xff0c;那我們就可以用satis來創建自己的私有庫。 Satis 是一個靜態的 composer 資源庫生成器。它像是一個超輕量…

HDU - 5686-Problem B (遞推+高精)

度熊面前有一個全是由1構成的字符串&#xff0c;被稱為全1序列。你可以合并任意相鄰的兩個1&#xff0c;從而形成一個新的序列。對于給定的一個全1序列&#xff0c;請計算根據以上方法&#xff0c;可以構成多少種不同的序列。 Input 這里包括多組測試數據&#xff0c;每組測試數…

c#寫字板實現加粗功能_Windows 7中寫字板和繪畫中的新功能

c#寫字板實現加粗功能WordPad and Paint are often overlooked accessories included in all versions of Windows since 95. They are still included in Windows 7 and now have a new look with some enhanced features. Here we will take a look at some of the new impro…

瀏覽器加載靜態資源文件異常解決辦法

2019獨角獸企業重金招聘Python工程師標準>>> 1 使用chrome瀏覽器加載靜態資源文件(css、js等)異常導致cssh和js文件不生效&#xff0c;具體報錯如下: Resource interpreted as Stylesheet but transferred with MIME type text/html 原因應該是網頁文檔類型不一致導…

POJChallengeRound2 Guideposts 【單位根反演】【快速冪】

題目分析&#xff1a; 這題的目標是求$$ \sum_{i \in [0,n),k \mid i} \binom{n}{i}G^i $$ 這個形式很像單位根反演。 單位根反演一般用于求&#xff1a;$ \sum_{i \in [0,n),k \mid i} \binom{n}{i}f(x)^i $ 推理過程略&#xff0c;實際上也就是交換求和符號的事情。 接著就變…

用Emesene替換Windows Live Messenger

Tired of Windows Live Messenger bloat and wishing that there was a simpler and cleaner replacement that would let you use your live.com and hotmail.com accounts? Look no further, now you can have all that messenger goodness with Emesene! 厭倦了Windows Liv…

python爬蟲筆記(七):實戰(三)股票數據定向爬蟲

目標分析及描述 #CrawBaiduStocksA.py import requests from bs4 import BeautifulSoup import traceback import redef getHTMLText(url):try:r requests.get(url)r.raise_for_status()r.encoding r.apparent_encodingreturn r.textexcept:return ""def getStockL…

myeclipse和maven的clean和build

轉&#xff1a; 詳解myeclipse和maven的clean和build 2018年04月20日 11:33:34 群星墜 閱讀數&#xff1a;3529 版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 https://blog.csdn.net/qq_35603331/article/details/80002723MyEclipse是一個被廣為…

三星Galaxy S20:如何開啟黑暗模式

Justin Duino賈斯汀杜伊諾(Justin Duino)Samsung was one of the first Android manufacturers to add Dark Mode to its handsets. If you recently purchased a Galaxy S20, S20, or S20 Ultra, enabling the UI feature and setting it up on a schedule is extremely easy.…

nginx和apache限制IP地址訪問的設置方法

一、nginx禁止IP地址訪問1、在nginx配置文件中加入這個&#xff1a;2、重啟nginx服務二、apache禁止IP地址訪問1、更改vhosts.conf文件&#xff1a;NameVirtualHost 192.168.1.191 <VirtualHost 192.168.1.191:99>#DocumentRoot "/usr/local/kk-mail/data/www"…

wordweb在線編輯_使用WordWeb享受按需詞典和詞庫功能

wordweb在線編輯Run across an unusual word or need a synonym for a word quickly? Usually that means opening a browser and doing the appropriate search. Now you can have all that word power goodness at your fingertips with WordWeb. 遇到一個不尋常的詞還是需…