首页 > 其他 > 详细

openjudge 和为给定数(二分答案)

时间:2019-08-12 21:50:54      阅读:77      评论:0      收藏:0      [点我收藏+]

嗯...

 

题目链接:http://noi.openjudge.cn/ch0111/07/

 

这道题是一道不太明显,但很好二分的二分答案的一道题...

 

首先排序(二分要满足单调性),然后枚举每一个数,在[i + 1,n]区间中二分查找,如果有能和它匹配的数,直接输出即可...

 

AC代码:

技术分享图片
 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 
 5 using namespace std;
 6 
 7 int a[100005];
 8 
 9 inline int er_fen(int l, int r, int x){
10     while(l <= r){
11         int mid = (l + r) >> 1;
12         if(a[mid] == x) return 1;
13         else if(a[mid] > x) r = mid - 1;
14         else if(a[mid] < x) l = mid + 1;
15     }
16     return 0;
17 }
18 
19 int main(){
20     int n, m;
21     scanf("%d", &n);
22     for(int i = 1; i <= n; i++){
23         scanf("%d", &a[i]);
24     }
25     sort(a + 1, a + n + 1);
26     scanf("%d", &m);
27     for(int i = 1; i <= n; i++){
28         int t = m - a[i];
29         if(er_fen(i + 1, n, t)) {printf("%d %d\n", a[i], t); return 0;}
30     }
31     printf("No\n");
32     return 0;
33 }
AC代码

 

openjudge 和为给定数(二分答案)

原文:https://www.cnblogs.com/New-ljx/p/11342787.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!