LeeBlog

导航

HDU 2083 复习时间

这题要自己推算一下,开始还准备用贪心的,结果弄了很久弄不出,最后看大神的报告原来是由数学推出来的

m > n;

f1 = ( 100 - m )*( 100 - m ) + (m - n)(m-n);

f2 = ( 100 - n )*( 100 - n );

用二式减去一式分析可得f2总是大于f1,所以只要直接找到一个最小的n就可以了

#include<stdio.h>
int n,m,min;
int main( )
{
    int t;
    scanf( "%d",&t );
    while( t-- )
    {
           scanf( "%d%d",&n,&m );
           min = 0x7fffffff;
           int c;
           for( int i = 0; i < n; ++i )
           {
                scanf( "%d",&c );
                if( c < min )
                    min = c;
           }
           printf( "%d\n",(100-min)*(100-min) );
           }
    return 0;
}

posted on 2011-05-03 09:25  LeeBlog  阅读(258)  评论(0编辑  收藏  举报