NOIP模擬 切割木板

2022-05-12 04:34:32 字數 977 閱讀 2737

小 z 是個特別墮落的小朋友,上數學課的時候經常有奇奇怪怪的想法。小 z 的的包裡有塊 n*m 的長方形木板,小 z 想把木板全部切成 1*1 的小正方形(用來玩拼圖)。但木板本身並不均勻,因此從不同的線切割下去要花不同的代價。而且對於一塊木板,切割一次以後就被分割成兩塊,而且由於不能把這兩塊木板拼在一起然後一刀切成四塊(動靜太大),所以只能兩塊分別再進行一次切割。現在小 z 並不想花太多的力氣,所以他來找你幫他求一求最小的代價。小 z 是個特別墮落的小朋友,上數學課的時候經常有奇奇怪怪的想法。小 z 的的包裡有塊 n*m 的長方形木板,小 z 想把木板全部切成 1*1 的小正方形(用來玩拼圖)。但木板本身並不均勻,因此從不同的線切割下去要花不同的代價。而且對於一塊木板,切割一次以後就被分割成兩塊,而且由於不能把這兩塊木板拼在一起然後一刀切成四塊(動靜太大),所以只能兩塊分別再進行一次切割。現在小 z 並不想花太多的力氣,所以他來找你幫他求一求最小的代價。

由排序不等式

順序和》亂序和》逆序和

我們可知,一定要把花費較大的切法放在前面切,因為切的次數是不下降的,而花費較大的放在前面切和不下降的刀數的乘積之和就是逆序和,是最優的。

#includeusing

namespace

std;

#define n 100100

#define ll long longll n,m,cx=1,cy=1

,cnt,ans;

struct

email

a[n*4

];template

inline

void read(t &x)

while(ch>='

0'&&ch<='9')

x*=f;

}bool cmp(email a,email b)

intmain()

printf(

"%lld\n

",ans);

return

0;

}

NOIP模擬 切木板

題目 有乙個 m n 的矩形木板。你需要把這個木板切成 1 1 的小方塊,也就是豎著切 n 1 刀 橫著切 m 1 刀。橫著切第 i 個位置的權值為 xi 豎著切第 j 個位置的權值為 yj 切某一刀時的費用為切這一刀的權值乘上切過的塊數。請你安排切的順序使得所有費用之和最小。輸入格式 第一行兩個數...

NOIP模擬 切木板(貪心)

有乙個 m n 的矩形木板。你需要把這個木板切成 1 1 的小方塊,也就是豎著切 n 1 刀 橫著切 m 1 刀。橫著切第 i 個位置的權值為 xi 豎著切第 j 個位置的權值為 yj 切某一刀時的費用為切這一刀的權值乘上切過的塊數。請你安排切的順序使得所有費用之和最小。第一行兩個數 m,n 接下來...

NOIP模擬 切木板(貪心)

有乙個 m n 的矩形木板。你需要把這個木板切成 1 1 的小方塊,也就是豎著切 n 1 刀 橫著切 m 1 刀。橫著切第 i 個位置的權值為 xi 豎著切第 j 個位置的權值為 yj 切某一刀時的費用為切這一刀的權值乘上切過的塊數。請你安排切的順序使得所有費用之和最小。第一行兩個數 m,n 接下來...