Southern Subregional Problem B. Travelling Camera Problem

来源:互联网 发布:编程开发培训 编辑:程序博客网 时间:2024/06/03 18:41

二分找区间 直接算

#include <bits/stdc++.h>using namespace std;const int maxn=300050;double x[maxn];double a[maxn];int main(){int n,m;double rr;//cin>>m>>n>>rr;scanf("%d%d%lf",&m,&n,&rr);double r=sqrt(rr*rr-1.0);for(int i=0;i<m;i++){scanf("%lf",&a[i]);//cout<<a[i].l<<" "<<a[i].r<<" "<<a[i].c<<endl;}double ans=0;int wh=0;    for(int i=0;i<n;i++){        scanf("%lf",&x[i]);        int midl=lower_bound(a,a+m,x[i]-r)-a;        int midr=upper_bound(a,a+m,x[i]+r)-a-1;        if(wh<midl){        ans+=a[midl]-a[wh];wh=midl;//cout<<"sadsa"<<endl;        }        else if(wh>midr){        ans+=a[wh]-a[midr];wh=midr;//cout<<"asda"<<endl;        }        //cout<<midl<<" "<<midr<<endl;    }    printf("%.1lf\n",ans);}

0 0
原创粉丝点击