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

    合并排序再枚举哭


    题意问五个数组中各抽一个加起来 和是否为 0。


    開始想用 200*200*200 和 200*200 比。果然TLE了。

    后来知道 得 200*200,200*200 ,200 。


    先200*200 的枚举,排序,去重。然后三个元素加起来,微调 两个 200*200 的指针。


    这题用 %lld 就WA。得用 %I64d 。贡献N多TLE。N多WA。怒刷存在感。


    #include<cstdio>
    #include<cstring>
    #include<string>
    #include<queue>
    #include<algorithm>
    #include<map>
    #include<stack>
    #include<iostream>
    #include<list>
    #include<set>
    #include<cmath>
    #define INF 0x7fffffff
    #define eps 1e-6
    #define LL long long
    using namespace std;
    LL num[5][201];
    
    LL sum1[201*201];
    LL sum2[201*201];
    
    int main()
    {
    //    freopen("in.txt","r",stdin);
    //    freopen("2","w",stdout);
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int n;
            scanf("%d",&n);
            for(int i=0; i<5; i++)
                for(int j=0; j<n; j++)
                    scanf("%I64d",&num[i][j]);
    
            int len1=0,len2=0;
            for(int i=0; i<n; i++)
                for(int j=0; j<n; j++)
                    sum1[len1++]=num[0][i]+num[1][j];
    
            for(int i=0; i<n; i++)
                for(int j=0; j<n; j++)
                    sum2[len2++]=num[2][i]+num[3][j];
    
            sort(sum1,sum1+len1);
            sort(sum2,sum2+len2);
            sort(num[4],num[4]+n);
    
            int l1=unique(sum1,sum1+len1)-sum1;
            int l2=unique(sum2,sum2+len2)-sum2;
    
            bool flag=0;
            int j,k;
            for(int i=0; i<n&& !flag; i++)
            {
                for(j=0,k=l2-1; j<l1&&k>=0;)
                {
                    if(sum1[j]+sum2[k]+num[4][i]==0)
                    {
                        flag=1;
                        break;
                    }
                    else if(sum1[j]+sum2[k]+num[4][i]>0)
                        k--;
                    else
                        j++;
                }
    
            }
    
            if(flag)
                puts("Yes");
            else
                puts("No");
        }
    }
    


  • 相关阅读:
    EXCEL启动慢
    存货跌价准备-资产减值损失
    绩效软件交流-ZQDJ
    库存股
    CF788A Functions again dp
    CF788C The Great Mixing BFS+思维
    CF788B Weird journey 欧拉路径+计数
    CF786C Till I Collapse 整体二分+根号分治
    CF922D Robot Vacuum Cleaner 贪心+排序
    CF920C Swap Adjacent Elements 贪心
  • 原文地址:https://www.cnblogs.com/yxwkf/p/3917536.html
Copyright © 2011-2022 走看看