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