二分查找课后作业

已结束 ACM/ICPC 开始于: 2024-12-4 13:00 604 小时 主持人: 39

3055:【基础】同时出现的数 

#include<bits/stdc++.h>
using namespace std;
#define N 100005
int n,m,a[N],b[N];

void binary(int y){
    int left =1,right = n,mid;
    while(left<=right){
        mid = left+(right-left)/2;
        if(a[mid]==y) {
            cout<<y<<" ";
            return;
        }
        else if(a[mid]>y) right = mid-1;
        else left = mid+1;
    }
}
int main(){
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=1;i<=m;i++){
        scanf("%d",&b[i]);
    }
    sort(a+1,a+n+1);
    sort(b+1,b+m+1);
    for(int i=1;i<=m;i++){
        binary(b[i]);
    }

}

1535:【基础】最满意的方案
#include<bits/stdc++.h>
using namespace std;
int main() {
    int m, n;
    int a[100000];
    int x;
    long long sum = 0;
    cin >> m >> n;
    for (int i = 0; i < m; i++) {
        scanf("%d", &a[i]);
    }
    sort(a, a + m);
    for (int i = 0; i < n; i++) {
        scanf("%d", &x);
        int l = 0, r = m - 1, ans = INT_MAX;
        while (l <= r) {
            int mid = (l + r) / 2;
            ans = min(ans, abs(x - a[mid]));
            if (a[mid] >= x) {
                r = mid - 1;
            }
            else {
                l = mid + 1;
            }
        }
        sum += ans;
    }
    cout << sum;
    return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define N 1000050
#define ll long long

ll m,s=0,n,a[N],b[N]; //a是学校,b学生 void binary(int x){     ll left = 1;     ll right = m;     ll mid;     while(left<=right){         mid=left+(right-left)/2;         if(a[mid]>=x) right=mid-1;         else left=mid+1;     }          s+=min(a[left]-x,x-a[left-1]);

}

int main(){         scanf("%lld %lld",&m,&n);     for(int i=1;i<=m;i++){         scanf("%lld",&a[i]);     }     for(int i=1;i<=n;i++){         scanf("%lld",&b[i]);     }          sort(a+1,a+m+1);     for(int i=1;i<=n;i++){         if(b[i]<a[1]) s+=a[1]-b[i];         else if(b[i]>a[m]) s+=b[i]-a[m];         else{             binary(b[i]);         }     }     printf("%lld",s);               return 0; }

</div>



3019:【入门】二分查找满足条件的数
1541:【入门】起止位置 
1511:小X算排名

状态
已结束
规则
ACM/ICPC
题目
5
开始于
2024-12-4 13:00
结束于
2024-12-29 17:00
持续时间
604 小时
主持人
参赛人数
39