洛谷P1571眼红的Medusa小解-创新互联

本人水平有限,第一次写题解,哪处有指点的,欢迎各位点评。

成都创新互联业务包括:成品网站、企业产品展示型网站建设、品牌网站设计、电子商务型网站建设、成都外贸网站建设(多语言)、购物商城网站建设定制网站建设营销型网站建设等。效率优先,品质保证,用心服务是我们的核心价值观,我们将继续以良好的信誉为基础,秉承稳固与发展、求实与创新的精神,为客户提供更全面、更优质的互联网服务!

代码参考 

#includeusing namespace std;
const int N = 100006;
typedef long long LL;//此处long long 题目要求小于2e9 用int也不会爆
int n,m;
LL a[N],b[N];
bool ffind(int x) // 二分查找
{
    int l = 0,r = m - 1,mid;
    while(l< r)
    {
        mid = (l + r) / 2;//此处也可以改为加(l + r + 1) / 2 相应下面也需修改
        if(b[mid] >= x) r = mid;
        else l = mid + 1;
    }
    // 二分完之后 l = r  然后判断x是否存在于数组b 即特殊贡献奖名单中是否存在x
    if(b[l] != x) return false;// 判断 false 的情况,剩余都为true
    return true;
}
int main()
{
    cin >>n >>m;
    for(int i = 0;i< n;i++) cin >>a[i];
    for(int i = 0;i< m;i++) cin >>b[i];
    sort(b,b + m);// 二分查找 前提条件:针对有序数列
    for(int i = 0;i< n;i++)
        if(ffind(a[i])) cout<< a[i]<< ' ';
    return 0;
}

回顾二分模版

红色区域的右边界值  记为 往左寻找  

左不变 即 l = 0      r = mid; 

蓝色区域的左边界值  记为 往右寻找

右不变 即r = n - 1   l = mid; (最终相等且非0,陷入死循环,所以需l + r + 1)

本人努力充电中,一步一步持续。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

新闻标题:洛谷P1571眼红的Medusa小解-创新互联
当前地址:https://www.cdcxhl.com/article32/ehcsc.html

成都网站建设公司_创新互联,为您提供关键词优化外贸建站网站内链品牌网站建设企业网站制作网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都定制网站建设