zoukankan      html  css  js  c++  java
  • 洛谷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

    题解:枚举+桶+组合数

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    const int mod=1e9+7;
    using namespace std;
    int ans,n,x,mx,sum[100009];
    int c(int x){
        return (1LL*x*(x-1)/2)%mod;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&x);mx=max(mx,x);sum[x]++;
        }
        for(int i=1;i<=mx;i++){
            for(int j=i;j<=mx;j++){
                if(i+j>mx)break;
                if(i!=j&&sum[i]&&sum[j]&&sum[i+j]>=2)
                ans=(ans%mod+1LL*sum[i]*sum[j]*c(sum[i+j])%mod)%mod;
                else if(i==j)
                ans=(ans%mod+1LL*c(sum[i])*c(sum[i+j])%mod)%mod;
            }
        }
        cout<<ans%mod<<endl;
        return 0;
    }
  • 相关阅读:
    多进程多线程
    JS---闭包
    Canvas:时钟
    CANVAS画布与SVG的区别
    CSS盒模型
    CSS---伪类与伪元素的区别
    CSS生成内容
    利用画布绘制折线图
    uiwebview与objective-c
    GoBelieve JS IM SDK接入备忘
  • 原文地址:https://www.cnblogs.com/zzyh/p/7658364.html
Copyright © 2011-2022 走看看