zoukankan      html  css  js  c++  java
  • [51nod1267]4个数和为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
    ");
        else printf("No
    ");
        return 0;
    } 
  • 相关阅读:
    mac 安装ROS2
    193 最长有效括号
    个人笔记
    个人笔记
    个人笔记-大佬主页
    笔记-吴恩达老师机器学习及深度学习
    个人笔记
    转载-资源链接
    枚举类型
    333333333333333333333333
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7784871.html
Copyright © 2011-2022 走看看