【CSP试题回顾】202006-1-线性分类器(优化)

CSP-202006-1-线性分类器

解题思路

1.数据结构

  • 代码使用了一个名为 MyPoint 的结构体来表示空间中的点。这个结构体包含三个属性:xy 表示点的坐标,type 表示点的类型。点的类型用整数表示,类型 ‘A’ 用 0 表示,类型 ‘B’ 用 1 表示。这种方式简化了后续的逻辑判断。

2.输入处理

  • 程序首先读取两个整数 nmn 是给定的点的总数,m 是需要处理的查询(即直线)的总数。
  • 对于每一个点,程序通过输入读取其坐标 (x, y) 和类型 (type)。类型是以字符形式给出的,在存储到 MyPoint 结构体中时,会转换为整数(‘A’ 转换为 0,‘B’ 转换为 1)。
  • 所有这些点被存储在一个名为 listvector<MyPoint> 容器中,便于后续遍历和分类。

3.处理查询

  • 对于每个查询(即每条直线),程序读取三个整数 t0t1t2,这些整数定义了直线的方程 t0 + t1 * x + t2 * y = 0
  • 程序初始化两个集合 set0set1,用于记录被当前直线分隔的两边各自存在哪些类型的点。
  • 程序遍历所有点,对于每个点,根据直线方程计算 t0 + t1 * x + t2 * y 的值:
    • 如果结果大于0,表示该点在直线的一侧,程序将这个点的类型添加到 set0 中。
    • 如果结果小于或等于0,表示该点在直线的另一侧,程序将这个点的类型添加到 set1 中。
  • 这样,每个集合中包含了相应侧的点的类型,可以有0、1或2种类型(因为点的类型只有 ‘A’ 和 ‘B’)。

4.输出结果

  • 在对所有点进行分类后,程序检查 set0set1 中包含的点的类型。
  • 如果任一集合中同时包含类型 ‘A’ 和类型 ‘B’ 的点(即该集合的大小等于2),这意味着当前的直线不能将两种类型的点完全分开,因此程序输出 “No”。
  • 如果每个集合中都只包含一种类型的点(或者一个集合为空),这意味着当前直线能够将类型 ‘A’ 和类型 ‘B’ 的点分开,因此程序输出 “Yes”。

完整代码

#include <iostream>
#include <vector>
#include <set>
using namespace std;struct MyPoint
{long long x, y, type; // A-0 B-1
};long long n, m, x, y, t0, t1, t2;
char type;
vector<MyPoint>list;int main() {cin >> n >> m;for (size_t i = 0; i < n; i++){cin >> x >> y >> type;if (type == 'A') list.push_back({ x,y,0 });else if (type == 'B') list.push_back({ x,y,1 });}for (size_t i = 0; i < m; i++){cin >> t0 >> t1 >> t2;set<long long>set0, set1;for (auto& it : list){if (t0 + t1 * it.x + t2 * it.y > 0) set0.insert(it.type);else set1.insert(it.type);}if (set0.size() == 2) cout << "No\n";else if (set1.size() == 2) cout << "No\n";else cout << "Yes\n";}return 0;
}

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

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

相关文章

使用U盘重装CentOS7系统

下载CentOS7 系统镜像 制作启动U盘之前&#xff0c;首先要准备一个系统镜像&#xff0c;这里我在CentOS官网直接下载镜像文件&#xff1a; CentOS官网 为了保证下载速度&#xff0c;这里我使用阿里云镜像下载&#xff1a; 阿里云镜像 如上图所示&#xff0c;我需要一个带UI界…

ES 进阶知识

索引Index 一个索引就是一个拥有几分相似特征的文档的集合。比如说&#xff0c;你可以有一个客户数据的索引&#xff0c;另一个产品目录的索引&#xff0c;还有一个订单数据的索引。一个索引由一个名字来标识&#xff08;必须全部是小写字母&#xff09;&#xff0c;并且当我们…

pytorch代码中optimizer.step()和scheduler.step()有什么区别

optimizer.step()通常用在每个patch_size之中(一个patch_size的数据更新一次模型参数)&#xff0c;而scheduler.step()通常用在epoch里面,但是不绝对&#xff0c;可以根据具体的需求来做。只有用了optimizer.step()&#xff0c;模型才会更新&#xff0c;而scheduler.step()是对…

【机器学习】无监督学习算法之:K均值聚类

K均值聚类 1、引言2、K均值聚类2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.4.1 距离计算公式2.4.1 中心点计算公式 2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; K均值聚类 我不懂&#xff0c;能不能给我讲一讲&#xff1f; 小鱼&#xff1a;行&#xf…

latex在写算法`\For` 和 `\EndFor` 以及 `FOR` 和 `\ENDFOR` ,报错Undefined control sequence.

这里写目录标题 1. 错误原因2. 进行改正3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太一样&#xff0c;不能直接套用总结 1. 错误原因 我在算法中使用\For&#xff0c;\EndFor 2. 进行改正 换成FOR&#xff0c;\ENDFOR 3. 爱思唯尔期刊与施普林格期刊对于算法的格式不太…

cdp集群yarn组件ResourceManager无法启动问题记录

前言&#xff1a;cdp集群装了Kerberos认证&#xff0c;在进行权限集成时集群所有组件高可用状态失效&#xff0c;yarn组件ResourceManager停止 查看ResourceManager组件日志&#xff0c;报错如下&#xff1a; Error starting ResourceManager org.apache.hadoop.service.Servi…

CMake学习笔记(一)一个最简单的CMakeLists嵌套示例

目录 1 mkdir project_macro 2 在project_marco中建立CMakeLists.txt 3 建立专门的src文件夹 4 在src中添加main.cpp和CMakeLists.txt 5 回到project_macro目录&#xff0c;建立build文件夹 6 进入build 文件夹&#xff0c;开始cmake 7 在build文件夹里执行make指令 8 …

Softmax到底行还是列

对于二维张量&#xff0c;飞话不多说&#xff0c;直接看代码 input_tensor torch.tensor([[2,3,5],[2,2,2],[3,1,3]], dtypetorch.float32) # input_tensor torch.rand((1000,1000,100)) print(input_tensor) print("*"*40) print("沿着dim1&#xff0c;计算…

URL 中 pathname 的命名规则

URL 中 pathname 的命名规则 pathname 是 URL 中标识特定资源或页面的路径部分。它通常遵循以下命名约定&#xff1a; 使用小写字母和连字符&#xff1a;路径名应使用小写字母和连字符&#xff08;-&#xff09;分隔单词。避免使用大写字母、下划线或其他特殊字符。使用描述性…

直播行业网络安全建设

一、引言 直播行业近年来蓬勃发展&#xff0c;吸引了大量用户和资本的关注。然而&#xff0c;随着行业的壮大&#xff0c;网络安全问题也日益凸显。构建一个安全、稳定的直播行业网络对于保障用户权益、维护行业秩序具有重要意义。本文将详细探讨直播行业安全网络的构建与保障…

蓝桥杯算法基础(28)11道关于字符串的小题

判断字符串有无重复字符 public class Different{public boolean checkDifferent(String iniString){if(StringUtils.isEmpty(iniString)){//判断是否为空return true;}int[] flagnew int[128];//ASCII码128个字符//扫描字符串for(int i0;i<iniString.length();i){int c(int…

通俗易懂:MySQL如何支持JSON数据类型?提供一个使用案例。

MySQL从5.7.8版本开始正式引入了原生的JSON数据类型&#xff0c;用来支持JSON格式数据的存储、查询和操作。MySQL的JSON数据类型提供了以下几个关键特性&#xff1a; 1. 存储MySQL中的JSON列可以存储符合JSON格式规范的数据&#xff0c;存储的内容会被MySQL转换为内部格式&…

MongoDB知识

1、部署MongoDB &#xff08;1&#xff09;new好一个mongo文件之后执行 &#xff08;出现mongodb.key&#xff09;记得放行端口 openssl rand -base64 666 > mongodb.key &#xff08;2&#xff09;放到一个docker-compose.yml之后docker-compose up -d执行 version: 3.…

C语言 结构体和联合体、解释C语言中的结构体及其用途。

一、结构体和联合体 结构体和联合体在C语言中都是重要的数据类型&#xff0c;但它们在使用和特性上有所区别。 结构体是由一批数据组合而成的结构型数据&#xff0c;由一组称为成员&#xff08;或称为域&#xff0c;或称为元素&#xff09;的不同数据组成&#xff0c;其中每个…

JavaSE系统性总结全集(精华版)

目录 1. 面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;详解 1.1 面向过程和面向对象的区别 1.2面向对象的三大特性 1.2.1 封装 1.2.2 继承 1.2.3 多态 1.2.4 方法重写和方法重载的区别&#xff08;面试题&#xff09; 1.2.5 访问权限修饰符分…

《自动机理论、语言和计算导论》阅读笔记:p5-p27

《自动机理论、语言和计算导论》学习第2天&#xff0c;p5-p27总结&#xff0c;总计23页。 一、技术总结 1.集合 (1)commutative law of union. (2)distribute law of union. 2.归纳法(induction) & 演绎法(deduction) (1)归纳法&#xff1a;从许多个别的事实或原理中…

代码随想录算法训练营第十六天| 104.二叉树的最大深度、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

系列文章目录 目录 系列文章目录104.二叉树的最大深度①递归法直接法(求深度&#xff0c;前序遍历)间接法&#xff08;求高度&#xff0c;后序遍历&#xff09; ②迭代法&#xff08;层序遍历中有&#xff09; 559.n叉树的最大深度①递归法间接法&#xff08;后序遍历求高度&am…

自动化脚本-滑动验证码识别登录

结果演示 滑块验证码登录 测试网站 提供各类型验证码识别验证&#xff0c;主要提供人机识别与验证服务 行为验证4.0-适应型验证码-滑动验证,点选验证,图片验证-极验GeeTest 代码实现 相关前置依赖可参考 自动化脚本-图片验证码识别登陆-CSDN博客 具体实现 # -*- coding: u…

优必选校招软件开发岗笔试Java题解

1、计算某天是星期几 输入一个年月日&#xff0c;计算出这个日期对应的是星期几 注意&#xff1a; 闰年 公元年分除以4不可整除&#xff0c;为平年。 公元年分除以4可整除但除以100不可整除&#xff0c;为闰年。 公元年分除以100可整除但除以400不可整除&#xff0c;为平年。 …

【卡梅德生物】哺乳动物细胞表达系统介绍

哺乳动物细胞表达系统是在哺乳动物细胞中生产重组蛋白的广泛使用的平台。哺乳动物细胞为蛋白表达提供了几个优势&#xff0c;包括进行复杂翻译后修饰的能力、蛋白质的正确折叠、将蛋白质分泌到细胞外环境中的能力等。哺乳动物细胞表达系统广泛用于生物技术和制药工业&#xff0…