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

蓝桥杯 数三角

问题描述

小明在二维坐标系中放置了 n 个点,他想从中选出一个包含三个点的子集,使得这三个点能够组成一个三角形

由于这样的方案太多了,他决定只选择那些可以组成等腰三角形的方案。

请帮他计算出一共有多少种选法可以组成等腰三角形。


输入格式

n + 1 行:

  • 第 1 行:一个正整数 n,表示点的数量。
  • 接下来的 n 行:每行两个整数 xᵢyᵢ,表示第 i 个点的坐标。

输出格式

输出 1 行,一个整数,表示可以组成等腰三角形的选法数量。


样例输入

5
1 1
4 1
1 0
2 1
1 2

样例输出

4

样例说明

一共有 4 种选法可以组成等腰三角形:

  • {3, 4, 5}
  • {1, 3, 4}
  • {5, 2, 3}
  • {1, 4, 5}

评测用例规模与约定

  • 对于 20% 的数据,保证 n ≤ 200
  • 对于 100% 的数据,保证:
    • n ≤ 2000
    • 0 ≤ xᵢ, yᵢ ≤ 10⁹

c++代码

#include<bits/stdc++.h>
#include<math.h>

using namespace std;

typedef long long ll;

ll n, ans = 0;
vector<vector<ll>> arr;
unordered_map<ll, vector<ll>> mp;

ll delta(ll x1, ll y1, ll x2, ll y2) {
    return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);
}

int main() {
    scanf("%lld", &n);
    arr = vector<vector<ll>>(n, vector<ll>(2));
    for (ll i = 0; i < n; i++) {
        scanf("%lld %lld", &arr[i][0], &arr[i][1]);
    }
    for (ll i = 0; i < n; i++) {
        mp.clear();
        for (ll j = 0; j < n; j++) {
            if (j == i) continue;
            ll d = delta(arr[i][0], arr[i][1], arr[j][0], arr[j][1]);
            vector<ll> mid = mp[d];
            for (ll k = 0; k < mid.size(); k++) {
                if (4 * d > delta(arr[j][0], arr[j][1], arr[mid[k]][0], arr[mid[k]][1])) ans++;
            }
            mp[d].push_back(j);
        }
    }
    printf("%lld", ans);
    return 0;
}//by wqs

这个题目需要注意三点共线的情况,要把这种情况舍去

相关文章:

  • 阿里OSS使用指南!
  • 论文阅读笔记——ST-4DGS,WideRange4D
  • 【day24】逻辑分析与流程梳理:电子门票核销成功率巡检
  • 【数据分享】2000—2024年我国乡镇的逐年归一化植被指数(NDVI)数据(年最大值/Shp/Excel格式)
  • FFmpeg —— 实时绘制音频波形图(附源码)
  • 服务器与客户端通讯测试
  • 2025年- G32-Lc106-133. 克隆图--java版(很抽象,没有很能理解)
  • Linux SSH远程登录
  • HCIA-Datacom高阶:基础的单区域 OSPF 与多区域 OSPF的配置
  • 关于IP免实名的那些事
  • 语音机器人与智能体结合
  • SpringAI与JBoltAI深度对比:从工具集到企业级AI开发范式的跃迁
  • (一)初始化窗口
  • 记录Jmeter 利用BeanShell 脚本解析JSON字符串
  • MAC安装docker 后提示com.docker.vmnetd”将对您的电脑造成伤害
  • MySQL 语句解析json字符串
  • 基于SpringBoot的“交通旅游订票系统”的设计与实现(源码+数据库+文档+PPT)
  • 【笔记】在windows使用docker管理mysql版本
  • JS—异步编程:3分钟掌握异步编程
  • cordova android12+升级一些配置注意事项
  • 巴基斯坦称未违反停火协议
  • 新华时评:中国维护国际经贸秩序的立场坚定不移
  • 韩德洙成为韩国执政党总统大选候选人
  • 融创中国:今年前4个月销售额约112亿元
  • 正荣地产:前4个月销售14.96亿元,控股股东已获委任联合清盘人
  • 2025上海科技节将于5月17日开幕,拟设6大板块专题活动