Pastel de cumpleaños POJ-1190
Descripción:
El 17 de julio es el cumpleaños del Sr. W. Para ello, ACM-THU tiene que hacer un pastel de cumpleaños de capas M con un volumen de Nπ, cada capa es un cilindro.
Suponga que la i-ésima capa de torta de abajo hacia arriba (1 <= i <= M) es un cilindro con radio Ri y altura Hi. Cuando i <M, se requiere que Ri> Ri + 1 y Hi> Hi + 1.
Debido a la necesidad de poner crema en el bizcocho, con el fin de ahorrar lo máximo posible, esperamos que el área Q de la superficie exterior del bizcocho (excepto la superficie inferior de la capa inferior) sea la más pequeña.
Deje Q = Sπ
, por favor programe para averiguar el plan de fabricación de pasteles (valores apropiados de Ri y Hi) para los N y M dados, de modo que S sea el más pequeño.
(Excepto Q, todos los datos anteriores son números enteros positivos) La
entrada
tiene dos líneas, la primera línea es N (N <= 10000), lo que significa que el volumen de la torta a hacer es Nπ; la segunda línea es M (M < = 20), indica que el número de capas de la torta es M.
La salida
es solo una línea y es un entero positivo S (si no hay solución, entonces S = 0).
Entrada de muestra
100
2
Salida de muestra
68
Sugerencia
fórmula cilíndrica
Volumen V = πR2H
área lateral A '= 2πRH
área inferior A = πR2 Análisis de la pregunta del
patrocinador
: La búsqueda directa es obviamente poco realista, necesitamos podar, entonces podemos pensar en los siguientes aspectos:
1:当前面积比最小面积大,可以剪枝
2:当前面积加上剩下最小面积大于最小面积,可以剪枝
3:若剩余的体积比做最大的蛋糕的体积还要大,那也可以剪枝了,
el código se muestra a continuación:
#include <stdio.h>
void DFS(int e,int V,int C,int R,int H);
int n,m,k=0;
int main()
{
scanf("%d%d",&n,&m);
DFS(m,n,0,100,1000);
printf("%d",k);
return 0;
}
void DFS( int e, int V, int C, int R, int H)
{
int r,h,v,c;
if(V<0)
{
return;
}
if(!e)
{
if(!V&& (C<k||!k))
{
k=C;
}
return;
}
if(k&&C>k)
{
return;
}
if(e*(R-1)*(R-1)*(H-1)<V &&e!=m)
{
return;
}
for(r=R-1;r>=e;r--)
{
for(h=H-1;h>=e;h--)
{
c=2*r*h;
v=r*r*h;
if((C+((2*V)/r))>k&&k)
{
continue;
}
if(e==m)
{
c+=r*r;
}
DFS(e-1,V-v,C+c,r,h);
}
}
}