(sdau) Summary of the ninth week.(三分法)

一,三分法:

当答案具有二分性时,我们可以用二分法求解,但当需要求某凸性或凹形函数的极值,通过函数本身表达式并不容易求解时,就可以用三分法不断逼近求解。

与二分法类似的是,三分法也先取下界(记作l)和上界(记作r)的中间值(记作mid),随后,再取mid与r的中间值(记作midmid)。接下来,我们要比较midmid和mid所在的元素哪一个更接近最值,并依此更新上界和下界。不断重复以上操作,直至l>=r,则此时的l就是答案。
在这里插入图片描述
具体代码实现如下:

//这里以在一个凸性序列中查找元素为例
int find(int l,int r)//l存储上界,r存储下界
{
    if(l>=r) return l;//返回答案
    int mid=(l+r)>>1,midmid=(mid+r)>>1;
    //比较mid与midmid的大小
    if(sum[mid]>sum[midmid]) return find(l,midmid);//若mid大于midmid,说明最大值在左侧区间
    return find(mid,r);//反之,说明最大值在右侧区间
}

二,近期训练总结:

最近刚又打了一场cf,dv2,只出了一道题,感觉之前比赛之后的巩固方面做不是很好,不是很清楚怎样去复习打过的比赛,打完之后也只是看自己没做出的题,基本也就看到第四题,看题解的时候确实会看到理解为止,但似乎那种思维并没进脑子里面,看过之后就没再看第二遍了,以后打比赛前或者有空就去回顾回顾应该会熟练些。
对于二分三分的训练,一种套路的训练感觉只是在熟练代码格式,思维上没那么难,为了防止自己投机取巧只是稍微改代码,基本每天做一到两个题,相隔时间比较远,锻炼自己每天能够熟悉这种思维。遇到一次ac不了的题还是会烦躁,不过找错最近好像快了不少,能感觉到可能是那个部分有错,还是有点提高的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值