暴力枚举——妖梦拼木棒

题目背景

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

题目描述

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

答案对 109 + 7 取模

输入格式

第一行一个整数 n。
第二行 n 个整数,第 i 个整数 ai 代表第 i 根木棒的长度。

输出格式

一行一个整数代表答案

输入输出样例

输入样例

4
1 1 2 2

输出样例

1

说明/提示

数据规模与约定

  • 对于 30% 的数据,保证 n ≤ 5 × 103
  • 对于 100% 的数据,保证 1 ≤ n ≤ 105,0 ≤ ai ≤ 5 × 103

分析

假设选取的四根木棒的长度分别为 a,b,c,d,
因为要得到正三角形,所以可以得到等式:a = b = c + d (c ≤ d),
将长度为 i 的木棒根数存放在 s[i] 中,
若 c = d,则这种情况的个数为:

若 c 不等于 d,则这种情况的个数为:

将结果相加取余即可得到最后的答案。

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int f[100005],s[5005],n,cnt=0;int main()
{cin>>n;memset(s,0,sizeof(s));for(int i=0;i<n;i++){cin>>f[i];s[f[i]]++; // 记录每种长度木棒的根数 }for(int a=2;a<=5000;a++){for(int c=1;c<=a/2;c++){ // c 最大不会超过 a/2 int d=a-c;if(c==d&&s[a]>=2&&s[c]>=2){cnt+=(s[a]*(s[a]-1)/2)*(s[c]*(s[c]-1)/2)%mod;} else if(c!=d&&s[a]>=2&&s[c]>=1&&s[d]>=1){cnt+=((s[a]*(s[a]-1))/2)*s[c]*s[d]%mod;}cnt=cnt%mod;}}cout<<cnt<<endl;return 0;
}

暴力枚举——妖梦拼木棒相关推荐

  1. 组合枚举——妖梦拼木棒(洛谷 P3799)

    题目选自洛谷P3799 有了这些铺垫以后,我们再来看这道题 要从nn根木棒中选出44根,使他们能组成一个正三角形. 简单的来说,就是先选出两根一样的,在选出两根使这两根的长度之和与先前选出的相同 那么 ...

  2. 洛谷[P3799 妖梦拼木棒] {暴力枚举} 奋斗的珂珂~

    洛谷[P3799 妖梦拼木棒] {暴力枚举} 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 n 根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法? 答案 ...

  3. P3799 妖梦拼木棒——枚举+组合数学

    妖梦拼木棒 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nnn 根木棒,现在从中选 444 根,想要组成一个正三角形,问有几种选法? 答案对 109+710^9+7 ...

  4. [luogu P3799] 妖梦拼木棒

    [luogu P3799] 妖梦拼木棒 题目描述 解决过程 思路 代码 感想 题目描述 点击此处查看题目描述 解决过程 暴力不多阐述,很显然是无法AC的 解决此题需要用到组合数 思路 这道题要求拼成等 ...

  5. 洛谷 P3799 妖梦拼木棒【枚举/组合数学】

    题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nnn 根木棒,现在从中选 444 根,想要组成一个正三角形,问有几种选法? 答案对 109+710^9+7109+7 ...

  6. P3799 妖梦拼木棒【暴力枚举、组合数】

    题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nn根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法? 答案对 10^9+7 取模. 输入格式 第一行一个 ...

  7. luoguP3799 妖梦拼木棒 [组合数学]

    题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数 ...

  8. 妖梦拼木棒(组合数)

    题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 n 根木棒,现在从中选 44 根,想要组成一个正三角形,问有几种选法? 答案对 10^9+7 取模. 输入格式 第一行一 ...

  9. P3799 妖梦拼木棒 (组合数学)

    题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数 ...

最新文章

  1. typora背景变黑
  2. BI推荐8款优秀的app
  3. 七十一、Python | Leetcode字符串系列(上篇)
  4. iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
  5. XCode中设置字体大小
  6. java 可忽略参数_如何使用“&var =”忽略URL参数
  7. Android应用开发—Android 消息处理机制:HandlerMessage
  8. mysql中订单产品名,Ecshop后台订单列表增加”商品名”检索字段
  9. 为RedHat系统安装发布版的PostgreSQL数据库
  10. 斯坦福密码学-2-流密码steam_ciphers
  11. python Django中文文档
  12. 痞子衡嵌入式:ARM Cortex-M内核那些事(3.2)- 安全模块看特性(M23/33/35P)
  13. nginx静态图片路径映射
  14. Unity模拟经营类游戏Demo部分代码及技术总结
  15. 基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  16. 电脑桌面删除的文件怎么找回?
  17. keyshot Pro for Mac(3D渲染和动画制作)兼容big sur
  18. Torch.arange函数详解
  19. 利用74LS373对 LED 和数码管分别进行控制,数码管显示所亮 LED 的位置
  20. 网易企业邮箱子邮箱发送邮件

热门文章

  1. RS2022/云检测:考虑域偏移问题的卫星图像半监督云检测Semi-Supervised Cloud Detection in Satellite Images by Considering the
  2. 实时股票数据接口大全
  3. Service启动泄露异常:android.app.ServiceConnectionLeaked
  4. 元素 tx:annotation-driven 的前缀 tx 未绑定
  5. unity塔防游戏怪物转向_皇家冲冲冲游戏下载-皇家冲冲冲游戏安卓版 v1.0.2090
  6. 1089A--Lazyland
  7. Python学习8:助学贷款额度计算(python123)
  8. C语言判断中英文输入
  9. android实现来电动画,华为来电动画app-华为来电动画(透明来电秀)安卓版-幻想游戏网...
  10. 2019云栖大会丨数字冰雹诠释行业大数据可视决策