码迷,mamicode.com
首页 > 其他好文 > 详细

二分模板

时间:2018-11-09 23:27:23      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:span   else   不同   class   code   while   不能   pre   二分答案   

二分答案本质已经出来了

就是每次根据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     }

 

二分模板

标签:span   else   不同   class   code   while   不能   pre   二分答案   

原文地址:https://www.cnblogs.com/redblackk/p/9937604.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!