第一章-问题求解策略-LA4725-Airport
2020-04-01 18:54
627 查看
分类:二分答案
题目链接LA4725-Airport
注意check函数的写法,其他的跟普通二分法无异,这里的check函数写法是一个亮点
可以看看模板
三种常见的二分答案模板
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=5000+50; int a[maxn],b[maxn]; int l,r,T,n; bool check(int ck) { int can1 = 0, can2 = 0, canTot = 0, sum1 = 0, sum2 = 0; for(int i = 0; i < n; i++) { sum1 += a[i], sum2 += b[i]; int delta1 = max(0, sum1 - ck); int delta2 = max(0, sum2 - ck); if(delta1 > can1 || delta2 > can2) {return false;} if(delta1 + delta2 > canTot) {return false;} if(sum1 - can1 > 0) can1++; if(sum2 - can2 > 0) can2++; if(sum1 + sum2 - canTot > 0) canTot++; } return true; } int main() { scanf("%d",&T); while(T--) { l=0,r=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d %d",&a[i],&b[i]); r+=a[i]+b[i]; } while(l<=r) { int mid=(l+r)/2; if(check(mid)) { r=mid-1; } else { l=mid+1; } } printf("%d\n",max(0,r)); } return 0; }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 第一章-问题求解策略-Uva11134-Fabled Rooks
- 第一章-问题求解策略-LA3507-Keep the Customer Satisfied
- 第一章-问题求解策略-LA2757-Supermarket
- 第一章-问题求解策略-Uva10970-Big Chocolate
- 第一章-问题求解策略-Uva10340-All in All
- 第一章-问题求解策略-Uva10382-Watering Grass
- 第一章-问题求解策略-Uva10905-Children's Game
- 第一章-问题求解策略-LA4254-Processor
- 第一章-问题求解策略-Uva11627-Slalom
- 第一章-问题求解策略-Uva11100-The Trip, 2007
- 【浅析华容道之二】华容道问题搜索求解策略
- 二分法查找和快速排序 二分法是分治算法的一种特殊形式,利用分治策略求解时,所需时间取决于分解后子问题的个数、子问题的规模大小等因素,而二分法,由于其划分的简单和均匀的特点,是查找数据时经常采用的一种有
- 基于复杂问题求解策略设计的排序算法
- 人工智能:复杂问题求解的结构和策略(目录)
- 求解最小机器重量设计问题:一类最简单的深度优先搜索(BFS)策略
- 问题求解策略 (General Problem Solving Techniques)
- 免费教材丨第52期:人工智能(复杂问题求解的结构和策略)、人工智能哲学
- 第四章 分治策略 4.1 最大子数组问题 (暴力求解算法)
- 人工智能(三)上——通过搜索进行问题求解(有信息搜索策略)
- 第四章 分治策略 4.1 最大子数组问题 (暴力求解算法)