zoukankan      html  css  js  c++  java
  • 8-3 4Values Whose Sum is Zero 和为0的四个值

    给定四个n元素集合 ABCD   要求分别从中取一个元素 abcd   使得他们的合为0   问有多少中取法

    map果然炸了

    #include<bits/stdc++.h>
    using namespace std;
    #define N 100000000
    int a[N];
    int b[N];
    int c[N];
    int d[N];
    map<int,int>mp;
    
    int main()
    {
        int cas;cin>>cas;
    
        while(cas--)
        {   mp.clear();
            int n;cin>>n;
            
            for(int i=1;i<=n;i++)
             scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i])
    
            
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
               mp[ a[i]+b[j] ]++;
    
            int cnt=0;
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
            {
                int t=-c[i]-d[j];
                cnt+=mp[t];
            }
            printf("%d
    ",cnt);
        }
        return 0;
    }
    View Code

    用hash  但是不知道怎么放入哈希表里  因为每个元素最大值为2 28  总的为2 29  数组根本开不下

    然后可以直接从小到大存入数组。。。 

    并且活用 upper-bound 和low bound !!!   值得学习!

    #include<bits/stdc++.h>
    using namespace std;
    #define  N 10000
    int a[N];
    int b[N],c[N],d[N];
    
    int sum[N*N];
    
    int main()
    {
       int cas;
       cin>>cas;
       while(cas--)
       {
           int n;cin>>n;
           for(int i=1;i<=n;i++)
             scanf("%d%d%d%d",&a[i],&b[i],&c[i],&d[i]);
           int cnt=0;
           for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
              sum[cnt++]=a[i]+b[j];
              
            sort(sum,sum+cnt);
            
            long long ans=0;
            for(int i=1;i<=n;i++)
                for(int j=1;j<=n;j++)
                  ans+=upper_bound(sum,sum+cnt,-d[j]-c[i])-lower_bound(sum,sum+cnt,-c[i]-d[j]);
            printf("%ld
    ",ans);
            if(cas)printf("
    ");
       }
    }
  • 相关阅读:
    deepin 配置开发环境
    Springcloud学习笔记(一)总述
    Linux(Centos7) 配置 Tomcat 开机自启
    Linux下安装JDK8
    CentOS7 防火墙和端口管理
    Linux 下安装 MySQL8 教程
    WPF使用CefSharp嵌入网页
    WPF使用第三方字体(TTF字体)
    Hive学习笔记 --Permission denied: user=anonymous, access=READ
    SpringBoot jar 注册windows服务
  • 原文地址:https://www.cnblogs.com/bxd123/p/10417505.html
Copyright © 2011-2022 走看看