当前位置: 首页 > 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.dtcms.com/a/330098.html

相关文章:

  • 函数对象(仿函数)适配器
  • 《量子雷达》第2章 从量子信息到量子雷达 预习2025.8.13
  • 工业视觉检测中的常见的四种打光方式
  • Java 导出word 实现表格内插入图表(柱状图、折线图、饼状图)--可编辑数据
  • java反射与泛型的简单知识和应用
  • 【KO】Android 网络相关面试题
  • 326. 3 的幂
  • 不用费心备份操作的实验记录本
  • VUE基础笔记
  • 【AI学习100天】Day07 加入AI社区,通往AGI之路
  • C# 反射和特性(获取Type对象)
  • 【C#】利用数组实现大数数据结构
  • Spring Cloud系列— Alibaba Sentinel限流
  • Pycharm现有conda环境有对应env,但是添加后没反应
  • 《人形机器人的觉醒:技术革命与碳基未来》——生物混合肌肉:技术原理和进展、比较优势和不足、材料技术要求及材料限制
  • 递归函数与 lambda 函数:用法详解与实践
  • Synchronized锁的使用方式
  • three.js学习记录(鼠标控制)
  • Linux 计划任务
  • 【web站点安全开发】任务3:网页开发的骨架HTML与美容术CSS
  • STM32学习笔记10—DMA
  • JSON索引香港VPS:高效数据处理的完美解决方案
  • JDK17下载与安装图文教程(保姆级教程)
  • 《汇编语言:基于X86处理器》第13章 复习题和编程练习
  • VerIF
  • 【R语言】RStudio 中的 Source on Save、Run、Source 辨析
  • [系统架构设计师]系统架构基础知识(一)
  • MySQL表约束
  • 关于大学计算机专业的课程的一些看法
  • windows通过共享网络上网