球调普及-代码,玄2棺!
  • 板块学术版
  • 楼主__^浅笑.__
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/7/14 23:34
  • 上次更新2024/7/15 09:08:38
查看原帖
球调普及-代码,玄2棺!
1342002
__^浅笑.__楼主2024/7/14 23:34

当你帮我调了了这道题,你会发现洛谷也有双倍经验~

二分查找的简单题目

题目大意:

第2组数中的哪些数
在第1组数中出现了
从小到大输出所有满足条件的数。

比如:
第1组数有:8 7 9 8 2 6 3
第2组数有:9 6 8 3 3 2 10
那么应该输出:2 3 3 6 8 9

输入要求:

第一行两个整数n和m,分别代表2组数的数量

第二行n个正整数

第三行m个正整数

对于60%的数据1≤n,m≤1000,每个数<=2*10^9

对于100%的数据1≤n,m≤100000,每个数<=2*10^9

代码

#include <bits/stdc++.h>
using namespace std;
long long a[30000000],b[30000000];
long long n,m;
int erfen(int x){
	long long l=1-1,r=n+1,mid;
	while(l+1<r){
		mid=(l+r)/2;
		if(a[mid]<x){
			l=mid;
		}
		if(a[mid]>x){
			r=mid;
		}
		if(a[mid]==x){
			return true;
		}
	}
	return false;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>b[i];
	}
	sort(a+1,a+n+1);
	sort(b+1,b+m+1);
	for(int i=1;i<=m;i++){
		if(erfen(b[i])==true){
			cout<<b[i]<<" ";
		}
	}
	return 0;
}

双倍经验

2024/7/14 23:34
加载中...