luoguP3799 妖梦拼木棒 [组合数学]
题目背景
上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来。
题目描述
有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?
输入输出格式
输入格式:
第一行一个整数n
第二行n个整数,a1,a2,……an(0<ai<=5000),代表每根木棒的长度。
输出格式:
一行一个整数,对1e9+7取模
输入输出样例
4 1 1 2 2
1
说明
对于30%的数据 N<=5000
对于100%的数据 N<=100000
木棍长度可以用桶存储
考虑枚举长木棍l1和短木棍l2,三角形由两种长度的木棍(l1,l1,l2,l2)或三种长度(l1,l1,l2,(l1-l2))的木棍拼成。
组合数学!
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; typedef long long ll; const int maxsiz=;
const int mod=1e9+; int n;
int buc[maxsiz];
ll ans; int C1(int x){
return x;
} int C2(int x){
return 1ll*x*(x-)/%mod;
} int main(){
scanf("%d",&n);
for(int i=,tmp;i<n;i++){
scanf("%d",&tmp);
buc[tmp]++;
}
for(int i=;i<=;i++){
if(buc[i]>=)
for(int j=;j<=i/;j++){
int k=i-j;
if(k==j){
if(buc[j]>=)
ans=(1ll*C2(buc[i])*C2(buc[j])%mod+ans)%mod;
}
else{
if(buc[j]&&buc[k])
ans=(1ll*C2(buc[i])*C1(buc[j])*C1(buc[k])%mod+ans)%mod;
}
}
}
printf("%d\n",ans);
return ;
}
luoguP3799 妖梦拼木棒 [组合数学]的更多相关文章
- P3799 妖梦拼木棒 (组合数学)
题目背景 上道题中,妖梦斩了一地的木棒,现在她想要将木棒拼起来. 题目描述 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法? 输入输出格式 输入格式: 第一行一个整数n 第二行n个整数 ...
- 洛谷P3799 妖梦拼木棒
P3799 妖梦拼木棒 53通过 345提交 题目提供者orangebird 标签 难度普及/提高- 时空限制1s / 128MB 提交 讨论 题解 最新讨论更多讨论 暂时没有讨论 题目背景 上道 ...
- AC日记——妖梦拼木棒 洛谷 P3799
妖梦拼木棒 思路: 神特么题: 代码: #include <bits/stdc++.h> using namespace std; #define mod 1000000007LL int ...
- luogu P3799 妖梦拼木棒
二次联通门 : luogu P3799 妖梦拼木棒 /* luogu P3799 妖梦拼木棒 用一个桶存下所有的木棒 美剧两根短的木棒长度 后随便乘一乘就 好了.. */ #include <a ...
- luogu3799 妖梦拼木棒
题目大意 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?木棒长度都<=5000. 题解 根据容斥原理,三角形两条边分别由长度相等的单根木棒组成,另一条边由两条小于该边长的木棒构 ...
- 题解 洛谷P3799 【妖梦拼木棒】
一道水题 (还是做了一个小时,我太菜了 基本思路: 题里面说,4根棍子拼成一个正三角形(等边三角形) 若设这四根棍子长度为\(a,b,c,d\)且\(a≥b>c≥d\) 那很容易得到 (真的很容 ...
- 洛谷 P3797 妖梦斩木棒 解题报告
P3797 妖梦斩木棒 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的\(n\)段.现在这个木棒可以看做 ...
- AC日记——妖梦斩木棒 洛谷 P3797
妖梦斩木棒 思路: 略坑爹: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 200005 #define m ...
- 洛谷P3797 妖梦斩木棒
P3797 妖梦斩木棒 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看 ...
随机推荐
- 【Muduo库】【base】基本类
一.Timestamp类 1.类图如下: 2. 知识点 (1) 这个类继承了 muduo::copyable, 以及 boost::less_than_comparable. (2) ...
- AtomicInteger 、Synchronized 和 volatile 之间的区别?
AtomicInteger:无锁的线程安全整数??? Synchronized:同步 volatile:挥发性??? 参考文档:
- Java出现OutOf MemoryError(OOM 错误)的原因有哪些?出现OOM错误后,怎么解决?
OutOf MemoryError这种错误可以细分为多种不同的错误,每种错误都有自身的原因和解决办法,如下所示: java.lang.OutOfMemoryError: Java heap space ...
- iftop简单使用
在linux下想查看当前与主机通信的IP有哪些?流量多少?怎么办?使用iftop吧,小巧实用的小工具.在排查问题的时候能起到大作用. centos安装 yum install iftop 界面如下: ...
- 【LeetCode 3】无重复字符的最长子串
描述 [题解] 尺取法 对于[l..r]这段 如果新加进来的s[r]有和之前的重复. 那么就不用重新开始了. 直接递增左区间. 让这段没有重复数字了再说. *****然后再把s[r]加进去. [代码] ...
- delphi 调用js脚本
function ExecScript(Code,Lang,Func:string):string; var script:OleVariant; begin script:=CreateOleObj ...
- 127.0.0.1和localhost不能正确映射的问题
可能引起的问题: 检查:分别ping一下127.0.0.1和localhost 以上是正确演示,不匹配的话,ping localhost会返回: 解决方案: 可能1: 在浏览器中打开http://12 ...
- Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)
文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...
- prototype.原型链.原型链图
//1.几乎所有函数都有prototype属性,这个是个指针,指向原型对象;Function.prototype这个没有 //2.所有对象中都有__proto__属性.(Object.protot ...
- 24. Jmeter GUI 及NON GUI实现分布式
什么是分布式: Jmeter的集群模式可以让我们将多台机器联合起来一起产生负载,从而弥补单台机器负载生成能力不足的问题. 假设我们的测试计划会产生100个threads,我们使用6台机器进行分布式测试 ...