zoukankan      html  css  js  c++  java
  • program

    【题目分析】

      题目的意思是在一个数列中找到四个数,a[i]=a[j]<a[k]=a[l],其他都扯淡。

      先把这些数sort一下,所有相等的数字就都排在一起了,然后这个数列可以按照数字的种类划分成一些段,每一段的数字都是相同的(1 1 4 4 5 5 6 12 12 12) ,每一个段和他后面的段都可以组成满足题目条件的答案。而每个段中的选择方式又有len^2种,我们维护一个前缀和数组sum[i]记录从第一段到第i段的每段组合数的和

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int mo=1e9+7;
    const int maxn=1e6+10;
    int n;
    int a[maxn],num[maxn],sum[maxn];
    int ans;
    int x;
    int main()
    {
    //    freopen("program.in","r",stdin);
    //    freopen("program.out","w",stdout);
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i++)
            num[i]=0;
        for(int i=1;i<=n;i++)
        {
            if(a[i]!=a[i-1])
                x++;
            num[x]++;
        }
        for(int i=1;i<=x;i++)
            num[i]=(num[i]*num[i])%mo;
        for(int i=1;i<=x;i++)
            sum[i]=sum[i-1]+num[i];
        for(int i=1;i<x;i++)
            ans=(ans+num[i]*(sum[x]-sum[i]))%mo;
        cout<<ans;
        fclose(stdin);fclose(stdout);
        return 0;
    }
  • 相关阅读:
    关于前端输入框的限制和有效值
    js,jquery转json的几种方法
    java,js,jstl,EL的简单交互
    mysql字段冲突报错
    js的一些压缩和优化性能
    一个不错的html素材网站
    redis之数据操作详解
    redis之持久化操作
    redis之django-redis
    redis知识总汇
  • 原文地址:https://www.cnblogs.com/xiaoningmeng/p/6015500.html
Copyright © 2011-2022 走看看