zoukankan      html  css  js  c++  java
  • hihocoder 1505 小Hi和小Ho的礼物

    中文题 

    n^4 就不说了

    显然n^2可以 

    那么我们可以求出每两个能得出的和的个数  然后每个数出现的次数

    考虑a[i] a[j]  相同

    那么 可以加上 sum[a[i]+a[j]]   那么多算了什么呢   多算了   给另外一个人cnt[a[i]] -1  同理 cnt[a[j]]-1  然后有一个重复了 +1 

    不同的时候也差不多 

    #include<cstdio>
    #include<cstring>
    #include<map>
    #include<iostream>
    #include<algorithm>
    #include<math.h>
    #include<map>
    #include<queue>
    #include<vector>
    using namespace std;
    #define ll long long
    
    
    #define MAXN  2000010
    
    int sum[MAXN];
    int cnt[MAXN];
    int z[1010];
    
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&z[i]);
            cnt[z[i]]++;
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=i+1;j<=n;j++)
                sum[z[i]+z[j]]++;
        }
        ll ans=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=i+1;j<=n;j++)
            {
                ans=ans+sum[z[i]+z[j]];
                if(z[i]==z[j])
                {
                    ans=ans-(cnt[z[i]]-1)-(cnt[z[j]]-1)+1;
                }
                else
                {
                    ans=ans-cnt[z[i]]-cnt[z[j]]+1;
                }
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code

    你要相信自己的 

  • 相关阅读:
    建造者模式
    抽象工厂设计模式
    工厂设计模式
    原型设计模式
    单例设计模式
    UML类图的学习
    kafka的客户端操作, stream API
    kafka的客户端操作,consumer API
    kafka的客户端操作,admin与producer
    Optional常用写法
  • 原文地址:https://www.cnblogs.com/cherryMJY/p/7732544.html
Copyright © 2011-2022 走看看