CF競賽題目講解_CF598E(動(dòng)態(tài)規(guī)劃DP)
2022-08-17 15:26 作者:Clayton_Zhou | 我要投稿
https://codeforces.com/problemset/problem/598/E
題意:
有一塊長方形的巧克力,可以分成n*m小塊。如果吃k小塊巧克力,因此需要掰開這塊巧克力。
在每一次操作中可以把任意一塊矩形形狀的巧克力掰成兩塊矩形形狀的巧克力。
只能沿著巧克力小塊之間的分割線掰開巧克力——可以沿著水平方向或是豎直方向掰開。
掰開巧克力的花費(fèi)等于分割線長度的平方。
例如,如果有一塊2*3的巧克力,那么可以沿著水平方向掰從而得到兩塊1*3的巧克力,這次操作的花費(fèi)為3^2=9。
或者也可以沿著豎直方向掰從而得到一塊2*1的巧克力和一塊2*2的巧克力,這次操作的花費(fèi)為2^2=4。
對于每一個(gè)給出的n,m和k,計(jì)算出最小花費(fèi)。你可以用多塊巧克力湊出k小塊巧克力。
剩余的巧克力可以不是完整的一塊。
輸入格式:
輸入數(shù)據(jù)的第一行包括1個(gè)整數(shù)t(1<=t<=40910),表示數(shù)據(jù)組數(shù)。
接下來的t行每一行都包含3個(gè)整數(shù)n,m和k(1<=n,m<=30,1<=k<=min(n*m,50)),其意義見上文。
?題解:
狀態(tài)值f[i][j][k]表示i*j的巧克力得到k個(gè)小巧克力的最小花費(fèi)
標(biāo)簽: