我實在是太弱了,搜尋這種辣雞演算法都不會(逃
這題真的是想了好久,每次都會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。由於要在蛋糕上抹忌廉,為盡可能節約經費,我們希望蛋糕外表面 ...