贤鱼的刷题日常--P1665 正方形计数--题目详解

news2025/7/9 3:09:46

🏆今日学习目标:
🍀学习了解–P1665 正方形计数
✅创作者:贤鱼
⏰预计时间:5分钟
🎉个人主页:贤鱼的个人主页
🔥专栏系列:c++
🍁贤鱼的个人社区,欢迎你的加入 贤鱼摆烂团

请添加图片描述

P1665 正方形计数

  • 题目
  • 正方形计数
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
  • 思路
  • AC代码

题目

正方形计数

题目描述

给定平面上N个点,你需要计算以其中4个点为顶点的正方形的个数。注意这里的正方形边不一定需要和坐标轴平行。

输入格式

第一行一个数X,以下N个点的坐标。

【数据规模】

对于20%的数据,满足1≤N≤20;

对于100%的数据,满足1≤N≤500; -50≤X[i],Y[i]≤50,点不会重叠。

输出格式

一个数表示正方形的个数。

样例 #1

样例输入 #1

7
0 0
0 1
1 0
1 1
1 2
2 1
2 2

样例输出 #1

3

思路

这个题的难点就在于如何压缩时间复杂度
我们枚举四个顶点来判断当然可行,但是n^4绝对炸了

注意题干正方形
那我们枚举对角,判断剩下两个角,然后判断剩余两个叫的位置,如果有这两个顶点,答案++

n^做法
在这里插入图片描述
可以看到,这是一个正方形,我们可以枚举点A,点B,是不是就可以找到线段终点o了
线段终点公式:(x1-x2)/2,(y1-y2)/2
众所周知:正方形对角线互相垂直平分,并且四边相等
求出中点坐标(mdx,mdy)

注意:我们这里过o,做x轴,y轴平行线
在这里插入图片描述

过C,B做垂直,可以证明▲CEO≌▲BFO(AAS)
所以EO=OF,BF=EC
我们枚举AB,所以AB坐标是知道的
我们设A(ax,ay),B(bx,by)
所以c到y轴的距离就是mdx-(mdy-ay)
所以c到x轴的距离就是mdy+(mdx-ax)
所以d到y轴的距离就是mdx+(mdy-ay)
所以d到x轴的距离就是mdy-(mdx-ax)

题目最难的部分就做完了,接下来的细节代码中展示

AC代码

#include<cmath>
#include<iostream>
#include<cstring>
#include<iostream>
using namespace std;
int mp[1105][1105];
int n,ans=0;
int x[500011],y[510001];
int mdx,mdy;
int cx,cy,dx,dy;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
		x[i]=(x[i]+51)<<1;//这里先*2,后面算中点/2的时候可以避免小数,同时+51避免负数
		y[i]=(y[i]+51)<<1;//左移的意思是*2,左移2就是*2*2
		mp[x[i]][y[i]]=1;
	}
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			mdx=(x[i]+x[j])/2;
			mdy=(y[i]+y[j])/2;
			cx=mdx-(mdy-y[i]);
			cy=mdy+(mdx-x[i]);
			dx=mdx+(mdy-y[i]);
			dy=mdy-(mdx-x[i]);
			if(cx<=0||cy<=0||dx<=0||dy<=0) continue;//+51了就不会有0,所以判断一下
			if(mp[cx][cy]&&mp[dx][dy]==1){
				ans++;
			}
		}
	}
	cout<<ans/2;
}

请添加图片描述

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

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

相关文章

基于matlab的瑞利衰落信道建模和仿真

目录 1.算法概述 2.仿真效果预览 3.核心MATLAB预览 4.完整MATLAB程序 1.算法概述 无线信道的小尺度衰弱特征可以分为三大类&#xff1a; 一类是由于多径传播导致短时间内幅度衰落&#xff1b; 一类是由于多径的时延扩展引起时间色散导致的信道衰弱&#xff1b; 一类是由于…

点成分享 | 微流控技术集成系统的应用

一、背景 微流控技术是指把化学和生物等领域中涉及的样品制备、反应、分离、检测、细胞培养、分选、裂解等基本操作单元集成到一块几平方厘米甚至更小的芯片上&#xff0c;由微通道形成网络&#xff0c;以可控流体贯穿整个系统&#xff0c;用以实现常规化学、生物、材料、光学…

SAP UI5 SmartTable 控件的使用介绍试读版

本文来自笔者 SAP 开发技术交流知识星球内一位朋友的提问&#xff1a; smartfilter bar 有个输入框Cost Element绑定了cds实现value help 请问其对应的suggestion功能是通过cds的注解实现的嘛&#xff1f; 要回答这个问题&#xff0c;我们必须首先掌握 SAP UI5 SmartTable 控件…

软考应该如何备考?

首先应该选择软考的科目&#xff0c;软考科目众多&#xff0c;计算机软件资格考试设置了27个专业资格&#xff0c;涵盖5个专业领域&#xff0c; 3个级别层次&#xff08;初级、中级、高级&#xff09;。 首先软考报名是不限学历&#xff0c;经验&#xff0c;资历的&#xff0c;…

cpu设计和实现(iverilog工具)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 编写verilog的工具不少。大家熟知的modelsim、quartus和vivado都可以用来编写的。前者主要是用来仿真&#xff0c;quartus主要用于altera芯片&…

伪元素和伪类的概念和区别

目录 伪类 伪元素 区别&#xff1a; 对于区别的解释&#xff1a; 伪类 这是菜鸟教程下方的一个笔记&#xff0c;看着多但是干货满满。 伪类选择元素基于的是当前元素处于的状态&#xff0c;或者说元素当前所具有的特性&#xff0c;而不是元素的id、class、属性等静态的标志。…

小程序获取不到用户头像和昵称返回微信用户问题解决,即小程序授权获取用户头像规则调整的最新解决方案

最近好多同学在学习石头哥小程序课程的时候&#xff0c;遇到了下面这样的问题&#xff0c;在小程序授权获取用户头像和昵称时&#xff0c;获取到的是下面这样的。 到底是什么原因导致的呢&#xff0c;去小程序官方文档一看&#xff0c;又是官方改规则了。 点进去一看&#x…

超详细!linux系统nlg-eval安装指南

前言&#xff1a;最近在做文本生成的任务&#xff0c;需要用到bleu等评价指标&#xff0c;看到其他研究工作中都在用nlg-eval这个github库&#xff0c;就想把它拿过来用&#xff0c;然而安装过程并不是一帆风顺的&#xff0c;谨以此篇博客记录之&#xff0c;为后来者提供一些经…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-重要参数penalty C

视频作者&#xff1a;菜菜TsaiTsai 链接&#xff1a;【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 正则化是用来防止模型过拟合的过程&#xff0c;常用的有L1正则化和L2正则化两种选项。这个增加的范式&#xff0c;被称为“正则项”&#xff0c;也…

11个开源测试自动化框架,如何选?

以下为作者观点&#xff1a; 如果你正在考虑建立你自己的测试自动化框架&#xff0c;请再想一想。在大多数情况下&#xff0c;你最好可以考虑一个或多个可用的开源选项。 这是因为&#xff0c;一般来说&#xff0c;框架是一套可以跨团队使用的最佳实践、假设、通用工具和库。…

操作符详解(C语言)

算术操作符(运算符)&#xff1a; - * / % 在算术运算符中&#xff0c; - * 跟我们数学中的运算是一样的 在这里主要说一下 / 跟 % 这两个操作符 1、/ &#xff08;除法&#xff09; 在除法运算中&#xff0c;若除号两边的操作数都为整型&#xff0c;则结果…

布隆过滤器(Bloom Filter)

[TOC](布隆过滤器(Bloom Filter)) &#xff08;1&#xff09;什么是布隆过滤器 &#xff08;1&#xff09;布隆过滤器的简单介绍 布隆过滤器&#xff08;Bloom Filter&#xff09;是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以…

Python中的print()

本专栏为学习B站杨淑娟老师视频所记&#xff0c;仅做个人笔记使用&#x1f60b;&#x1f60b;&#x1f60b; &#x1f449;杨淑娟老师视频课&#x1f448; Python 职位方向 一、chapter1 1.使用print函数进行简单的输出 a100 # 变量a,值为100 b50 # 变量b,值为50print(90) …

【Linux实验】软中断通信

实验目的&#xff1a; 1&#xff0e;了解什么是信号&#xff0c;熟练掌握signal&#xff08;&#xff09;&#xff0c;wait&#xff08;&#xff09;&#xff0c;exit&#xff08;&#xff09;&#xff0c;kill&#xff08;&#xff09;函数。 2&#xff0e;熟悉并掌握Linux系统…

Learning to Enhance Low-Light Image via Zero-Reference Deep Curve Estimation

学习目标&#xff1a; Learning to Enhance Low-Light Image via Zero-Reference Deep Curve Estimation&#xff08;零参考深度曲线估计&#xff09; 个人体会&#xff1a; 本文的特色就是使用了PA和CA,对不同通道和不同像素做不同处理,虽然本文的实现过程懂了,但是实现去雾…

缝纫机牙架的数控工艺工装设计与编程

目 录 绪 论 1 2.差动牙架的工艺设计 3 2.1 机械加工工艺规程概述 3 2.2.1 零件的技术条件 4 2.2.2 加工表面及其要求 5 2.2.3零件的材料 6 2.3毛坯的选择 6 2.3.1毛坯的种类 6 2.4 基准的选择 8 2.5 机械加工工艺路线的拟订 10 3 差动牙架的工装设计 17 3.1 夹具概述 17 3.2 …

牛客CM11 - 链表分割【环形链表雏形】

看来真的不能乱割呀~一、题目描述二、思路分析三、代码详解【保姆级教学】四、环形链表的疑难解惑五、整体代码展示六、总结与提炼一、题目描述 描述 现有一链表的头指针 ListNode* pHead&#xff0c;给一定值x&#xff0c;编写一段代码将所有小于x的结点排在其余结点之前&am…

数据库-范式

目录 完全函数依赖部分函数依赖传递函数依赖码主属性非主属性第一范式(1NF)第二范式(2NF)第三范式(3NF)例题完全函数依赖 每一个属性都有用,缺一个都不能决定。 部分函数依赖 部分属性用不到,也可以决定 传递函数依赖

抽象类和(上)

大家好&#xff0c;又见面了&#xff0c;今天和大家浅谈一下抽象类 抽象类存在的意义就是被继承 抽象类 &#x1f437;1.抽象类的定义 &#x1f431;‍&#x1f680;2.抽象类的语法 &#x1f49a;3.抽象类的概念 &#x1f680;4.抽象类的作用 1.抽象类的概念 什么是 好…

[附源码]java毕业设计基于个性化的汽车购买推荐系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…