[蓝桥杯]真题讲解:数三角(枚举+STL)

[蓝桥杯]真题讲解:数三角(枚举+STL)

  • 一、视频讲解
  • 二、正解代码
    • 1、C++
    • 2、python3
    • 3、Java

一、视频讲解

[蓝桥杯]真题讲解:数三角(枚举+STL)

在这里插入图片描述

二、正解代码

1、C++

#include<bits/stdc++.h>
#define int long long 
using namespace std;signed main(){int n; cin >> n;vector<array<int,2>>a(n);map<pair<int,int>, int>node;for(int i = 0; i < n; i ++) {cin >> a[i][0] >> a[i][1];node[{a[i][0], a[i][1]}] ++;}int ans = 0;for(int i = 0; i < n; i ++) {map<int,vector<int>>st;for(int j = 0; j < n; j ++) {int dis = (a[i][0] - a[j][0]) * (a[i][0] - a[j][0]) + (a[i][1] - a[j][1]) * (a[i][1] - a[j][1]); 	if(dis)st[dis].push_back(j);}for(auto x: st) {vector<int>&no = x.second;int sum = no.size();ans += sum * (sum - 1) / 2;int del = 0;for(int j = 0; j < no.size(); j ++) {int x1 = a[i][0], y1 = a[i][1];int x2 = a[no[j]][0], y2 = a[no[j]][1];int x3 = x1 * 2 - x2, y3 = y1 * 2 - y2;del += (node[{x3, y3}]);}ans -= (del / 2);}}cout << ans << endl;return 0;
}

2、python3

n = int(input())
a = [list(map(int, input().split())) for i in range(n)]
node = {}
for x, y in a:key = (x, y)if key not in node:node[key] = 1else:node[key] += 1
ans = 0
dis = [[0] * n for i in range(n)]
for i in range(n):for j in range(i + 1, n):x1, y1 = a[i]x2, y2 = a[j]d = (x1 - x2) ** 2 + (y1 - y2) ** 2dis[i][j] = ddis[j][i] = dst = {}
for i in range(n):st.clear()x1, y1 = a[i]for j in range(n):if dis[i][j]:if dis[i][j] not in st:st[dis[i][j]] = [j]else:st[dis[i][j]].append(j)for d,no in st.items():sum = len(no)ans += sum * (sum - 1) // 2dell = 0for j in no:x2, y2 = a[j]x3 = x1 * 2 - x2y3 = y1 * 2 - y2if (x3, y3) in node:dell += node[(x3, y3)]ans -= (dell // 2)
print(ans)

3、Java

import java.util.*;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();List<int[]> a = new ArrayList<>();Map<String, Integer> node = new HashMap<>();for(int i = 0; i < n; i ++) {int x = sc.nextInt();int y = sc.nextInt();a.add(new int[]{x, y});String no = x + "#" + y;node.put(no, node.getOrDefault(no, 0) + 1);}long ans = 0;for(int i = 0; i < n; i ++) {Map<Long, List<Integer>> st = new HashMap<>();for(int j = 0; j < n; j ++) {int x1 = a.get(i)[0], y1 = a.get(i)[1];int x2 = a.get(j)[0], y2 = a.get(j)[1];long dis = (long)Math.pow(x1 - x2, 2) + (long)Math.pow(y1 - y2, 2);if(dis == 0)continue;if(st.get(dis) == null)st.put(dis, new ArrayList<Integer>());st.get(dis).add(j);}for(Map.Entry<Long, List<Integer>> x: st.entrySet()){List<Integer>no = x.getValue();long sum = no.size();ans += sum * (sum - 1) / 2;long del = 0;for(int j = 0; j < no.size(); j ++) {int x1 = a.get(i)[0], y1 = a.get(i)[1];int x2 = a.get(no.get((j)))[0], y2 = a.get(no.get((j)))[1];int x3 = x1 * 2 - x2, y3 = y1 * 2 - y2;if(node.get(x3 + "#" + y3) != null)del += node.get(x3 + "#" + y3);}ans -= del / 2;}}System.out.println(ans);}
}   }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/697861.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

疯狂学英语

我上本科的时候&#xff0c;学校出国留学的气氛不浓厚&#xff0c;我们班只有一名同学有出国留学的倾向&#xff0c;我们宿舍八个人没有一个考虑过留学。 只有小昊&#xff0c;在本校上了研究生之后&#xff0c;不知道受到什么影响&#xff0c;想出国留学。那时候小昊利用一切…

汇聚荣电商:做拼多多运营如何入行?

踏入电商领域&#xff0c;尤其是成为拼多多平台的运营专家&#xff0c;是许多创业者和职场新人的梦想。拼多多以其独特的团购模式在电商界迅速崛起&#xff0c;吸引了大量的商家和消费者。如果你也对拼多多运营感兴趣&#xff0c;那么以下内容将为你提供实用的指导和建议。 一、…

(undone) 什么是马尔可夫链?Markov Chain

参考视频1&#xff1a;https://www.bilibili.com/video/BV1ko4y1P7Zv/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 参考视频2&#xff1a;https://www.bilibili.com/video/BV1xg4y1K7z4/?spm_id_from333.788&vd_source7a…

采用java+B/S开发的全套医院绩效考核系统源码springboot+mybaits 医院绩效考核系统优势

采用java开发的全套医院绩效考核系统源码springbootmybaits 医院绩效考核系统优势 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求&#xff0c;以“工作量为基础的考核方案”为核心思想&#xff0c;结合患者满意度、服务质量、技术难度、工作效率、医德医风等管…

[数据集][图像分类]杂草分类数据集17509张9类别

数据集格式&#xff1a;仅仅包含jpg图片&#xff0c;每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数)&#xff1a;17509 分类类别数&#xff1a;9 类别名称:["chineseapple","lantana","negatives","parkinsonia","part…

Maven、JavaWeb基础开发

1 Maven介绍 1、标准化的项目结构 2、标准化的构建流程 3、依赖管理 4、依赖范围 2 JavaWeb基础开发 2.1 Http协议 1 Http请求数据格式 2 Http响应数据格式 2.2 Web服务器&#xff08;Tomcat&#xff09; VTS、FileServer使用Tomcat部署&#xff1b; 其他服务单元TESLA S…

GBase 8s 数据库集群切换及恢复

GBase 8s 数据库切换分为自动切换、由CM控制的按FOC规则的切换、手工切换。 自动切换 全自动切换用于HAC集群中&#xff0c;由于集群只有两个节点&#xff0c;数据库相互之前进行状态检查&#xff0c;发现异常时&#xff0c;能按DRAUTO的配置方式进行自动切换。 在HAC集群中&…

MyBatis——MyBatis查询语句

一、返回Car 当查询的结果&#xff0c;有对应的实体类&#xff0c;并且查询结果只有一条时&#xff1a; &#xff08;查询结果只有一条也可以用 List 集合接收&#xff09; package org.qiu.mybatis.mapper;import org.qiu.mybatis.pojo.Car;/*** author 秋玄* version 1.0*…

e行64位V11.17.4 安卓全局虚拟定位APP

e行最新版11.17.4 支持全局虚拟位置 小米手机 百度地图 高德地图 实测成功 其他app自测 不一定支持所有app 下载&#xff1a;https://www.123pan.com/s/HAf9-tsyCh.html

【单片机调试】mcu调试bug记录

【单片机调试】mcu调试bug记录 2023.5-2023.11待输入 2023.12-2023.22024.3-至今1.spi通信问题 2023.5-2023.11 待输入 2023.12-2023.2 辞职阶段&#xff1a;【STM32调试】寄存器调试不良问题记录持续版 2024.3-至今 1.spi通信问题 现象说明&#xff1a; mcu与afe芯片为spi通…

(车载)毫米波雷达信号处理中的恒虚警检测(CFAR)技术概述

说明 恒虚警检测(Constant False-Alarm Rate, CFAR)是雷达目标(信号)检测中很重要的一个概念&#xff0c;从事雷达相关科研或工程研发的或多或少应该都接触过。CFAR这项技术在工程实践上其实是比较简单的(至少在我了解的车载雷达领域)&#xff0c;不过这项技术也有很多可以深挖…

【2024年5月备考新增】】 考前篇(3)《官方平台 - 考生模拟练习平台常用操作(二)》

6 如何绘制前导图 第一步:先划出所有活动,将活动命名 第二步:如需调整大小,选中要调整大小的元件,点击工具栏中的“设置相同大小”。 第三步:如需将元件对齐,选中要对齐的元件,点击工具栏中的对齐工具 第四步:通过连线工具,连接各活动,表示出活动之间的关系。通过选…