HDU 3573 Buy Sticks 贪心
这题要小小的用到一点贪心的思想,哪里呢???????
就是使每一根棍子在组合起来后剩余的最短,这样总的剩余也就最短,这样找出来的解便是最小解咯!
小小算一下,便可知,剩余最小的分别是30 20 20 ,28 20 20 ,20 20 20,剩下来的都是两两搭配的,其实细想不用考虑哪两个搭配后剩余最小,因为就算再小也不能使三个组合起来了,最后剩下的就只能多用一条了
#include<stdio.h>
int min( int a,int b )
{
return a < b ? a : b;
}
int main( )
{
int x,y,z,t,sum,n;
scanf( "%d",&n );
for( int i = 1; i <= n; ++i )
{
sum = 0;
scanf( "%d%d%d",&x,&y,&z );
t = min( x / 2,z );//30 20 20
x -= 2 * t,z -= t,sum += t;
t = min( x / 2,y );//28 20 20
x -= 2 * t,y -= t, sum += t;
t = x / 3, x %= 3,sum += t;//20 20 20
sum += ( x + y + z + 1 ) / 2;//
printf( "Case %d: %d\n",i,sum );
}
return 0;
}
本人还是新手 ,转载请注明来自Lvsi‘s home
浙公网安备 33010602011771号