news 2026/5/1 7:32:49

1230 算法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1230 算法

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

// 读取输入:N(点位数量)、基地X0、Y0
int N = scanner.nextInt();
int x0 = scanner.nextInt();
int y0 = scanner.nextInt();

// 存储「最简斜率」的计数(键:斜率的最简分数形式,值:出现次数)
Map<String, Integer> directionMap = new HashMap<>();

for (int i = 0; i < N; i++) {
int xi = scanner.nextInt();
int yi = scanner.nextInt();

// 计算相对基地的偏移量
int dx = xi - x0;
int dy = yi - y0;

// 生成最简形式的方向标识
String direction = getReducedForm(dx, dy);

// 记录该方向
directionMap.put(direction, directionMap.getOrDefault(direction, 0) + 1);
}

// 不同方向的数量就是最小路线数
System.out.println(directionMap.size());

scanner.close();
}

// 将(dx, dy)约分为最简分数形式,返回唯一标识字符串
private static String getReducedForm(int dx, int dy) {
if (dx == 0 && dy == 0) {
return "0,0"; // 理论上不会出现(基地本身不是拾取点)
}

// 计算最大公约数(GCD)
int gcd = gcd(Math.abs(dx), Math.abs(dy));
if (gcd != 0) {
dx /= gcd;
dy /= gcd;
}

// 统一符号:让分子为正(若分子为0,让分母为正),避免(-1,1)和(1,-1)被误判为不同方向
if (dx < 0) {
dx = -dx;
dy = -dy;
} else if (dx == 0) {
if (dy < 0) {
dy = -dy;
}
}

return dx + "," + dy;
}

// 计算两个数的最大公约数(欧几里得算法)
private static int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 13:58:09

【课程设计/毕业设计】基于SpringBoot的房屋租赁系统的设计与实现房屋搜索、租用房屋、出租房屋【附源码、数据库、万字文档】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/5/1 7:21:36

Java计算机毕设之基于SpringBoot的房屋租赁系统的设计与实现基于SpringBoot+Vue房屋租赁系统的设计和实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/31 11:30:43

开发API接口方便高级用户自动化调用资源

开发API接口方便高级用户自动化调用资源 在AI研发日益工程化的今天&#xff0c;一个常见的痛点浮出水面&#xff1a;研究人员和工程师频繁面临“环境不一致”、“任务无法复现”、“资源申请流程繁琐”等问题。手动操作不仅效率低下&#xff0c;还容易引入人为错误。更糟糕的是…

作者头像 李华
网站建设 2026/4/23 14:25:44

Miniconda-Python3.10镜像内置Jupyter,开箱即用的AI实验环境

Miniconda-Python3.10镜像内置Jupyter&#xff0c;开箱即用的AI实验环境 在高校实验室、企业算法团队或云平台项目中&#xff0c;你是否经历过这样的场景&#xff1a;新成员入职第一天&#xff0c;花了整整两天才把Python环境配好&#xff1b;科研论文复现时&#xff0c;代码在…

作者头像 李华
网站建设 2026/4/27 6:31:16

微爱帮监狱服刑人员家属往来信件风险提醒技术方案

一、实时风险检测引擎 class RiskDetectionEngine:"""信件内容实时风险检测"""def __init__(self):self.models {safety: SafetyModel(),emotion: EmotionAnalysis(),compliance: ComplianceChecker()}self.rules PrisonRulesDatabase()def a…

作者头像 李华
网站建设 2026/5/1 4:22:33

C++高性能日志库开发实践

来源&#xff1a;程序员老廖 1. 背景与目标 1.1 为什么要做高性能日志 日志是所有线上系统的“黑匣子”&#xff0c;但日志写入如果阻塞业务线程&#xff0c;会把 I/O 延迟 直接放大到业务请求上。 高并发下&#xff0c;同步写日志常见问题&#xff1a; 频繁系统调用&#…

作者头像 李华