UVA10487二分查找上界和下界
来源:互联网 发布:linux用户权限管理 编辑:程序博客网 时间:2024/05/21 06:41
注意二分查找,查找上界的时候,返回的是等于查找的数的第一个位置,如果没有,返回前面比他大那个数的位置,
如果全部数都比他大,则返回全部数的下一个坐标,注意这里。
查找下界的时候,返回的是小于等于b的最后一个元素的后面一个位置,如果全部都小于,返回第一个数前面那个数的坐标。
#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<string>#include<set>#include<map>#include<iostream>#include<algorithm>#include<vector>#include<cctype>#include<queue>#define LL long longusing namespace std;const int maxn=1e7+10;const double eps=1e-8;const int Max=2147483647;int a[1010];int sum[maxn];int main(){ int t=0; int n; while(cin>>n&&n) { t++; for(int i=0;i<n;i++) scanf("%d",&a[i]); int l=0; for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) sum[l++]=a[i]+a[j]; sort(sum,sum+l); // for(int i=0;i<l;i++) // cout<<sum[i]<<' '; // cout<<endl; int m; cin>>m; cout<<"Case "<<t<<':'<<endl; while(m--) { int tem; scanf("%d",&tem); int x=0,y=l; while(x<y) { int m=x+(y-x)/2; if(sum[m]>=tem) y=m; else x=m+1; } int ans; // cout<<x<<endl; if(x==0||(x!=l&&sum[x]-tem<=tem-sum[x-1])) ans=sum[x]; else ans=sum[x-1]; printf("Closest sum to %d is %d.\n",tem,ans); } } return 0;}
0 0
- UVA10487二分查找上界和下界
- 二分查找上界和下界
- 上界,下界,二分查找
- 二分查找求上界和下界
- 二分查找求上界和下界
- 二分查找求上界和下界
- 二分查找求上界 下界
- 二分查找(上界,下界)
- 二分查找,二分上界,二分下界
- 【java】二分查找 求下界 求上界
- 二分查找下界 下界
- 二分法(查找、求上界、求下界)
- POJ 2785 upper_bound找到上界和下界
- 二分查找求下界
- 二分法(查找元素及其上界与下界)
- ZCMU-1679-查找2(二分上界)
- 二分查找求上、下界
- 二分查找求上、下界
- C++为什么不叫++C
- 【SSH (七)】 struts2整合hibernate3
- 集训队专题(9)1001 敌兵布阵
- 最新前端开发面试题集合(非常全面)
- App架构经验总结
- UVA10487二分查找上界和下界
- 史上最详细的Android Studio系列教程二--基本设置与运行
- Android Studio更新升级方法
- 【转载】分水岭超像素
- Java中继承、多态、重载和重写介绍
- 自学 java 笔记 day13(集合)
- ORA-26663 Oracle Streams 在删除进程出错
- 原码, 反码, 补码 详解
- web项目部署时总是提示May be locked by another process. Error copying file