1048 Find Coins(二分法解法)

Posted CSU迦叶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1048 Find Coins(二分法解法)相关的知识,希望对你有一定的参考价值。

非常基础的二分法-寻找序列中是否存在某一条件的元素 的应用

AC代码

#include<cstdio>
#include<iostream>
#include<set>
#include<vector>
#include<map>
#include<algorithm>

using namespace std;

const int SUP = 100000000;
const int maxn = 100010;

int n,T;
int M[maxn];

int BS(int begin,int l,int r){
	int mid;
	while(l<=r){
		mid = (l+r)/2;
		if(M[begin]+M[mid]<T){
			l = mid+1;
		}else if(M[begin]+M[mid]>T){
			r = mid-1;
		}else return mid;
	}
	return -1;
}

int main(){
	
	cin>>n>>T;

	for(int i=0;i<n;i++){
		cin>>M[i];
	}
	
	sort(M,M+n);
	
	for(int i=0;i<n;i++){
		int j = BS(i,i+1,n-1);
		if(j!=-1){
			printf("%d %d",M[i],M[j]);
			return 0;
		}
	}
	
	printf("No Solution\\n");
	
	return 0;
}

以上是关于1048 Find Coins(二分法解法)的主要内容,如果未能解决你的问题,请参考以下文章

1048 Find Coins(two pointers解法)

1048. Find Coins (25)

PAT1048:Find Coins

PAT 1048 Find Coins (25)

1048. Find Coins (25)

PAT 1048. Find Coins