[luogu P3799] 妖梦拼木棒

  • 题目描述
  • 解决过程
    • 思路
    • 代码
  • 感想

题目描述

点击此处查看题目描述

解决过程

暴力不多阐述,很显然是无法AC的

解决此题需要用到组合数

思路

这道题要求拼成等边三角形,我们设三边长为 a,b,ca ,b ,ca,b,c 则 a=b=ca = b = ca=b=c ,

由于是用四根拼成,那么其中必有两条边相等,在此我们设 a=ba = ba=b ,c=i+jc = i+jc=i+j,把数据存到桶里面,桶为 fff

那么需要 f[c]>=2f[c] >= 2f[c]>=2,此时如果 i=j=c/2i = j = c/2i=j=c/2,根据组合数,那么新增的方案数为 Cf[i]2∗Cf[c]2C^2_{f[i]} * C^2_{f[c]}Cf[i]2​∗Cf[c]2​,

当 i!=ji != ji!=j时,根据乘法原理和组合数,新增的方案数为 f[i]∗f[j]∗Cf[c]2f[i] * f[j] * C^2_{f[c]}f[i]∗f[j]∗Cf[c]2​

于是可以用 O(n2)O(n^2)O(n2) 的复杂度AC此题

代码

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXM = 1e3 * 5 + 10;
const int mod = 1e9 + 7;
int a[MAXM] ,n ,ans = 0 ,s ,t;
int C (int nn, int mm) {return nn * (nn - 1) >> 1;
}
int main () {// freopen ("P3799_1.in","r",stdin);
// freopen ("P3799.out","w",stdout);scanf ("%d",&n);int x;for (int q = 1;q <= n;++ q) {scanf ("%d",&x);s = min (s ,x);t = max (t ,x);a[x] ++;}for (int q = s;q <= t;++ q) {if (a[q] > 1) {for (int i = s;i <= q / 2;++ i) {int j = q - i;if (a[i] && a[j]) {if (i != j) {ans += a[i] * a[j] * C (a[q] ,2);ans %= mod;}else if (i == j && a[j] >= 2) {ans += C (a[q] ,2) * C (a[i] ,2);ans %= mod;}}}}}printf ("%d\n",ans % mod);return 0;
}

感想

谢谢大家
——2020.9.13

[luogu P3799] 妖梦拼木棒相关推荐

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

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

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

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

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

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

  4. 洛谷-P3799 妖梦拼木棒

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

  5. 洛谷P3799 妖梦拼木棒

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

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

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

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

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

  8. 【题解】【算法】- 洛谷 - P3799 妖梦拼木棒(组合数学)

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

  9. P3799 妖梦拼木棒

    四根拼成正三角形,一定是前两根相等,剩下两根相加等于前两根的长度 假定第三根木棒长度小于等于第四根木棒,所以第三根木棒从1枚举到 i / 2 进行枚举即可,耗时450ms #include <c ...

最新文章

  1. CTCLoss 学习笔记
  2. 如何使VS2008 调试网站的根目录和IIS调试的一致?
  3. matlab考试试题,matlab-考试试题-
  4. 拿下阿里投资 回血的网易云音乐能成功突围吗?
  5. 蓝桥杯2016年C/C++ 混搭
  6. Java设计模式之工厂方法模式与抽象工厂模式
  7. 高仿QQ顶部控件之IOS SegmentView
  8. filter过滤器(转载)
  9. 一、2.结构化解题流程细节
  10. 趋势科技防毒墙-网络版(OfficeScan)客户端管理工具
  11. qq邮箱发送邮件服务器类型,设置QQ邮箱为发送邮件服务器的详细带图步骤
  12. aho-corasick php,基于 Aho-Corasick 算法实现中文全分词
  13. \t\t长痘痘(鼻尖,脸上等部位)的原因,应该怎么办?
  14. 利用simulink分析系统各种传递函数的BODE图、阶跃响应、单位脉冲响应
  15. 精心整理的Java学习顺序流程和学习方法
  16. 设置模式之-------原型模型
  17. 永安在线API安全管控平台正式发布,以情报建立API安全基线
  18. vue统计组件库和ui框架
  19. Windows10 安装OpenSSH服务器 解决0x80072ee6错误
  20. 考试点计算机考研,【考研心路历程】祭奠我的计算机考研路

热门文章

  1. python打印转义双引号和单引号
  2. Keystore密钥库
  3. 苹果7更新系统13没有服务器,ios14更新正式版能降级到ios13.7吗 苹果ios14怎么降级方法教程...
  4. 如何绘制简单漂亮的全基因组互作矩阵HiC matrix
  5. 《小狗钱钱》,一本书带给我的艺术
  6. 死磕前端架构之整洁架构在前端的应用实践【稀缺资源】
  7. 【博应用官网】电脑无法停止通用卷设备该如何解决?
  8. 利用python顶点书包爬虫小说附带源码
  9. mybatis条件语句中带数组参数
  10. 【服务器问题】浪潮inspur服务器个别硬盘亮红灯且发出1长的滴滴声响