求助,为何递归的二分测试点全MLE了?
  • 板块P1918 保龄球
  • 楼主Meickol
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/9/17 23:35
  • 上次更新2023/11/2 19:22:57
查看原帖
求助,为何递归的二分测试点全MLE了?
729895
Meickol楼主2023/9/17 23:35

用二分函数while写法AC做出来了,突发奇想尝试用递归调用的二分来做,结果测试点全MLE,求助为什么会这样,以及有什么优化方法吗?

以下是代码:

#include<bits/stdc++.h>
using namespace std;
struct node{
    int no,num;
}p[100005];
int n,q,tmp;
bool cmp(node p1,node p2){
    return p1.num<p2.num;
}
void find(int l,int r,int x){
    int mid=l+(r-l)/2;
    if(l>=x){
        if(p[l].num==x) {cout<<p[l].no<<endl;return;}
        else {cout<<0<<endl;return;}
    }
    if(p[mid].num>=x) find(l,mid,x);
    else find(mid+1,r,x);
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>p[i].num;
        p[i].no=i;
    }
    sort(p+1,p+1+n,cmp);
    cin>>q;
    for(int i=1;i<=q;i++){
        cin>>tmp;
        find(1,n,tmp);
    }
    return 0;
}
2023/9/17 23:35
加载中...