模板
找到第一个大于5的元素
bool isBlue(int x){ if(x<=5) return true; else return false; } int l=1, r=9; while(l+1!=r){ int mid = (l+r)/2; if(isBlue(q[mid])){ l=mid; }else{ r=mid; } } return r;
|
找到最后一个小于等于5的元素的位置(下标)
bool isBlude(int x){ if(x<=5) return true; else return false; } int l=-1, r=8; while(l+1!=r){ int mid = (l+r)>>1; if(isBlue(q[mid])){ l=mid; }else{ r=mid; } } return l;
|
数的范围
给定一个按照升序排列的长度为 nn 的整数数组,以及 qq 个查询。
对于每个查询,返回一个元素 kk 的起始位置和终止位置(位置从 00 开始计数)。
如果数组中不存在该元素,则返回 -1 -1
。
输入格式
第一行包含整数 nn 和 qq,表示数组长度和询问个数。
第二行包含 nn 个整数(均在 1∼100001∼10000 范围内),表示完整数组。
接下来 qq 行,每行包含一个整数 kk,表示一个询问元素。
输出格式
共 qq 行,每行包含两个整数,表示所求元素的起始位置和终止位置。
如果数组中不存在该元素,则返回 -1 -1
。
数据范围
1≤n≤1000001≤n≤100000
1≤q≤100001≤q≤10000
1≤k≤100001≤k≤10000
输入样例:
输出样例:
#include<bits/stdc++.h> using namespace std; const int N=100010; int n, q; int arr[N];
bool isBlue1(int num, int x){ if(num<x) return true; else return false; } int binary_search1(int q[], int len, int x){ int l=-1, r=len; while(l+1<r){ int mid=l+r>>1; if(isBlue1(q[mid], x)) l=mid; else r=mid; } if(q[r]==x) return r; else return -1; }
bool isBlue2(int num, int x){ if(num<=x) return true; else return false; } int binary_search2(int q[], int len, int x){ int l=-1, r=len; while(l+1<r){ int mid=l+r>>1; if(isBlue2(q[mid], x)) l=mid; else r=mid; } if(q[l]==x) return l; else return -1; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; for(int i=0; i<n; i++){ cin>>arr[i]; } while(q--){ int x; cin>>x; int res1=binary_search1(arr, n, x); int res2=binary_search2(arr, n, x); cout<<res1<<" "<<res2<<endl; } return 0; }
|
数的三次方根
给定一个浮点数 nn,求它的三次方根。
输入格式
共一行,包含一个浮点数 nn。
输出格式
共一行,包含一个浮点数,表示问题的解。
注意,结果保留 66 位小数。
数据范围
−10000≤n≤10000−10000≤n≤10000
输入样例:
输出样例:
#include<bits/stdc++.h> using namespace std; double n; bool check(double x){ if(x*x*x<=n){ return true; } return false; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; double l=-100, r=100; while(r-l>1e-8){ double mid=(l+r)/2; if(check(mid)){ l=mid; }else{ r=mid; } } cout<<fixed<<setprecision(6)<<l<<endl; return 0; }
|