脑子里多了一段记忆
2025-08-02 10:50:45
发布于:广东
1
二分查找
using namespace std;
const int N=1e5+10;
int a[N];
int er(int l,int r,int x){
while(l<=r){
int mid=(l+r)/2;
if(a[mid]==x) return mid;
else if(a[mid]>x) r=mid-1;
else l=mid+1;
}
return -1;
}
int main(){
int n,t;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>t;
cout<<er(1,n,t);
return 0;
}
二分答案
int er(int l,int r,int x){
int ans=n+1;
while(l<=r){
int mid=(l+r)/2;
if(a[mid]>=x){
ans=mid;
r=mid-1;
}
else l=mid+1;
}
return ans;
}
前缀和
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],pre[N];
int n;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
pre[i]=pre[i-1]+a[i];
}
int l,r;
cin>>l>>r;
cout<<pre[r]-pre[l-1]<<endl;
return 0;
}
这里空空如也
有帮助,赞一个