news 2026/10/28 2:04:27

算法--桶思想

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法--桶思想

一、谐距下标对

import java.util.*; // 类名必须为 Main,符合题目要求 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 读取数组长度n,用int即可(题目约束n≤1e5,未超出int范围) int n = in.nextInt(); // 1. Map的键(ai - i)改为Long,值(频次)也改为Long(避免频次累计溢出) Map<Long, Long> countMap = new HashMap<>(); for (int i = 0; i < n; i++) { int ai = in.nextInt(); // ai≤1e5,用int安全,后续转换为Long计算 // 2. 计算特征值key:强制转换ai为Long,避免ai - i溢出 Long key = (long) ai - i; // 3. 频次累计:用Long存储频次,getOrDefault默认值0L(Long类型) countMap.put(key, countMap.getOrDefault(key, 0L) + 1L); } // 4. 结果变量count改为Long,确保累加过程不溢出 Long count = 0L; // 5. 遍历Map的值(Long类型频次),计算组合数 for (Long freq : countMap.values()) { // 组合数公式:freq*(freq-1)/2,所有操作数均为Long,避免溢出 count += freq * (freq - 1) / 2; } // 输出结果(Long类型可直接打印) System.out.println(count); } }

运行结果

二、最大 FST 距离

import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.nextLine(); // 消耗掉换行符 String[] parts = sc.nextLine().split(" "); long[] A = new long[n]; for (int i = 0; i < n; i++) { A[i] = Long.parseLong(parts[i]); } // 计算x = i² + A_i²的最大最小值 long maxX = Long.MIN_VALUE; long minX = Long.MAX_VALUE; // 计算y = i² - A_i²的最大最小值 long maxY = Long.MIN_VALUE; long minY = Long.MAX_VALUE; for (int i = 0; i < n; i++) { // 注意索引是从1开始的 long index = i + 1; long indexSq = index * index; long aSq = A[i] * A[i]; long x = indexSq + aSq; long y = indexSq - aSq; maxX = Math.max(maxX, x); minX = Math.min(minX, x); maxY = Math.max(maxY, y); minY = Math.min(minY, y); } // 最大距离是两个差值中的较大者 long maxDist = Math.max(maxX - minX, maxY - minY); System.out.println(maxDist); } }

运行结果

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

VScode断点调试

在有.net SDK和vscode插件C# dev kit的情况下添加一下连个文件.vscode/launch.json{"version": "0.2.0","configurations": [{// 默认&#xff1a;连旧栈 mysql localhost:3306&#xff08;老数据&#xff09;"name": "BlogServe…

作者头像 李华
网站建设 2026/10/28 2:03:15

DDD(领域驱动设计)篇二:DDD 和三层架构到底差在哪?

DDD&#xff08;领域驱动设计&#xff09;篇一&#xff1a;DDD 到底在解决什么问题&#xff1f; 1、先摆结构&#xff1a;两个架构长什么样 你熟悉的三层架构&#xff0c;和 mpc 中台&#xff08;我们系统里的中台叫mpc&#xff09;实际的 DDD 分层&#xff0c;长这样&#xf…

作者头像 李华
网站建设 2026/10/28 2:02:52

Visual Studio 动态链接库(DLL)生成完全指南

一、前言 一个完整的 DLL 工程必须满足两个核心条件&#xff1a; 正确的项目类型配置&#xff1a;必须生成 .dll 文件&#xff0c;而不是 .exe。显式的符号导出&#xff1a;必须将需要公开的函数/类声明为导出&#xff0c;否则外部程序无法链接。 本文将从项目创建、代码编写…

作者头像 李华
网站建设 2026/10/28 2:02:34

产品经理的“产品感“到底是什么?一套可训练的判断框架

你一定听过这样的评价&#xff1a;“这个PM产品感不错。“但真要追问"产品感到底是什么”&#xff0c;大多数人只能含糊地说"就是感觉对”。 产品感不是玄学&#xff0c;而是一种可被拆解、可被训练的判断力。 本文把它拆成三个构成&#xff0c;并给出一套日常可落地…

作者头像 李华
网站建设 2026/10/28 2:02:23

aubo学习:realsense手眼标定

手眼标定到底在做什么&#xff1f;手眼标定需要计算相机与机械臂末端之间的固定空间关系&#xff1a;base_link&#xff1a;机械臂基座坐标系wrist3_Link&#xff1a;机械臂末端附近的坐标系camera_link&#xff1a;相机主体坐标系camera_color_optical_frame&#xff1a;相机彩…

作者头像 李华