CCF 202006-1 线性分类器 bool变量一定要初始化

CCF202006-1 线性分类器 CCF202006-1 线性分类器题目代码 题目 线性分类器(line)   【题目描述】   考虑一个简单的二分类问题——将二维平面上的点分为A和B两类。   训练数据包含n个点,其中第i个点(1≤i≤n)可以表示为一个三元组(x,y,type),即该点的横坐标、纵坐标和类别。   在二维平面上,任意一条直线可以表示为 θ₀+θ₁x+θ₂y=0的形式,即由θ₀,θ₁,θ₂三个参数确定该直线,且满足θ₀,θ₁不同时为0。   基于这n个已知类别的点,我们想要在平面上找到一条直线作为一个线性分类器。具体来说, 阅读详情

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试数据:

9 3
1 1 A
1 0 A
1 -1 A
2 2 B
2 3 B
0 1 A
3 1 B
1 3 B
2 0 A
0 2 -3
-3 0 2
-3 1 1

思路:以第一组点的分类为参照。由于不确定AB上下的分类规则,所以额外设置一个type2,存储被直线分类的结果,并且与给定分类进行对比。

#include <iostream>
#include <vector>
using namespace std;

typedef struct Point
{
    int x;
    int y;
    char type;
    char type2;
}point;

int main()
{
    int n,m;
    vector<point> points;
    cin >> n >> m;
    for(int i=0;i<n;i++)
    {
        point p;
        cin >> p.x >> p.y >> p.type;
        points.push_back(p);
    }
    for(int j=0;j<m;j++)
    {
        bool flag = true;
        int c0,c1,c2;
        cin >> c0 >> c1 >> c2;     
        for(int i=0;i<n;i++)
        {
            long long c=c0+c1*points[i].x+c2*points[i].y;
            if(c<0) points[i].type2='A';
            else points[i].type2='B';             
            if((points[i].type!=points[0].type && points[i].type2==points[0].type2)||(points[i].type==points[0].type && points[i].type2!=points[0].type2))
            {
                  cout << "No" << endl;
                  flag = false;
                  break;
            }
        }
        if(flag) cout << "Yes" << endl;
    }
    return 0;
}

这道题卡了很久很久……
注意:题中并没有明确给出在直线上方还是下方是A,所以我们不能想当然地指定分类规则;于是,可以采用和第一个点的类型对比的方法
if((points[i].type!=points[0].type && points[i].type2points[0].type2)||(points[i].typepoints[0].type && points[i].type2!=points[0].type2))

公式出不用long long也是可以的,可以直接如下比较

if(c0+c1*points[i].x+c2*points[i].y<0) points[i].type2='A';

二刷:以相邻的两个点作为对比,分类规则不一则说明无法很好地分类。

#include <iostream>
struct point{
	int x,y;
	char type;
};
bool issame(int a,int b,int c,point p1,point p2)
{
	if((a+b*p1.x+c*p1.y>0&&a+b*p2.x+c*p2.y>0)||(a+b*p1.x+c*p1.y<0&&a+b*p2.x+c*p2.y<0))
	{
		return true;
	}
	else 
	    return false;
}
using namespace std;
int main()
{
	int n,m,a,b,c;
	cin >> n >> m;
	point p[n];
	bool result[m];
	for(int i=0;i<n;i++)
	{
		cin >> p[i].x >> p[i].y >> p[i].type;
	}
	for(int j=0;j<m;j++)
	{
		cin >> a >> b >> c;
		bool no=false;
		for(int i=0;i<n-1;i++)
		{
			if((issame(a,b,c,p[i],p[i+1])&&(p[i].type!=p[i+1].type))||(!issame(a,b,c,p[i],p[i+1])&&(p[i].type==p[i+1].type)))
			{
				//cout << "No" << endl;
				no=true;
				break;
			}	
		}
		//if(j==2) cout << "no is " << no << endl;
		if(no)
		    result[j]=false;
		else
		    result[j]=true;
	}
	for(int i=0;i<m;i++)
	{
		if(result[i])
			cout << "Yes" << endl;
		else 
		    cout << "No" << endl;
	}
	return 0;
} 

注意:bool no=false;一定要初始化!

CCF计算机软件能力认证试题练习:202006-1 线性分类器 线性分类器 来源:CCF 标签: 参考资料: 相似题目: 题目 考虑一个简单的二分类问题——将二维平面上的点分为A 和B 两类。 训练数据包含 n 个点,其中第 i 个点(1 ≤ i ≤ n)可以表示为一个三元组 (xix_{i}xi​, yiy_{i}yi​, typeitype_{i}typei​),即该点的横坐标、纵坐标和类别。 在二维平面上,任意一条直线可以表示为θ0+θ1x+θ2y=0θ_{0} + θ_{1}x + θ_{2}y = 0θ0​+θ1​x+θ2​y=0的形式,即由 θ0θ_{ 阅读详情

相关推荐

CCF历年真题整理【已更新至202104】

说明:本文持续更新,若长时间未更新,请评论催催我。 以下题目均来自cspro.org,点击进入测试页面,侵删歉。 部分题目我已经解决,并给出参考代码。然而有些我还没有尝试解决,但先把题目贴给大家,大家可以自行去官网练习。 如果对我的解法有疑问,可以联系我一起交流学习。CCF交流学习QQ群:696037138 需要了解CCF的常见问题,请看这篇博客:CCF考前必看(最后更新时间:2019.10.03...

WINGREZ‘S BLOG 12万+

CCF 202006-1 线性分类器 100分 31ms

题目废话太多,简化如下。 题意 在二维坐标系上有n个点,每个点有两种类型A或B。给定一条线,问这条线是否能把平面上所有的点分为A、B两部分。 输入 第一行两个数:点的个数n,及查询的次数m 接下来n行,每行3个数,代表点的x轴位置,y轴位置,以及点的类型type。 接下来m行,每行3个数,代表线的三个参数。 输出 输出m行,对应m次查询。 若可分割两区域,输出"Yes",否则输出"No"。 AC代码 c++11 #include<iostream> #include<unordered_.

宋旭升的博客 2937

单细胞实战之数据净化三部曲:细胞周期校正、双胞体剔除与RNA污染清理——技术解析与实战指南

本文深入解析单细胞数据分析中至关重要的数据净化步骤,即细胞周期校正、双胞体剔除与RNA污染清理。通过实战代码演示与原理剖析,指导读者如何有效识别并去除技术噪音,从而获得更纯净、可靠的数据,为后续的细胞分群、差异表达等高级分析奠定坚实基础。

weixin_29274337的博客 204

CCF 202006-1 线性分类器

线性分类器 来源:CCF 标签: 参考资料: 相似题目: 题目 考虑一个简单的二分类问题——将二维平面上的点分为A 和B 两类。 训练数据包含 n 个点,其中第 i 个点(1 ≤ i ≤ n)可以表示为一个三元组 (xi xi​, yiyi​, typeitypei​),即该点的横坐标、纵坐标和类别。 在二维平面上,任意一条直线可以表示为θ0+θ1x+θ2y=0θ0​+θ1​x+θ2​y=0的形式,即由 θ0θ0​、θ1θ1​ 和 θ2θ2​ 三个参数确定该直线,且满足 θ1θ1​、θ

人生如梦,浮华一瞬间的专栏 426

时序数据库避坑指南:TDengine与IoTDB在车联网场景的7个关键对比

本文对比了时序数据库TDengine与IoTDB在车联网场景下的7个关键差异,包括数据模型设计、边缘-云端协同能力、车规级函数库、存储压缩算法等。通过真实案例和性能测试,帮助企业在新能源汽车大数据处理中选择合适的时序数据库,优化存储成本和实时告警性能。

rust6ferris的博客 452

第十五届蓝桥杯省赛C/C++B组H题【拔河】题解(AC)

由于枚举三个点肯定会超时,所以只能枚举两个点,我们尝试枚举第一个区间。的复杂度,需要找出右区间中和左区间的和最相近的值,可以考虑使用。一开始,我们将所有可能的右区间的区间和,都插入。做法同上,用前缀和优化数组求和的过程。的数组和差值最小是多少,其中。递增进行枚举左区间,当。的数组,求两个子数组。为左端点的区间的和。

一只大采集~ 5283

CCF 202006-1 线性分类器 CCF 202006-2 稀疏向量

CCF 202006-1 线性分类器 思路 代码实现 CCF 202006-2 稀疏向量 思路 代码实现

weixin_39096053的博客 655

OSMDroid 切换地图不更新的问题

用OSMDroid加载Google地图的时候 需要有按钮切换不同图层的地图,如果发现调用了mMapView.setTileSource(ITileSource aTileSource)方法的时候发现地图View没有更新的话,可能是因为两个实例化TileSource对象其子类BitmapTileSourceBase这个类的aName成员变量值一样导致的地图在setTileSource出现不更新问题,...

godoge的博客 1039

ccf真题 202006-1 线性分类器

样例(文本): 9 3 1 1 a 1 0 a 1 -1 a 2 2 b 2 3 b 0 1 a 3 1 b 1 3 b 2 0 a 0 2 -3 -3 0 2 -3 1 1 #include<iostream> using namespace std; struct point{ int x; int y; char type; int record; }; int main(){ int n,m; cin>>n>>m; point p[n]; f...

wen_wan_sheng的博客 305

Android 跨进程通信-(一)Binder概念引入

前言 主要对Android中的跨进程通信进行总结下,这篇先梳理下里面的涉及的一些概念 一 多进程 1.进程与线程 进程:系统中正在运行的一个应用程序,某个程序一旦运行就是一个进程,是资源分配的最小单位; 线程:程序执行的最小单位,包含在进程中,一个进程可以包含多个线程。 2.Android应用中的多进程 (1)dalivk虚拟机 Android系统的底层任务管理以及驱动都是基于Linux系统。一个Android系统其实就是一个Linux系统,通过adb shell进入连接的手机,就可以看到Li

nihaomabmt的专栏 1103

海康威视工业相机SDK二次开发实战:多相机同步采集与图像存储

本文详细介绍了海康威视工业相机SDK二次开发实战,包括多相机同步采集与图像存储的优化方案。通过MVS软件搭建开发环境,实现硬件与软件触发同步采集,并提供高效的图像存储管理技巧,帮助开发者提升工业视觉项目的效率与稳定性。

weixin_29168813的博客 666

第19 次 CCF CSP 认证 202006-1 线性分类器(line)

#include<iostream> using namespace std; struct point { int x; int y; char type; }; int main() { //n点,m查询 int n,m;cin>>n>>m; point t[n]; for(int i=0;i<n;i++) { cin>>t[i].x>>t[i].y>>t[i].type; }//给出点的分布 .

海棠的博客 1082

TripoSR: Fast 3D Object Reconstruction from a Single Image 论文阅读

模型的主要参数,如变换器的层数、三平面的维度、NeRF模型的具体细节和主要训练配置,在表1中详细说明。TripoSR的算法流程结合了先进的数据处理、模型设计和训练技术,使其能够在不到0.5秒的时间内从单张图像中快速生成详细的3D网格。总体而言,TripoSR是一个强大的3D重建工具,它在速度和质量上都表现出色,但也需要考虑到其对计算资源的需求和在处理极端复杂场景时可能遇到的挑战。:通过精心策划的训练数据集和多样化的数据渲染技术,TripoSR提高了模型的泛化能力和对真实世界图像的适应性。

Christo的博客 1946

ccf 202006-1 线性分类器

#include <iostream> using namespace std; int a[1001][3]; int b[21][3]; int m ,n; /* 9 3 1 1 A 1 0 A 1 -1 A 2 2 B 2 3 B 0 1 A 3 1 B 1 3 B 2 0 A 0 2 -3 -3 0 2 -3 1 1 */ bool judge(int bIndex) { bool flag1 = true, flag2 = true; int m1, n1; for (in..

人总是要有梦想的QAQ的博客 215

汽车OTA 测试用例

汽车OTA 测试用例

天赐好车的博客 973

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CCF 202006-1 线性分类器(Python满分)

CCF 202006-1 线性分类器(Python满分) 题目描述:CCF官网 202006-1 线性分类器 满分代码(Python) n,m = map(int,input().split()) #'A' 65 #'B' 66 b = [] count_A = 0 count_B = 0 for i in range(n): a = list(input().split()) a[0] = int(a[0]) a[1] = int(a[1]) a[2] = ord(a[2]

渣渣庆的小白学习博客 461

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CCF_202006-1试题及答案(Java )

题目 分析 不用担心时间和空间,直接代入计算就行。 代码 import java.util.Scanner; public class t1 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sca=new Scanner(System.in); String s=sca.nextLine(); String[] sa=s.split(" ");

tylz970408的博客 726

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

CCF202006-1线性分类器

太久没做题,手好生呀 实在不明白CCF为啥要把题目做成这种影印版的PDF,没法复制测试案例,还看不清楚 就问下这个 直接看难道不是1e8??? using namespace std; #include<bits/stdc++.h> const int maxn=1e3; int x[maxn],y[maxn],z[maxn]; char tp[maxn]; int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i

pickoak的博客 325

CCF 202006-1 线性分类器

代码1:正常思路+STL /*线性分类器*/ #include <iostream> #include <vector> using namespace std; typedef long long LL; //此处是关键 struct point{ int xn, yn; char c; }; vector<point> a; //存储A类点 vector<point> b; //存储B类点 int main() { int n, m, cnta

哈密瓜味的猪 861

CCF-202006-1-线性分类器

题目:http://118.190.20.162/view.page?gpid=T105 判断点在直线两侧:将点带入直线>0,<0 #include <bits/stdc++.h> using namespace std; struct Node { int x,y; char type; }; int main() { int n,m; cin>>n>>m; Node node[n]; for(int i=0

weixin_43846587的博客 416

第 19 次 CCF CSP 认证 202006-1 线性分类器(line)

这里写目录标题【题目描述】【输入格式】【输出格式】【样例 1 输入】【样例 1 输出】【样例 1 解释】【子任务】思路分析:C++代码: 【题目描述】 考虑一个简单的二分类问题——将二维平面上的点分为A 和B 两类。 训练数据包含 n 个点,其中第 i 个点(1≤i≤n)可以表示为一个三元组 (xi,yi,typei), 即该点的横坐标、纵坐标和类别。 在二维平面上,任意一条直线可以表示为 θ0 + θ1x+ θ2y = 0 的形式,即由 θ0、θ1 和 θ2 三个参数确定该直线,且满足 θ1、θ2 不同时

Running Snail 5562

CCF CSP 202006-1 线性分类器(line)满分代码 Python

一、题目背景 线性分类器(line) 【题目描述】 考虑一个简单的二分类问题——将二维平面上的点分为A 和B 两类。 训练数据包含 n 个点,其中第 i 个点(1 ≤ i ≤ n)可以表示为一个三元组 (xi, yi, typei), 即该点的横坐标、纵坐标和类别。 在二维平面上,任意一条直线可以表示为 θ0 +θ1x +θ2y =0 的形式,即由 θ0、θ1 和 θ2 三个参数确定该直线,且满足 θ1、θ2 不同时为 0。 基于这 n 个已知类别的点,我们想要在平面上找到一条直线作为一个线性分类器。 具体

江南蜡笔小新 2562

CCF 模拟题 202006-1 线性分类器 Java 100分

CCF练习 202006-1 线性分类器 输出规范很重要题目心得完整代码 题目心得 这道题理解起来很简单,思路也比较清晰。简单说一下本人的解题思路: 1. 首先,我们在读入数据的时候,可以对于类型A和B进行处理,为其赋值,这样就可以将其转换为int类型 2. 其次,对于类型A和类型B的区别可以转换成将参数和点坐标代入等式左端时,得到的结果和零的大小比较。 3. 接着,我们需要自己定义一下判定正确的规则,将规则转换为代码语言。思路: 判定正确,即,判定结果该点为A类型,实际上该点也是A类型,或者,判定结果该点

qq_44654127的博客 336

CCF202006-1线性分类器(C语言100分)

#include <stdio.h> #define DOT_MAX 1000 #define LINE_MAX 20 struct Dot { int x; int y; char type; }dot[DOT_MAX]; struct Line { int t0; int t1; int t2; }line[LINE_MAX]; int is_perfect_depart(int dot_num, int t0, int t1, int t2, int state) {

weixin_44589540的博客 1013

ccf 201912-1 报数(100分)

提交后得100分的C++程序如下: #include<iostream> using namespace std; int a=0,b=0,c=0,d=0; bool juge(int n) { while(n) { if(n%10==7) return true; n/=10; } return false; } int main() { int...

jinduo16的博客 819

CCF计算机软件能力认证202006-1线性分类器(C语言版)

ccf-csp计算机软件能力认证202006-1线性分类器(C语言版) 题目内容: 解题思路:   首先思考数据的存取,对于每个点的数据因为要进行运算,所以我们通过先存后用的方法,由于包含一个字符故此处采用结构体的方法。对于每条线段,我们直接进行计算即可,所以采用边存边用的方法,通过数组每读取一条线的三个值就算出一个结果。   第二步,思考解法。对于每一个点,我们通过直线的运算后,可以分为四类,类型为A且a+bx+cy>0(A1),类型为A且a+bx+cy<0(A0),类型为B且a+b

qq_46177519的博客 1275
上一篇: CCF 202009-2 风险人群筛查 C++
下一篇: CCF 201912-1 报数 C++
cloudless_sky
博客等级 码龄8年 106粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值