一道水题 (还是做了一个小时,我太菜了

基本思路:

题里面说,4根棍子拼成一个正三角形(等边三角形)

若设这四根棍子长度为\(a,b,c,d\)且\(a≥b>c≥d\)

那很容易得到 (真的很容易):

\(a=b=c+d\)

自然,我们只需枚举\(a\)的长度和\(c\)的长度就行了

长度最长才5k,木棍用桶按长度装一下,遍历的时候也方便。

代码要好好看完啊kora

#include <bits/stdc++.h>
#define c1(a) (a)//带参宏定义,本题不必写函数
#define c2(a) ((a)*((a)-1)/2)
using namespace std;
const int mode=1000000007;
int aaa[5010];//桶
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);//io流解绑
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int k;
cin>>k;
aaa[k]++;//往桶里扔
}
int ans=0;
for(int a=2;a<=5000;a++)
{
for(int c=1;c<=a/2;c++)//c最大只能到a的一半
{
int d=a-c;//把d算出来判定相等
if(d!=c&&aaa[a]>=2&&aaa[c]>=1&&aaa[d]>=1)//c d不同
{
ans+=((c2(aaa[a])%mode)*(c1(aaa[c])%mode)*(c1(aaa[d])%mode))%mode;
}
else if(d==c&&aaa[a]>=2&&aaa[c]>=2)//c d相同
{
ans+=((c2(aaa[a])%mode)*(c2(aaa[c])%mode))%mode;
}
ans%=mode;
}
}
cout<<ans%mode;//多模几次总没问题的
return 0;
}

题解 洛谷P3799 【妖梦拼木棒】的更多相关文章

  1. 洛谷P3799 妖梦拼木棒

    P3799 妖梦拼木棒 53通过 345提交 题目提供者orangebird 标签 难度普及/提高- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 暂时没有讨论 题目背景 上道 ...

  2. luogu P3799 妖梦拼木棒

    二次联通门 : luogu P3799 妖梦拼木棒 /* luogu P3799 妖梦拼木棒 用一个桶存下所有的木棒 美剧两根短的木棒长度 后随便乘一乘就 好了.. */ #include <a ...

  3. 洛谷 P3797 妖梦斩木棒 解题报告

    P3797 妖梦斩木棒 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的\(n\)段.现在这个木棒可以看做 ...

  4. 洛谷P3797 妖梦斩木棒

    P3797 妖梦斩木棒 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了一支非常长的木棒,妖梦把它们切成了等长的n段.现在这个木棒可以看 ...

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

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

  6. 洛谷 P3797 妖梦斩木棒

    https://www.luogu.org/problem/show?pid=3797 题目背景 妖梦是住在白玉楼的半人半灵,拥有使用剑术程度的能力. 题目描述 有一天,妖梦正在练习剑术.地面上摆放了 ...

  7. AC日记——妖梦拼木棒 洛谷 P3799

    妖梦拼木棒 思路: 神特么题: 代码: #include <bits/stdc++.h> using namespace std; #define mod 1000000007LL int ...

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

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

  9. luogu3799 妖梦拼木棒

    题目大意 有n根木棒,现在从中选4根,想要组成一个正三角形,问有几种选法?木棒长度都<=5000. 题解 根据容斥原理,三角形两条边分别由长度相等的单根木棒组成,另一条边由两条小于该边长的木棒构 ...

随机推荐

  1. spring security 简介+实战

    过滤器链: 依赖: security 功能列表: 一.登录验证.权限验证 1.1 httpbasic验证 1.2form验证 建立数据需要遵循RBAC模型 用户表要参考UserDetail创建 实例类 ...

  2. python8.3多进程

    from multiprocessing import Processimport time def run1 (name,sex): print(name,sex,"执行进程1" ...

  3. Python爬取网站上面的数据很简单,但是如何爬取APP上面的数据呢

  4. windows 下部署 .netcore 到 docker

    前面我们演示了如何将 Asp.Net Core 程序部署到 iis 和 部署到 windows 服务.其实前面的都是铺垫,如何将 Asp.Net Core 站点部署到 docker 才是这个系列文章的 ...

  5. 使用webgl(three.js)创建科技版3D机房,3D机房微模块详细介绍(升级版三)—— 1

    上节课已经详细描述了微模块机房的实现过程,文章地址(https://www.cnblogs.com/yeyunfei/p/10484241.html) 紧接着上节课的内容 我们这节可来详细讲解科技版机 ...

  6. SSH安全端口

    端口安全指的是尽量避免服务器的远程连接端口被不法分子知道,为此而改变默认服务端口号的操作 如何改变SSH服务端口 修改 /etc/ssh/sshd_config 配置 配置修改后执行命令 servic ...

  7. html定时跳转页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. C++运用栈实现网络浏览器的“前进”与“后退”功能

    在用户最近访问的网页中进行“前进”和“后退”是Web浏览器的常用功能,实现该功能的一种方式是使用两个栈(backward 栈和forward栈)来存储用户访问的网址,用户的不同操作对应的具体实现方法如 ...

  9. 深度强化学习:Policy-Based methods、Actor-Critic以及DDPG

    Policy-Based methods 在上篇文章中介绍的Deep Q-Learning算法属于基于价值(Value-Based)的方法,即估计最优的action-value function $q ...

  10. 每日一道 LeetCode (14):数组加一

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...