矩形分割(洛谷 P1324)

2021-09-27 09:41:10 字數 1203 閱讀 7435

題目描述

出於某些方面的需求,我們要把一塊n×m的木板切成乙個個1×1的小方塊。

對於一塊木板,我們只能從某條橫線或者某條豎線(要在方格線上),而且這木板是不均勻的,從不同的線切割下去要花不同的代價。而且,對於一塊木板,切割一次以後就被分割成兩塊,而且不能把這兩塊木板拼在一起然後一刀切成四塊,只能兩塊分別再進行一次切割。

現在,給出從不同的線切割所要花的代價,求把整塊木板分割成1×1塊小方塊所需要耗費的最小代價。

輸入格式

輸入檔案第一行包括n和m,表示長n寬m的矩陣。

第二行包括n-1個非負整數,分別表示沿著n-1條橫線切割的代價。

第三行包括m-1個非負整數,分別表示沿著m-1條豎線切割的代價。

輸出格式

輸出乙個整數,表示最小代價。

輸入 #1

2 233

輸出 #1

這道題思維+貪心;首先我們要知道每次切割用的費用不同,這也意味著我們要先切費用大的那個點。知道了這個,我們還要知道切了一刀後,如果豎著切,那麼橫著切的點要再切一次,因為分成了兩個矩形;橫著切同理;乙個點只能切一次

**:

#include

using

namespace std;

struct nodedian[

40000];

bool

cmp(node p,node q)

int a[

40000];

intmain()

for(

int i=

1;i<=m-

1;i++

)sort

(dian+

1,dian+

1+ans,cmp)

;for

(int i=

1;i<=ans;i++

) a[i]=1

;//初始每個點只能切一次

long

long sum=0;

for(

int i=

1;i<=ans;i++)}

else}}

cout

}

洛谷 P1324 矩形分割 貪心

題目描述 出於某些方面的需求,我們要把一塊n m的木板切成乙個個1 1的小方塊。對於一塊木板,我們只能從某條橫線或者某條豎線 要在方格線上 而且這木板是不均勻的,從不同的線切割下去要花不同的代價。而且,對於一塊木板,切割一次以後就被分割成兩塊,而且不能把這兩塊木板拼在一起然後一刀切成四塊,只能兩塊分...

洛谷P1191 矩形

給出乙個n n的矩陣,矩陣中,有些格仔被染成白色,有些格仔被染成黑色,現要求矩陣中白色矩形的數量 輸入格式 第一行,乙個整數n,表示矩形的大小。接下來n行,每行n個字元,這些字元為 w 或 b 其中 w 表示白格,b 表示黑格。輸出格式 乙個正整數,為白色矩形數量 輸入樣例 1 4 wwbw bbw...

洛谷P1191 矩形

給出乙個n nn times nn n的矩陣,矩陣中,有些格仔被染成白色,有些格仔被染成黑色,現要求矩陣中白色矩形的數量 輸入格式 第一行,乙個整數nnn,表示矩形的大小。接下來nnn行,每行nnn個字元,這些字元為 www 或 bbb 其中 www 表示白格,bbb 表示黑格。輸出格式 乙個正整數...