随笔 - 41  文章 - 0  评论 - 0  阅读 - 1659 

P1918 保龄球 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

 

经典二分题目


首先,我们开个结构体数组,用h来记录保龄球个数,用H来记录原先的坐标。 然后,我们把他快排一次。再用二分查找来查找对应的保龄球个数(sum),但最后的答案是保龄球原先坐标(num)

 

复制代码
#include<bits/stdc++.h>
using namespace std;
struct pos{
    int num;
    int sum;
}a[100005];
bool cmp(pos x,pos y){
    return x.sum <y.sum; 
}
int main(){
    int n,m,q;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].sum ;
        a[i].num= i;
    }
    sort(a+1,a+1+n,cmp);
    cin>>m;

    for(int i=1;i<=m;i++){
        cin>>q;
        int l=1,r=n,ans=0;
        while(l<=r){
            int mid=(l+r)/2;
            if(a[mid].sum<=q){
            
                l=mid+1;
                ans=mid;
            }
            else{
                r=mid-1;
            }
        }
        if(a[ans].sum ==q)
            cout<<a[ans].num <<endl;
        else
            cout<<0<<endl;
         
    }
    return 0; 
}
复制代码

 

posted on   ljq0120  阅读(142)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示