【CSP试题回顾】201912-2-回收站选址

CSP-201912-2-回收站选址

关键点:时间复杂度

1.暴力枚举方法:

  • 暴力枚举方法会遍历二维空间中的每一个点,对于每一个点,检查它的四个直接邻居是否都是垃圾点,然后对于每一个满足条件的点,再检查它的四个对角邻居的垃圾点数量。这种方法的时间复杂度为 O ( N 2 ∗ M ) O(N^2 * M) O(N2M),其中 N 代表二维空间的大小,M 代表垃圾点的数量。这是因为你需要为每个可能的位置检查其周围的八个点是否为垃圾点。

2.优化思路:

  • 本代码采取的策略不是遍历整个二维空间,而是直接遍历垃圾点列表。对于每个垃圾点,代码只检查与这个特定垃圾点相关的邻居(直接和对角线邻居)。这种方法的时间复杂度是 O ( M 2 ) O(M^2) O(M2),其中 M 代表垃圾点的数量。这是因为对于每个垃圾点,你都在检查与它相邻的点是否也是垃圾点,而不是检查整个区域中的每个点。

解题思路

1.数据结构定义

  1. trashPoint 结构体

    • 它包含两个整数变量 xy,分别代表垃圾点在二维空间中的横坐标和纵坐标。
    • 重载的 == 运算符,使得可以直接比较两个 trashPoint 是否具有相同的位置。
  2. vector trashList:用于存储所有输入的垃圾点。

  3. vector pointGrade:用于记录每个等级(0到4对角邻居)的潜在垃圾处理站位置的数量。

2.代码解释:

  1. 输入处理

    • 代码首先从标准输入读取一个整数 n,表示垃圾点的数量。
    • 然后,它循环读取每个垃圾点的坐标 (x, y),并将每个点添加到 trashList 向量中。
  2. 逻辑处理

    • 如果垃圾点数量少于4,按照题目要求,不可能有任何适宜的垃圾处理站位置,因此输出五个0。
    • 如果垃圾点数量大于或等于4,代码进入主要的逻辑处理部分:
      • 对于 trashList 中的每个垃圾点,代码生成其四个直接邻居(上、下、左、右)和四个对角邻居的坐标。
      • 然后,它在 trashList 中搜索这些邻居点,计算直接邻居和对角邻居中垃圾点的数量。
      • 如果一个垃圾点的四个直接邻居都是垃圾点(即这个点周围有四个垃圾点),则它是一个潜在的垃圾处理站位置。
      • 根据这个位置对角相邻的垃圾点数量(0到4个),相应等级的计数增加。

完整代码

#include <iostream>
#include <vector>
using namespace std;struct trashPoint
{int x, y;bool operator==(const trashPoint& other) const {return x == other.x && y == other.y;}
};
vector<trashPoint>trashList;
vector<int>pointGrade(5);
int n, x, y;int main()
{cin >> n;for (int i = 0; i < n; i++){cin >> x >> y;trashList.push_back({ x,y });}if (n >= 4){for (auto& it : trashList){trashPoint n1({ it.x,it.y - 1 }), n2({ it.x,it.y + 1 }), n3({ it.x - 1,it.y }), n4({ it.x + 1,it.y });trashPoint g1({ it.x + 1, it.y + 1 }), g2({ it.x - 1,it.y - 1 }), g3({ it.x + 1,it.y - 1 }), g4({ it.x - 1,it.y + 1 });int findNeighbor = 0, findGrade = 0;for (auto& jt : trashList){if (jt == n1 || jt == n2 || jt == n3 || jt == n4) findNeighbor++;if (jt == g1 || jt == g2 || jt == g3 || jt == g4) findGrade++;}if (findNeighbor == 4) pointGrade[findGrade]++; // 找到建垃圾站的点it}for (auto& it : pointGrade) {cout << it << endl;}}else{for (int i = 0; i < 5; i++){cout << 0 << endl;}}return 0;
}

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud Ribbon 负载均衡服务调用

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第三篇&#xff0c;即介绍 Ribbon 负载均衡服务调用 二、概述 2.1 Ribbon 是什么 Spring Cloud Ribbon…

计算机网络—以太网接口和链路配置

目录 1.拓扑图 2.以太网交换机基础配置 3.配置手动模式的链路聚合 4.配置静态 LACP 模式的链路聚合 5.配置文件 1.拓扑图 2.以太网交换机基础配置 华为交换机接口默认开启了自协商功能&#xff0c;需要手动配置S1与 S2上G0/0/9和G0/0/10接口的速率。 首先修改交换机的设…

某准网招聘接口逆向之WebPack扣取

​​​​​逆向网址 aHR0cHM6Ly93d3cua2Fuemh1bi5jb20v 逆向链接 aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vc2VhcmNoP3BhZ2VOdW09MSZxdWVyeT1weXRob24mdHlwZT01 逆向接口 aHR0cHM6Ly93d3cua2Fuemh1bi5jb20vYXBpX3RvL3NlYXJjaC9qb2IuanNvbg 逆向过程 请求方式&#xff1a;GET 参数构成…

分享个好用的GPT网站

目录 一、背景 二、功能描述 1、写代码 2、联网查询 3、AI绘图 一、背景 我现在的开发工作都依靠ChatGPT&#xff0c;效率提升了好几倍。这样一来&#xff0c;我有更多时间来摸鱼&#xff0c;真是嘎嘎香~ ⭐⭐⭐点击直达 ⭐⭐⭐ 二、功能描述 1、写代码 import java.ut…

C++程序设计-练手题集合【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下C程序设计中的练手题&#xff0c;以供大家期末复习和考研复习的时候使用。 C程序设计系列文章传送门&#xff1a; 第一章 面向对象基础 第四/五章 函数和类和对象 第六/七/八章 运算符重载/包含与继承/虚函数…

力扣每日一题 将标题首字母大写 模拟 String API

Problem: 2129. 将标题首字母大写 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神题解 复杂度 ⏰ 时间复杂度: O ( n ) O(n) O(n) &#x1f30e; 空间复杂度: O ( n ) O(n) O(n) Code class Solution {public String capitalizeTitle(String title)…

蓝桥杯2019年第十届省赛真题-修改数组

查重类题目&#xff0c;想到用标记数组记录是否出现过 但是最坏情况下可能会从头找到小尾巴&#xff0c;时间复杂度O(n2)&#xff0c;数据范围106显然超时 再细看下题目&#xff0c;我们重复进行了寻找是否出现过&#xff0c;干脆把每个元素出现过的次数k记录下来&#xff0c;直…

vue+elementUI用户修改密码的前端验证

用户登录后修改密码&#xff0c;密码需要一定的验证规则。旧密码后端验证是否正确&#xff1b;前端验证新密码的规范性&#xff0c;新密码规范为&#xff1a;6-16位&#xff0c;至少含数字/字母/特殊字符中的两种&#xff1b;确认密码只需要验证与新密码是否一致&#xff1b; 弹…

数据库管理-第159期 Oracle Vector DB AI-10(20240311)

数据库管理159期 2024-03-11 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#xff09;1 其他distance函数2 实例演示使用其他函数寻找最近向量点函数变体简写语法 总结 数据库管理-第159期 Oracle Vector DB & AI-10&#xff08;20240311&#x…

Java中 常见的开源树库介绍

阅读本文之前请参阅------Java中 树的基础知识介绍 在 Java 中&#xff0c;有几种流行的开源树库&#xff0c;它们提供了丰富的树算法和高级操作&#xff0c;可以帮助开发者更高效地处理树相关的问题。以下是几种常见的 Java 树库及其特点和区别&#xff1a; JTree 特点…

CSS3的一些常用语句以及解释

margin和padding position static 该关键字指定元素使用正常的布局行为&#xff0c;即元素在文档常规流中当前的布局位置。此时 top, right, bottom, left 和 z-index 属性无效。 relative 该关键字下&#xff0c;元素先放置在未添加定位时的位置&#xff0c;再在不改变页面…

iconfont 字体应用

1、登录 打开阿里图标 https://www.iconfont.cn/ 2、选择心仪的图标制作 iconfont 字体。 3、图标全部选择入库之后&#xff0c; 点右上角的购物车。 添加到项目&#xff0c;是方便管理图标字体的。 也可以直接下载代码的 4、下载到本地之后&#xff0c;把里面的 iconfont.…

2024护网面试题精选(一)

0x00.基础漏洞篇 00-TOP10漏洞 1.SQL注入 2.失效的身份认证和会话管理 3.跨站脚本攻击XSS 4.直接引用不安全的对象 5.安全配置错误 6.敏感信息泄露 7.缺少功能级的访问控制 8.跨站请求伪造CSRF 9.实验含有已知漏洞的组件 10.未验证的重定向和转发 01-SQL注入漏洞 …

【IEEE列表会议】IEEE第三届信息与通信工程国际会议国际会议(JCICE 2024)

会议简介 Brief Introduction 2024年第三届信息与通信工程国际会议国际会议 (JCICE 2024) 会议时间&#xff1a;2024年5月10日-12日 召开地点&#xff1a;中国福州 大会官网&#xff1a;JCICE 2024-2024 International Joint Conference on Information and Communication Engi…

Humanoid-Gym 开源人形机器人端到端强化学习训练框架!星动纪元联合清华大学、上海期智研究院发布!

系列文章目录 前言 Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer GitHub Repository: GitHub - roboterax/humanoid-gym: Humanoid-Gym: Reinforcement Learning for Humanoid Robot with Zero-Shot Sim2Real Transfer 一、介…

flink实战--Flink任务资源自动化优化

背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…

Qt 绘制中的视口(setViewport)和窗口(setWindow)

重点 &#xff1a; 1.绘制&#xff08;QPainter&#xff09;可以设置视口&#xff0c;视口下设置窗口&#xff0c;而绘制的构件是以窗口为坐标系进行绘画。 2.先根据绘图设备的物理坐标系的矩形位置&#xff0c;设置视图视口setViewport&#xff0c;然后在以视口为区域去设置…

reids设计与实现(一)——数据结构

文章目录 1. 前言2. redis 动态字符串2.1. 字符串的数据结构&#xff1a;2.2. 剖析&#xff0c;length&#xff1b;2.3. 剖析&#xff0c;free&#xff1b;2.3. 使用c字符串函数&#xff1b; 3. redis 链表4. 字典5. 跳跃表6. 整数set&#xff08;intset&#xff09;6.1. 升级&…

弹性盒子布局 Flexbox Layout

可以嵌套下去 1.display 属性 默认行排列 <style>.flex-item{ height: 20px;width: 10px;background-color: #f1f1f1;margin: 10px;}</style> </head> <body> <div class"flex-container"><div class"flex-item">1&l…

maven项目引入私有jar,并打包到java.jar中

私有jar存放位置 maven依赖 <dependency><groupId>com.hikvision.ga</groupId><artifactId>artemis-http-client</artifactId><version>1.1.10</version><scope>system</scope><systemPath>${project.basedir}/s…