log的用法(可以说是淋漓尽致了)

题目链接:点击打开链接

该题目做的到后来的时候就是没有注意数据范围,以至于这道题是做废了,还是自己心里面有点心急,现在正在看2016年world final在泰国举办,感觉那种感觉就是不一样,反正感觉他们就是很细心,读题能力和做题能力都很强,虽然没有身临其境,但也有深刻体会,当然也见到了各种神级的解说员,都是历年来在比赛中的神级人物,时间一分分过去了,这个时候的时间感觉也是无比的珍贵,正如杭电选手csy(claris),据说一年级刷够两千题,而且都不是水题,顿时感觉自己好low,不是好low,简直是没有入门,现在已经有人能够全部ac了,这个水平,我也是无力来回复了,还是弱,,,,,后年是world  final 已经移位到北大,这个让我很是激动,我感觉我也是预言家了,我很是喜欢北大!!!这个是我的观战感想,也是心灵的震撼,,,,也是orz了,下面言归正传,看这道题目,

#include 
#include
#include
double num[1001][21];
int a[1001]; //记录每列的负数个数
double s[1001];  //每列的和
int main(int argc, char *argv[])
{
    int n,m,i,j;
long long  d;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        memset(a,0,sizeof(a));
        memset(s,0,sizeof(s));
        for(i=0; i-1)
                        a[j]++;
//                        判断负数的个数
                    num[i][j]=log(-1.0*d);
                }
                else if(d==0)
                {
                    a[j]=-1;  //该列存在0,则该列等于0
                }
                else
                    num[i][j]=log(1.0*d);
//                    正数直接忽略
            }

        double s1=-1.0e12,s3=1.0e12;
//        这个值是什么作用,现在还不知道 ,先往下看看  
        int k1=-1,k2=-1,k3=-1;
//        这里又有一个数值,可是并不知道是什么作用,先往下看看
        for(i=m-1; i>=0; i--) //从右开始
        {
            if(a[i]==-1&&k2==-1)
            {
                k2=i;    //该列存在0,则该列等于0
                continue;
            }

            if(a[i]==-1&&k2>-1)  //防止重复赋值
                continue;

            for(j=0; js1)   //寻找正数里最大的
            {
                s1=s[i];
                k1=i;
            }
        }
        if(k1!=-1)           //如果存在正数
            printf("%d\n",k1+1);
        else if(k2!=-1)     //如果存在0
            printf("%d\n",k2+1);
        else                 //只有负数
            printf("%d\n",k3+1);
    }
    return 0;
}
利用log的性质,来实现数据的加减
写出这个代码感觉也是思路比较厉害的,但是这样减小数据之后,感直接排序也会过的,我去问下问题,那个乘以1.0就是转化一下浮点数,原来我还是不知道呢,

你可能感兴趣的:(log的用法(可以说是淋漓尽致了))