[luogu P3799] 妖梦拼木棒
[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] 妖梦拼木棒相关推荐
- 洛谷[P3799 妖梦拼木棒] {暴力枚举} 奋斗的珂珂~
洛谷[P3799 妖梦拼木棒] {暴力枚举} 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 n 根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法? 答案 ...
- P3799 妖梦拼木棒——枚举+组合数学
妖梦拼木棒 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nnn 根木棒,现在从中选 444 根,想要组成一个正三角形,问有几种选法? 答案对 109+710^9+7 ...
- 洛谷 P3799 妖梦拼木棒【枚举/组合数学】
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nnn 根木棒,现在从中选 444 根,想要组成一个正三角形,问有几种选法? 答案对 109+710^9+7109+7 ...
- 洛谷-P3799 妖梦拼木棒
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nn 根木棒,现在从中选 44 根,想要组成一个正三角形,问有几种选法? 答案对 10^9+7109+7 取模. 输入格 ...
- 洛谷P3799 妖梦拼木棒
题目链接 题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入格式: 第一行一个整数n 第二行n个整数,a ...
- P3799 妖梦拼木棒【暴力枚举、组合数】
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 nn根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法? 答案对 10^9+7 取模. 输入格式 第一行一个 ...
- P3799 妖梦拼木棒 (组合数学)
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数 ...
- 【题解】【算法】- 洛谷 - P3799 妖梦拼木棒(组合数学)
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有 n 根木棒,现在从中选 4 根,想要组成一个正三角形,问有几种选法? 答案对 109 + 7 取模. 输入格式 第一行一 ...
- P3799 妖梦拼木棒
四根拼成正三角形,一定是前两根相等,剩下两根相加等于前两根的长度 假定第三根木棒长度小于等于第四根木棒,所以第三根木棒从1枚举到 i / 2 进行枚举即可,耗时450ms #include <c ...
最新文章
- CTCLoss 学习笔记
- 如何使VS2008 调试网站的根目录和IIS调试的一致?
- matlab考试试题,matlab-考试试题-
- 拿下阿里投资 回血的网易云音乐能成功突围吗?
- 蓝桥杯2016年C/C++ 混搭
- Java设计模式之工厂方法模式与抽象工厂模式
- 高仿QQ顶部控件之IOS SegmentView
- filter过滤器(转载)
- 一、2.结构化解题流程细节
- 趋势科技防毒墙-网络版(OfficeScan)客户端管理工具
- qq邮箱发送邮件服务器类型,设置QQ邮箱为发送邮件服务器的详细带图步骤
- aho-corasick php,基于 Aho-Corasick 算法实现中文全分词
- \t\t长痘痘(鼻尖,脸上等部位)的原因,应该怎么办?
- 利用simulink分析系统各种传递函数的BODE图、阶跃响应、单位脉冲响应
- 精心整理的Java学习顺序流程和学习方法
- 设置模式之-------原型模型
- 永安在线API安全管控平台正式发布,以情报建立API安全基线
- vue统计组件库和ui框架
- Windows10 安装OpenSSH服务器 解决0x80072ee6错误
- 考试点计算机考研,【考研心路历程】祭奠我的计算机考研路