首页 > 其他 > 详细

[51nod1267]4个数和为0(预处理+双指针)

时间:2017-11-04 22:49:23      阅读:224      评论:0      收藏:0      [点我收藏+]

题意:判断能否从序列中找出4个数的和为0。

解题关键:n^2预处理任意两个数的和,sort一下,双指针进行判定。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[1002];
struct node{
    int x,y,sum;
}arr[1000002];
bool cmp(node &a,node &b){
    return a.sum<b.sum;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++) cin>>a[i];
    int k=0;
    for(int i=0;i<n;i++) for(int j=0;j<i;j++){
        arr[k].x=i;
        arr[k].y=j;
        arr[k].sum=a[i]+a[j];
        k++;
    }
    sort(arr,arr+k,cmp);
    int l=0,r=k-1;
    bool flag=false;
    while(l<r){
        if(arr[l].sum+arr[r].sum==0&&arr[l].x!=arr[r].x&&arr[l].x!=arr[r].y&&arr[l].y!=arr[r].x&&arr[l].y!=arr[r].y){
            flag=true;
            break;
        }
        else if(arr[l].sum+arr[r].sum<0){
            l++;
        }else{
            r--;
        }
    }
    if(flag) printf("Yes\n");
    else printf("No\n");
    return 0;
} 

 

[51nod1267]4个数和为0(预处理+双指针)

原文:http://www.cnblogs.com/elpsycongroo/p/7784871.html

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