ACM集训日记-8月11日

    二分的一天~,今天的二分有些不一样,做的多数是求最大中的最小,或最小中的最大,今天的第一道题点击打开链接,比较常规,有一点注意的是要用到倒数的知识,因为原函数的单调性是看不出来的,而要求这个函数的最小值,可以利用倒数,一次求导后就变成在区间上单调的函数了,二分即可,还需要注意的地方就是,在这种数据类型为double的时候,在做乘法和除法的时候常数后面最好加上".0"保持数据类型的统一。今天的第二道题点击打开链接,是求最大距离的最小值,由于输入的数据没有按顺序排列,我们需要先给点数组sort一下,然后判断方法如下

 

int judge(int mid)
{
    int cnt=1;
    int m=l[0];
    for(int i=1;i<n;i++)
    {
        if(l[i]-m>=mid)
        {
            cnt++;
            m=l[i];
        }
        if(cnt>=c)return 1;
    }
    return 0;
}

比较坑的是用cin的时候就是超时,而用scanf直接AC了(非常的尴尬,TLE之后)scanf的快的优势就体现出来了,看来还得用scanf啊。。。
今天第三道题点击打开链接,就是算最大连续值之和的最小值,由于数组里的数值是已经给定好了的,这里的low和high的取值方法就不一样了

 

 

for(int i=0;i<n;i++)
    {
        cin>>money[i];
        if(money[i]>low)low=money[i];
        high+=money[i];
    }

总的来说这个专题,做的比上一个稍微好一点。明天加油!
 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值