zoukankan      html  css  js  c++  java
  • hdu 4334 Trouble

    有5个数列,将第一,二列合并去重得到s1,再将第三,四列合并去重得到s2,这样就剩下3列了。

    然后将s1,s2排序,枚举第5列,每次用x指向s1的头,y指向s2的尾,当取出的3个和恰好为0则退出;

    大于0时y--;否则x++!

    代码如下:

    #include<iostream>
    #include<stdio.h>
    #include<algorithm>
    #include<iomanip>
    #include<cmath>
    #include<cstring>
    #include<vector>
    #define ll __int64
    #define pi acos(-1.0)
    #define MAX 50000
    using namespace std;
    ll a[202],b[202],c[40002],d[40002];
    vector<ll>s1,s2;
    int main(){
        int t,n,m,i,j,k;
        cin>>t;
        while(t--){
            scanf("%d",&n);
            s1.clear();
            s2.clear();
            for(i=0;i<n;i++) scanf("%I64d",&a[i]);
            for(i=0;i<n;i++) scanf("%I64d",&b[i]);
            for(i=0;i<n;i++)
            for(j=0;j<n;j++){
                s1.push_back(a[i]+b[j]);
            }
            for(i=0;i<n;i++) scanf("%I64d",&a[i]);
            for(i=0;i<n;i++) scanf("%I64d",&b[i]);
            for(i=0;i<n;i++)
            for(j=0;j<n;j++){
                s2.push_back(a[i]+b[j]);
            }
            sort(s1.begin(),s1.end());
            sort(s2.begin(),s2.end());
            c[0]=s1[0];
            for(i=1,j=1;i<s1.size();i++){
                if(s1[i]!=s1[i-1])
                    c[j++]=s1[i];
            }
            d[0]=s2[0];
            for(i=1,k=1;i<s2.size();i++){
                if(s2[i]!=s2[i-1])
                    d[k++]=s2[i];
            }
            for(i=0;i<n;i++) scanf("%I64d",&a[i]);
            bool flag=0;
            for(i=n-1;i>=0;i--){
                int x=0;
                int y=k-1;
                while(x<j&&y>=0){
                    ll temp=c[x]+d[y]+a[i];
                    if(temp==0){
                        flag=1;
                        break;
                    }
                    if(temp>0) y--;
                    else x++;
                }
                if(flag) break;
            }
            if(flag) cout<<"Yes"<<endl;
            else cout<<"No"<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/xin-hua/p/3230051.html
Copyright © 2011-2022 走看看