zoukankan      html  css  js  c++  java
  • 51nod 1267 4个数和为0

    分析:

    将四个数字相加,分解成两个数相加,排序  找答案

    注意:比较四个数是否相等  不能直接四个数!=  不要偷懒!

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 const int maxn = 1e6+5;
     6 
     7 struct node{
     8     int a;
     9     int b;
    10     int sum;
    11 }a[maxn];
    12 int n, f[1005];
    13 bool cmp(node a, node b)
    14 {
    15     return a.sum < b.sum;
    16 }
    17 bool check(int i, int j)
    18 {    
    19     if(a[i].a != a[j].b && a[i].a != a[i].b && a[i].b != a[j].b && a[i].b != a[j].b) return true;
    20     else return false;
    21 }
    22 int main()
    23 {
    24     int k = 0;
    25     cin >> n;
    26     for(int i = 1; i <= n; i++){
    27         cin >> f[i];
    28          for(int j = 1; j < i; j++){
    29             a[k].a = i;
    30             a[k].b = j;
    31             a[k++].sum = f[i]+f[j];
    32         }
    33     }
    34     sort(a,a+k,cmp);
    35     int x = 0, y = k - 1, flag = 0;
    36     while(x < y){
    37         if(a[x].sum + a[y].sum == 0){
    38             if(check(x,y)){
    39                 flag = 1;
    40                 break;
    41             }
    42             else if(a[x].sum == a[x+1].sum) x++;
    43             else if(a[y].sum == a[y-1].sum) y--;
    44             else{ 
    45                 x++, y--;
    46             }
    47         }
    48         else if(a[x].sum + a[y].sum < 0) x++;
    49         else y--;
    50     }
    51     if(flag) cout << "Yes" << endl;
    52     else cout << "No" << endl;
    53     return 0;
    54 }
  • 相关阅读:
    MVC5+EF6 入门完整教程七
    MVC5+EF6 入门完整教程六
    MVC5+EF6 入门完整教程五
    MVC5+EF6 入门完整教程四
    MVC5 + EF6 完整入门教程三
    MVC5 + EF6 入门完整教程二
    MVC5 + EF6 入门完整教程
    最短路径简析
    PAT 1147 Heaps
    PAT 1146 Topological Order
  • 原文地址:https://www.cnblogs.com/JiaaaaKe/p/9468172.html
Copyright © 2011-2022 走看看