題解 NOI1999 生日蛋糕 洛谷

2022-09-13 04:12:10 字數 1345 閱讀 6947

我實在是太弱了,搜尋這種辣雞演算法都不會(逃

這題真的是想了好久,每次都會t三個點,我以為我的剪枝已經堆了夠多了,結果後來才知道是乙個關鍵剪枝沒想到otz

#include using namespace std;

#define rint register int

int n, m, ans = 99999999;

int ini1[20], ini2[20];

inline void init( void )

return ;

}inline void dfs( int nowv, int nows, int r, int h, int t )

if( nowv + ini2[t - 1] >= ans ) return ;

//cout << 1;

if( nows + ini1[t - 1] >= n ) return;

//cout << 1;

if( 2 * ( n - nows ) / r + nowv >= ans ) return ;

for( rint i = r - 1; i >= t; i-- )

} return ;

}int main( void )

cout << ans;

return 0;

}

看這輸出的1就知道我錯了多少次,結果發現把乙個t打成了 \(t - 1\) qwq

if( 2 * ( n - nows ) / r + nowv >= ans ) return ;
這裡詳細推一下

1 到$ dep - 1$的體積為

\(n - v = \sum_^h[k] * r[k] ^ 2\)

表面積為

$2\sum_^h[k] *r[k] $

又臭又長警告

\(\because2\sum_^h[k] *r[k] = \frac * \sum_^h[k]*r[k]*r[dep]\geqslant \frac *\sum_^h[k]*r[k]^2\geqslant \frac\)

\(\therefore\)當$ \frac + s \geqslant ans$時說明已經不是最優,即可return

這是對前\(dep - 1\)層側面積的估計,很多人忽略了這一維度,其實,這一維度已經在我們預處理\(ini\)

(別激動,\(init\)刪去\(t\)而已23333)時已經有所涉及,只是我們沒有太在意而已

這告訴我們在設計剪枝條件的時候一定要全方面考慮

,每個維度都有所思考,盡可能到達上下界

return 0;//功德圓滿

NOI1999 生日蛋糕題解

還是被這個立體的結構嚇到了,隔了半年才 題目描述 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層 生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當ir i r ri ri 1 且h i h hi hi 1 由於要在蛋糕上抹...

noi 1999 生日蛋糕

題目描述 4月16日是nanae的生日,josnch為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 最下一層的下...

NOI1999 生日蛋糕

noi1999 生日蛋糕 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i時,要求ri ri 1且hi hi 1。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 ...