【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
文章目录
- 一、题目
- 1、原题链接
- 2、题目描述
- 二、解题报告
- 1、思路分析
- 2、时间复杂度
- 3、代码详解
- 三、知识风暴
- 最大公约数
一、题目
1、原题链接
4309. 消灭老鼠
2、题目描述
约翰的农场可以看作一个二维平面。
农场中有 n 个老鼠,在毁坏着农田。
第 i 个老鼠的位置坐标为 (xi,yi)。
不同老鼠可能位于同一位置。
在 (x0,y0) 处,装有一个双向发射的激光枪,该位置没有老鼠。
激光枪每次发射都可以将穿过点 (x0,y0) 的某一条直线上的所有老鼠都消灭掉。
请问,为了消灭所有老鼠,至少需要激光枪发射几次。
输入格式
第一行包含三个整数 n,x0,y0,表示共有 n 只老鼠,激光枪的位置为 (x0,y0)。
接下来 n 行,每行包含两个整数 xi,yi,表示第 i 只老鼠的位置为 (xi,yi)。
输出格式
一个整数,表示激光枪的最少发射次数。
数据范围
前 5 个测试点满足 1≤n≤5。
所有测试点满足 1≤n≤1000,−104≤xi,yi≤104。输入样例1:
4 0 0 1 1 2 2 2 0 -1 -1
输出样例1:
2
输入样例2:
2 1 2 1 1 1 0
输出样例2:
1
二、解题报告
1、思路分析
思路来源:y总讲解视频
y总yyds
(1)我们可以先将发射点移动到原点,当某些点与发射点构成的直线的斜率相同时,说明可以将这些点上的老鼠一起消灭掉。
(2)由于可能有些点在x轴或者y轴上,所以计算斜率可能会出现除数为0的情况,所以我们用点对来存储每个点的斜率(即分子分母约分后最简分数形式的点对(分子与分母),也就是同时除以它俩的最大公约数)。而针对一条直线,可以同时消灭一、三象限或二、四象限点上在该直线上的所有老鼠,所以我们可以将二、四象限的点来原点对称到第一、四象限(针对两个点,如果某个点经过原点对称变换后和另外一个点重合,说明两点在同一条直线上),所以,这样我们只需要统计第一、四象限有多少个点对即可。
(3)最后统计一共有多少个不同的点对即可。
2、时间复杂度
时间复杂度为O(nlogn)(求最大公约数时间复杂度O(logn))
3、代码详解
#include <iostream>
#include <set>
#include <utility>
using namespace std;
typedef pair<int,int> PII; //存储每个点对
set<PII> s; //set去重来统计点对个数
int n,x0,y0;
//欧几里得算法求最大公约数
int gcd(int a,int b){return b?gcd(b,a%b):a;
}
int main(){cin>>n>>x0>>y0;while(n--){int x,y;cin>>x>>y;x-=x0,y-=y0; //将该点坐标更新成以(x0,y0)为原点的坐标系中点的坐标int d=gcd(x,y); //求两者的最大公约数x/=d,y/=d; //将y/x分子分母约分(分子分母同时除两者的最大公约数)后的点对放入set中if(x<0) x=-x,y=-y; //将第二、三象限的点原点对称到第一、四象限s.insert({x,y});}cout<<s.size();return 0;
}
三、知识风暴
最大公约数
- 求最大公约数可以利用欧几里得算法:即
gcd(a,b)=gcd(b,a mod b)
。
相关文章:
【蓝桥杯集训·每日一题】AcWing 4309. 消灭老鼠
文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴最大公约数一、题目 1、原题链接 4309. 消灭老鼠 2、题目描述 约翰的农场可以看作一个二维平面。 农场中有 n 个老鼠,在毁坏着农田。 第 i 个老鼠的位置坐标为…...
FPGA实现CSI-2 解码MIPI视频 2line 720P分辨率 OV5647采集 提供工程源码和技术支持
目录1、前言2、Xilinx官方主推的MIPI解码方案3、纯Vhdl方案解码MIPI4、vivado工程介绍5、上板调试验证6、福利:工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了,MIPI解码难度之高,令无数英雄竞折腰…...
JS面试题收集(持续更新好中...)
1.JavaScript 中的垃圾回收机制 定义:指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。 JavaScript在创建对象时会为它们分配内存,不再使用时会自动释放内存,这个过程称为垃圾收集。 四种常见的内存泄…...
2023携程面试题
Java I/O 面试前需要准备: 1. Java 八股文:了解常考的题型和回答思路; 2. 算法:刷 100-200 道题,记住刷题最重要的是要理解其思想,不要死记硬背,碰上原题很难,但 大多数的解题思…...
CANoe中使用CAPL函数接口调用Vflash文件
🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…...
三天吃透计算机网络面试八股文
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...
shp数据添加wkt字段并导出成csv,leaflet绘制使用
准备的东西:软件2跟软件3具体怎么有这些软件需要自行百度postgresql postgis相关 1.shp数据 2.软件2 3.软件3 1.数据导入 首先你得有软件2的数据库,即postgresql数据库,然后通过postgis的插件进行连接并导入数据, 导入数据…...
Java——二叉树的最近公共祖先及二叉搜索树介绍
目录 二叉树的最近公共祖先 题目 思路一:如果给定的是一颗二叉搜索树, 思路二:假设是孩子双亲表示法 二叉搜索树 定义Node类 查找 删除 插入 二叉树的最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百…...
Stable Diffusion加chilloutmixni真人图片生成模型,AI绘图杀疯了
上期图文教程,我们分享过AI绘图大模型Stable Diffusion以及中文版本文心AI绘画大模型的基础知识以及代码实现,截至到目前为止。Stable Diffusion模型已经更新到了V2.1版本,其文生图大模型也越来越火,其在2022年底,由AI绘制的图片被荣为国际大奖,让大家对AI绘画大模型也越…...
Matplotlib 绘图实用大全
本文只介绍最简单基本的画图方法 预设 要想画出来的图有些逼格,首先应该进行如下设置 plt.rcParams[font.sans-serif][SimHei] #画图时显示中文字体 plt.rcParams[axes.unicode_minus] False #防止因修改成中文字符,导致某些 unicode 字符不能…...
MyBatis源码用了哪些设计模式?
MyBatis源码用了哪些设计模式?前言一、创建型模式工厂模式单例模式建造者模式二、结构型模式适配器模式代理模式组合模式装饰器模式三、行为型模式模板模式策略模式迭代器模式总结前言 在 MyBatis 的两万多行的框架源码中,使用了大量的设计模式对工程架…...
【16.整数转罗马数字】
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...
前端小技巧
1.html 1.1 网站自动刷新 应用场景: 网页定期自动刷新(现在基本淘汰了,采用ajax);自动跳转到指定页面,这个自动跳转的好处就是不需要JS调用,属于纯html网页自动跳转 v7-网站自动刷新 你可以…...
Servlet2.0
文章目录更方便的部署方式安装插件使用插件验证程序常见访问出错的解决方案404错误405错误500错误空白页面无法访问此网站在文章 TomcatServlet初识中,我们通过七个大的步骤才可以完成一个简单的Servlet程序,这个过程无疑是非常繁琐的,那么我…...
【c++】继承
目录 一、继承的表现 子类对父类成员的访问权限 二、父类与子类之间的相互赋值 三、继承的作用域 如果是父类和子类构成隐藏呢? 四、子类的成员函数怎么写 1.default构造函数 2.析构函数 所以析构函数不需要我们显式调用。 五、继承与友元函数 六、继承与静…...
minio安装配置和使用(二)客户端安装
安装minio客户端mcli 命令如下: dnf install https://dl.minio.org.cn/client/mc/release/linux-amd64/mcli-20230128202938.0.0.x86_64.rpm 安装完成,在/usr/local/bin/下新增了mcli命令 mcli是对minio进行管理的命令。功能丰富, 基本格式…...
【如何使用Arduino设置GRBL和控制CNC机床】
【如何使用Arduino设置GRBL和控制CNC机床】 前言1. 什么是GRBL?2. 所需硬件3. 如何安装GRBL4. GRBL 配置5. GRBL 控制器5.1 如何使用通用 G 代码发送器5.2 波特率5.3 电机方向5.4 步进比例系数5.5 限位开关5.6 数控机床的归位设置6. 结论前言 如果您正在考虑或正在制造自己的…...
项目测试——博客系统
文章目录项目测试——博客系统项目简介项目功能测试计划web自动化测试1. 测试用例2.web自动化测试说明项目测试——博客系统 项目简介 博客系统主要分为8大模块,分别是注册页,登录页,编辑页,修改页,个人主页…...
【C习题】经典数组与指针面试题(万字)
文章目录一. 一维数组二.字符数组三.字符指针四.二维数组五.指针笔试题一. 一维数组 首先说明:需熟记以下三个规则。 规则1.&数组名指的是取出整个数组的地址。 规则2.数组名被单独放在sizeof内部,计算的是整个数组的大小。 说明:这里的单…...
【ArcGIS Pro二次开发】(13):ProWindow的用法
ProWindow是ArcGIS Pro SDK中的一个WPF控件,具有以下特点: 可扩展性:ProWindow提供了丰富的API和样式,可以轻松地扩展和自定义ArcGIS Pro应用程序的UI。 可定制性:ProWindow支持多种UI控件和布局方式,可以…...
HTML/CSS/JS 基本语法
前端一、HTNL1、文件结构2、文本标签(1)块元素:div(2)行内元素:span(3)格式标签3、图片、音频、视频(1)图片(2)音频< audio >&a…...
对于从事芯片行业的人来说,有哪些知识是需要储备的?
近两年芯片行业大火,不少同学想要转行,却不知道该如何下手,需要学习哪些基础知识,下面就来看看资深工程师怎么说? 随着工艺的发展,芯片肯定是尺寸越来越小,至于小到什么样的程度是极限…...
测试场景设计
测试场景设计 又叫做场景法。其实对于场景法是测试用例中面临最多的,但是这种模式不是很容易总结,有时候是基于经验,有时候是我们对系统的了解。所以在这种情况下,我们强硬的用场景法对其进行规范。 场景法原理 现在的软件几乎…...
《重构》增强代码可读性
文章目录重构原则何为重构为何重构何时重构重构会影响性能吗实例原始类进行重构分解statements方法提取函数搬移函数提炼“积分计算”功能去除临时变量(以查询取代临时变量)运用多态取代与价格相关的条件逻辑代码迁移Movie类Price类 状态模式搬移函数以多…...
数据分析自学路线
数据分析作为近几年火起来的IT技术岗位,在大数据时代的浪潮下迅速发酵膨胀,席卷了众多互联网企业,漫延到了金融、教育、医疗、消费等传统行业,在新经济领域也有重要作用,比如人工智能、新能源、电子芯片、企业数字化服…...
蓝桥杯C++组怒刷50道真题
🌼深夜伤感网抑云 - 南辰Music/御小兮 - 单曲 - 网易云音乐 🌼多年后再见你 - 乔洋/周林枫 - 单曲 - 网易云音乐 50题才停更,课业繁忙,有时间就更,2023/3/14/15:06写下 目录 👊填空题 🌼一…...
【期末小作业】HTML、CSS前端静态网页
分享一个可以“趁别人喝咖啡的功夫“”写的一个静态网页,纯纯练手小项目,适合前端刚入门的小白练练手。 前端练手静态页面 实现效果图展示 CSS代码 HTML 代码 环境:VScode编辑器 语言:HTML 、CSS 一、实现效果图 仅仅通过…...
Windows逆向安全(一)之基础知识(二)
反汇编分析C语言 空函数反汇编 #include "stdafx.h"//空函数 void function(){}int main(int argc, char* argv[]) {//调用空函数function();return 0; }我们通过反汇编来分析这段空函数 函数外部 12: function(); 00401048 call ILT5(func…...
Python 基础教程【2】:条件语句和循环语句
本文已收录于专栏🌻《Python 基础》文章目录1、流程控制语句1.1 顺序语句1.2 条件语句1.2.1 if语句注意事项1.2.2 三元运算符1.2.3 自动类型转换1.3 循环语句1.3.1 while 循环1.3.2 for-in 循环1.3.3 for...else 循环1.3.4 break 和 continue 的区别2、实践——猜数…...
【React避坑指南】useEffect 依赖引用类型
前言 如果你是一个入行不久的前端开发,面试中多半会遇到一个问题: 你认为使用React要注意些什么? 这个问题意在考察你对React的使用深度,因为沉浸式地写过一个项目就会发现,不同于一些替你做决定的框架,“…...
手机网站建设北京/综合性b2b电子商务平台网站
神经网络权重初始化--容易忽视的细节为什么要初始化kaiming初始化方法由来代码实现PReLu的使用后话禁止转载!! 为什么要初始化 神经网络要优化一个非常复杂的非线性模型,而且基本没有全局最优解,初始化在其中扮演着非常重要的作…...
怎么做一淘宝客网站/网址注册
局域网 ARP 欺骗原理详解 ARP 欺骗是一种以 ARP 地址解析协议为基础的一种网络攻击方式, 那么什么是 ARP 地址解析协议: 首先我们要知道, 一台电脑主机要把以太网数据帧发送到同一局域网的另外一台主机, 它的底层是通过 48bit 的 Mac 地址来确定目的接口的, 但是我们在应用层是…...
做网站编辑的时候没保存怎么/建一个外贸独立站大约多少钱
a为A的列数 x:int,向量x的数据指针的地址 incx:int,x连续元素之间的步长 beta:int,用于执行乘操作的标量beta的数据指针地址 y:int,向量y的数据指针的地址 incy:int&…...
企业seo年度/河南智能seo快速排名软件
【解析题】保险规划的原则包括( )。【解析题】释迦牟尼悟出来的佛教四谛是苦、集、灭、道。()【解析题】数学发展史上一共有()次危机,都是数学的基本部分收到了质疑;但每一次危机,都引发了数学的思想解放。()【解析题】A、B两人都是同一个企业的职工,两人横向比较结…...
杭州市河道建设中心网站/百度关键词网站排名优化软件
在《JAVA通讯编程(一)——串口通讯》中讲述了如何采用JAVA进行串口通讯,我们采用的是引入RXTXComm.jar的方式,关于这个我有两点需要说明补充。 首先,现在的笔记本一般都不带串口,需要usb转串口之类的工具才…...
佛山专业网站制作/预防电信网络诈骗
直接接着上一篇Blog:[7] Routing networks: Adaptive selection of non-linear functions for multi-task learning (2017)Routing networks and the challenges of modular and compositional computation (2019)Conclusion:这篇文章和PathNet面对的问题比较接近&a…...