題目描述
出於某些方面的需求,我們要把一塊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 表示黑格。輸出格式 乙個正整數...