二分模板

Posted redblackk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分模板相关的知识,希望对你有一定的参考价值。

二分答案本质已经出来了

就是每次根据m次比较,找最值(只要有m次操作,有序单调基本都可用)

 

最小最大和最大最小略有不同(走的方向更新解的方向刚好相反,理解了本质都一样)

 

关键和难点还是写judge函数怎么找到每次枚举答案的次数,怎么找到写出m次。

 

 1     while(l<=r)//最小值最大化
 2     {
 3         ll mid=(l+r)/2;
 4  
 5         int t=judge(mid);
 6         if(t<=m)//t<=是不变的,<=m都是可行解,ans必定放在这里更新
 7         {
 8             l=mid+1;//往右区间高方向试试能不能更大解
 9             ans=mid;
10         }
11         else r=mid-1;
12     }
13     
14     while(l<=r)//最大值最小化
15     {
16         ll mid=(l+r)/2;
17  
18         int t=judge(mid);
19         if(t<=m)//t<=m是不变的,<=m次都是可行解,ans必定放在这里更新
20         {
21             r=mid-1;//往左区间低方向试试能不能更小解
22             ans=mid;
23         }
24         else l=mid+1;
25     }

 

以上是关于二分模板的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段2——.vue文件的模板

VSCode自定义代码片段(vue主模板)

整数二分浮点二分代码模板

Eclipse 中的通用代码片段或模板

调用模板化成员函数:帮助我理解另一个 *** 帖子中的代码片段

vscode代码片段生成vue模板