zoukankan      html  css  js  c++  java
  • 洛谷P3799 妖梦拼木棒

    P3799 妖梦拼木棒

    题目背景

    上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来。

    题目描述

    有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?

    输入输出格式

    输入格式:

    第一行一个整数n

    第二行n个整数,a1,a2,……an(0<ai<=5000),代表每根木棒的长度。

    输出格式:

    一行一个整数,对1e9+7取模

    输入输出样例

    输入样例#1:
    4 1 1 2 2
    输出样例#1:
    1

    说明

    对于30%的数据 N<=5000

    对于100%的数据 N<=100000

    by-szc

    4个木棒拼正三角形,就是2根一样长的和另外2根拼起来

    木棒长度最大5000,可以用一个桶存下

    枚举两根短的木棒的长度就可以了

    #include<iostream>
    #include<cstdio>
    #define mod 1000000007
    #define C(i) ((1LL*i*(i-1)/2)%mod)
    int b[5010],n,mx;
    long long ans;
    using namespace std;
    int main(){
        scanf("%d",&n);int x;
        for(int i=1;i<=n;i++){
            scanf("%d",&x);
            b[x]++;mx=max(mx,x);
        }
        for(int i=1;i<=mx;i++){
            for(int j=i;j<=mx;j++){
                if(i+j>mx)break;
                if(i==j)ans=(ans+1LL*C(b[i])*C(b[i+j])%mod)%mod;
                else if(b[i]>=1&&b[j]>=1&&b[i+j]>=2)
                    ans=(ans+(1LL*b[i]*b[j]*C(b[i+j]))%mod)%mod;
            }
        }
        cout<<ans;
    }
  • 相关阅读:
    搞明白这八个问题,Linux系统就好学多了
    Fedora 25 Alpha版本今天发布啦
    Linux新手应掌握的10个基本命令
    PC-BSD 换名 TrueOS
    JPA+Springboot实现分页效果
    陈亮
    押尾光太郎
    岸部真明
    面试必备-网络的七层协议
    JavaScript中的快速排序
  • 原文地址:https://www.cnblogs.com/thmyl/p/7575321.html
Copyright © 2011-2022 走看看