当前位置: 首页 > news >正文

洛谷 小 Y 拼木棒 贪心

题目背景

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

题目描述

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

答案对 109+7 取模。

输入格式

第一行一个整数 n。

第二行往下 n 行,每行 1 个整数,第 i 个整数 ai​ 代表第 i 根木棒的长度。

输出格式

一行一个整数代表答案。

输入输出样例

输入 #1复制

4 
1
1
2
2

输出 #1复制

1

说明/提示

数据规模与约定
  • 对于 30% 的数据,保证 n≤5×103。
  • 对于 100% 的数据,保证 1≤n≤105,1≤ai​≤5×103。

代码:

#include <bits/stdc++.h>
#define MX 100005
using namespace std;
const int mod = 1e9+7;
int main() {
long long int n,cnt = 0,ant = 0;
cin>>n;
int a[MX],b[MX];
int f[MX] = {0};
for(int i = 1;i <= n;i++)
{
cin>>a[i];
f[a[i]]++;
if(f[a[i]] == 1)
{
b[++ant] = a[i];
}
}
sort(b+1,b+ant+1);
for(int i = 1;i <= ant;i++)
{
if(f[b[i]] >= 2)
{
for(int j = 1;j <= i;j++)
{
if(b[j] > b[i] /2)break;
if(f[b[i] - b[j]] >= 1)
{
if(b[i] - b[j] != b[j])
{
cnt =(cnt + (f[b[i]] *(f[b[i]] - 1)/2*f[b[j]]*(f[b[i] - b[j]]))%mod) % mod;
}
else if(f[b[j]]>=2)
{
cnt = (cnt + ((f[b[i]] *(f[b[i]] - 1)/2 * f[b[j]]*(f[b[j]] - 1)/2)%mod))%mod;
}
}
}
}
}
cout<<cnt;
return 0;
}

http://www.xdnf.cn/news/1291789.html

相关文章:

  • 长篇音频制作(小说自动配音)完整教程
  • 15.卷积神经网络
  • 硬件工程师八月实战项目分享
  • 笔趣阁追书小说
  • Unity、C#常用的时间处理类
  • esp32s3 驱动pcm5102a 的 wav播放器,mqtt控制
  • Flutter网络请求实战:Retrofit+Dio完美解决方案
  • 微服务单元测试组件
  • 在CentOS 7上配置Android USB网络共享方式的方法
  • Linux的进程信号
  • ASP.NET 上传文件安全检测方案
  • 设计秒杀系统从哪些方面考虑
  • 微软正式将GPT-5接入Microsoft Copilot Studio(国际版)
  • 【物联网】基于树莓派的物联网开发【26】——树莓派开启串口并配置串口助手Minicom
  • jvm学习笔记之jvm的生命周期和发展历程
  • Ansible 实操笔记:Playbook 与变量管理
  • dubbo应用之门面设计模式
  • 《Python学习之基础语法2:掌握程序流程控制的艺术》
  • 101、【OS】【Nuttx】【周边】文档构建渲染:reStructuredText 格式
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day3
  • C++多态:理解面向对象的“一个接口,多种实现”
  • 《AVL树的原理与C++实现:详解平衡二叉搜索树的高效构建与操作》
  • 旧版MinIO的安装(windows)、Spring Boot 后端集成 MinIO 实现文件存储(超详细,带图文)
  • 使用 6 种方法将文件从 Android 无缝传输到iPad
  • [Linux]学习笔记系列 -- [arm][process]
  • WPF 开发的瑞士军刀:Prism 框架从入门到精通指南
  • C++写文件,open函数的参数in、out、ate、app、trunc等标志分别是什么作用?
  • C++ 面向对象四大特性:面试深度解析
  • 河南萌新联赛2025第五场 - 信息工程大学
  • IDEA创建一个VUE项目