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

news2024/11/27 14:45:59

[蓝桥杯]真题讲解:数三角(枚举+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] = 1
    else:
        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) ** 2
        dis[i][j] = d
        dis[j][i] = d

st = {}
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) // 2
        dell = 0
        for j in no:
            x2, y2 = a[j]
            x3 = x1 * 2 - x2
            y3 = y1 * 2 - y2
            if (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.coloradmin.cn/o/1671078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode_栈和队列相关OJ题目

✨✨所属专栏&#xff1a;LeetCode刷题专栏✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 上一篇&#xff1a;数据结构_栈和队列(Stack & Queue)-CSDN博客 有效的括号 解析: 这里我们用数组实现的栈来解决这个问题&#xff0c;在有了栈的几个基础接口之后&#xff0c;我们运用这…

【Esp32S3 | Arduino】在Arduino中使用C++的高级特性

文章目录 前言一、Arduino中的Vector示例代码二、Arduino中的Map示例代码前言 最近在玩Arduino,自上次发现Arduino可以用Template,能使用高级宏后,这次发现Arduino竟可以使用C++中的一些STL容器,这属实令人震惊。起因是我打算做一个动态的数组,但是手动实现一些操作属实麻烦…

如何使用Docker安装并运行Nexus容器结合内网穿透实现远程管理本地仓库

前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊如何使用Docker安装并运行Nexus容器结合内网穿透实现远程管理本地仓库&#xff0c;希望大家能觉得实用&#xff01; 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496…

‘vue-cli-service‘ is not recognized as an internal or external command解决方案

vue-cli-service is not recognized as an internal or external command, operable program or batch file.解决方案 先进行 &#xff1a; npm install -g vue/cli 命令安装vue cli 是必须的。 如果 npm run build 还是报错 遇到同样的提示&#xff1a; 这时候先安装依赖 np…

树莓派|采集视频并实时显示画面

1、使用SSH远程连接到树莓派 2、新建存放代码的目录 mkdir /home/pi/my_code_directory 3、进入存放代码的目录 cd /home/pi/my_code_directory 4、新建py文件 nano cv2test.py 5、输入代码 import cv2# 打开摄像头 cap cv2.VideoCapture(0)while True:# 读取视频帧ret…

产品推荐 | 基于Intel (Altera) Cyclone V打造的水星Mercury SA1核心板

01 产品概述 水星Mercury SA1片上系统&#xff08;SoC&#xff09;核心板通过结合基于ARM处理器的SoC FPGA、快速DDR3L SDRAM、eMMC flash、QSPI flash、Gigabit Ethernet PHY和RTC形成了一个高性能嵌入式处理方案&#xff0c;结合了CPU系统的灵活性和FPGA原始的、实时的并行处…

软件测试总体报告(实际项目原件Word参考)

软件全套精华资料包清单部分文件列表&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c…

信创应用软件之邮箱

信创应用软件之邮箱 文章目录 信创应用软件之邮箱采用信创邮箱的必要性信创邮箱采购需求国产邮箱业务形态国产邮箱代表性品牌CoremailRichmail安宁eyouUMail拓波 邮件安全的发展阶段 采用信创邮箱的必要性 邮箱是天然的数据存储空间&#xff0c;党政和央国企客户在使用过程中存…

如何在 Python 中使变量不可继承

1. 问题背景 在 Python 中&#xff0c;子类可以继承父类的属性和方法。但是&#xff0c;有时我们希望子类不能继承父类的某些属性或方法。这种情况下&#xff0c;该如何做呢&#xff1f; 2. 解决方案 解决方案一&#xff1a;使用双下划线前缀 Python 中的双下划线前缀用于表…

【软考网络工程师】每日练题学知识

1.在EIGRP协议中&#xff0c;某个路由器收到了两条路径到达目标网络&#xff0c;路径1的带宽为100Mbps&#xff0c;延迟2ms&#xff0c;路径2的带宽为50Mbps&#xff0c;迟为4ms&#xff0c;如果EIGRP使用带宽和延迟的综合度量标准&#xff0c;那么该路由器选择的最佳路径是&am…

学习Uni-app开发小程序Day10

前面学习了局部组件的创建和简单使用&#xff0c;今天学习了slot&#xff08;插槽&#xff09;和组件之间的传值1. 插槽的使用 在components中&#xff0c;创建一个组件&#xff0c;给组件设置头部布局、内容布局、底部布局&#xff0c;例如&#xff1a; <template><…

Goby 漏洞发布|瑞友天翼应用虚拟化系统 /hmrao.php SQL注入漏洞

漏洞名称&#xff1a;瑞友天翼应用虚拟化系统 /hmrao.php SQL注入漏洞 English Name&#xff1a; Ruiyou-Tianyi-App-Virtualization-Delivery-Platform /hmrao.php SQL Injection Vulnerability CVSS core: 9.8 影响资产数&#xff1a;75202 漏洞描述&#xff1a; 瑞友天…

抖音上有可以长久赚钱的副业吗?当然有,只有它最稳定长久!

大家好&#xff0c;我是电商糖果 现在有很多年轻人在大城市上班&#xff0c;发现辛辛苦苦一年也赚不到多少钱。 如果说自己有了房贷&#xff0c;车贷&#xff0c;那更是一点儿不敢歇。 为了可以有更多的收入&#xff0c;年轻人都希望可以靠着下班时间&#xff0c;找一个可以…

基于51单片机的电子门铃设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机电子门铃设计( proteus仿真程序设计报告原理图讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0091 1. 主要功能&#xff1a; 基于51单片机的智能门铃设计 1、系统采用…

论文查重率好高啊,怎论文降重怎么降?aigc降低怎么改?

论文降重成功了&#xff0c;知网查重8%&#xff0c;aigc检测0%&#xff01;本人之前分享过一些关于论文方面的内容&#xff0c;然后就有好多同学在后台问毕业论文降重和aigc减低的方法&#xff0c;由于本人时间问题&#xff0c;实在不能第一时间给大家一一回复&#xff0c;请大…

文本处理三剑客grep,awk,sed-读书笔记(十四)

文本处理三剑客{ 1.内容过滤器 > grep 2.文本分析器 > awk 3.行文本处理器 > sed } grep内容过滤器 grep命令是Linux系统中一个非常强大的文本搜索工具&#xff0c;它能使用正则表达式搜索文本&#xff0c;并把匹配的行打印出来。grep全称是Global Regular Expr…

Multisim14 安装教程

1、下载压缩包 链接&#xff1a;https://pan.baidu.com/s/1L50kBBKWFtud6GhmmqHLiw?pwd8888 提取码&#xff1a;8888 2、解压 3、运行应用程序&#xff0c;开始安装&#xff0c; 4、点击确定 5、点击unzip&#xff0c;解压 6、点击确定 7、点击安装 8、填写name和organ&a…

深入探索不相交集合:链表表示与加权合并策略的实现

深入探索不相交集合&#xff1a;链表表示与加权合并策略的实现 1. MAKE-SET 操作伪代码C语言实现 2. FIND-SET 操作伪代码C语言实现 3. UNION 操作伪代码C语言实现 4. 集合对象和表对象的属性5. 总结 在本文中&#xff0c;我们将探讨如何使用链表表示和加权合并启发式策略来实现…

研究生通用学术英语写作(刘美岩)教材电子版分享

研究生通用学术英语写作电子版资源分享 本着开源的思想&#xff0c;为了实现互通有无&#xff0c;诸位需要研究生通用学术英语写作电子版资源的朋友可以直接微信关注下面公众号&#xff0c;或者手动搜索莲花百货铺&#xff0c;在公众号中直接输入书名就可获得网盘链接&#xff…

运维必备 | 《K8s故障排查手册》,强烈建议收藏!!

新手在使用K8s时经常出现各种故障&#xff0c;有些故障不知道背后原因&#xff0c;迟迟不能解决。今天就分享一份大佬总结的K8s常见问题故障排查手册&#xff0c;超级实用&#xff0c;运维及K8s使用者一定要收藏备用&#xff01; 简介 这份《K8s故障排查手册》&#xff0c;共…