CSP-202006-2-稀疏向量

news2024/11/22 16:07:50

CSP-202006-2-稀疏向量

【60分思路-暴力枚举】

  • 显然u[100000000], v[100000000]过不了7,8,9,10的样例,但是思路也比较简单易懂,初学者可以参考
#include <iostream>
using namespace std;
int u[100000000], v[100000000];
long long inner;
int main() {
	int n, a, b;
	cin >> n >> a >> b;
	for (int i = 0; i < a; i++)
	{
		int index, value;
		cin >> index >> value;
		u[index] = value;
	}
	for (int i = 0; i < b; i++)
	{
		int index, value;
		cin >> index >> value;
		v[index] = value;

		if (u[index] != 0)
		{
			inner += (u[index] * v[index]);
		}
	}

	cout << inner;
	return 0;
}

【100分思路-暴力枚举】

稀疏向量由Vector结构体数组表示,每个Vector元素存储了向量中非零元素的索引(index)和值(value)。

解题思路

  • 点积计算: 使用两个指针ij分别遍历向量uv。只有当两个向量在相同索引位置上都有非零元素时,这些元素的乘积才会对最终的内积结果产生贡献。这一过程通过以下步骤实现:
    • 如果u[i].index == v[j].index,说明找到了两个向量在同一位置上的非零元素,它们的乘积应该被加到内积inner中。然后,同时增加ij的值,以继续检查下一个非零元素。
    • 如果u[i].index > v[j].index,说明v向量的当前非零元素索引较小,应增加j来尝试找到匹配的非零元素索引。
    • 如果u[i].index < v[j].index,则相反,应增加i以尝试找到匹配的非零元素索引。
	int i = 0, j = 0;
	while (i < a && j < b)
	{
		if (u[i].index == v[j].index)
		{
			inner += u[i].value * v[j].value;
			i++, j++;
		}
		else if (u[i].index > v[j].index) j++;
		else if (u[i].index < v[j].index) i++;
	}
  • 这一步是解题的关键,双层嵌套和暴力在时间和空间上都A不了
#include <iostream>
using namespace std;

struct Vector
{
	int index;
	int value;
};

int main() {
	int n, a, b;
	long long inner = 0;
	cin >> n >> a >> b;
	Vector* u = new Vector[a];
	Vector* v = new Vector[b];

	for (int i = 0; i < a; i++)
	{
		cin >> u[i].index >> u[i].value;
	}
	for (int i = 0; i < b; i++)
	{
		cin >> v[i].index >> v[i].value;
	}
	
	int i = 0, j = 0;
	while (i < a && j < b)
	{
		if (u[i].index == v[j].index)
		{
			inner += u[i].value * v[j].value;
			i++, j++;
		}
		else if (u[i].index > v[j].index) j++;
		else if (u[i].index < v[j].index) i++;
	}

	cout << inner;

	delete[]u;
	delete[]v;
	return 0;
}

请添加图片描述
参考:【ccf csp】202006-2 稀疏向量(有好几个坑) 满分代码 C++

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

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

相关文章

Java中的关键字

✨✨ 所属专栏&#xff1a; Java基石&#xff1a;深入探索Java核心基础✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; Java中的关键字是一些具有特殊含义的单词&#xff0c;它们在语法中有特定的用途&#xff0c;不能用作标识符&am…

ai写作工具哪具好,3款AI写作软件来揭晓

ai写作工具在当今信息爆炸的时代中正变得越来越受欢迎。随着人工智能技术的不断发展&#xff0c;越来越多的AI写作软件涌现出来&#xff0c;它们的功能和性能也日益完善。在这篇文章中&#xff0c;我们将揭晓3款备受推崇的AI写作软件&#xff0c;探讨它们各自的特点和优势。 第…

网络机顶盒哪个好?内行分享网络机顶盒排名

网络机顶盒是电视机的必备搭配&#xff0c;依然是不可缺少的部分&#xff0c;我作为网络机顶盒的从业者&#xff0c;经常给被问到的就是网络机顶盒哪个好&#xff0c;不同品牌之间差异较大&#xff0c;今天给大家分享业内最新发布的网络机顶盒排名&#xff0c;看看目前哪些网络…

前端简单知识复习

1.symbol类型 Symbol 是 ECMAScript 6 中引入的一种新的基本数据类型&#xff0c;它表示独一无二的值。Symbol 值是通过 Symbol() 函数创建的。 Symbol 值具有以下特点&#xff1a; 独一无二性&#xff08;唯一性&#xff09;&#xff1a;每个通过 Symbol() 函数创建的 Symb…

泛微e-office系统存在敏感信息泄露 附POC软件

免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. 泛微e-office系统简介 微信公众号搜索:南风漏洞复…

阿里云国际-在阿里云服务器上快速搭建幻兽帕鲁多人服务器

幻兽帕鲁是最近流行的新型生存游戏。该游戏一夜之间变得极为流行&#xff0c;同时在线玩家数量达到了200万。然而&#xff0c;幻兽帕鲁的服务器难以应对大量玩家的压力。为解决这一问题&#xff0c;幻兽帕鲁允许玩家建立专用服务器&#xff0c;其提供以下优势&#xff1a; &am…

Ubuntu22部署MySQL5.7详细教程

Ubuntu22部署MySQL5.7详细教程 一、下载MySQL安装包二、安装MySQL三、启动MySQL检查状态登录MySQL 四、开启远程访问功能1、允许其他主机通过root访问数据库2、修改配置文件&#xff0c;允许其他IP通过自定义端口访问 五、使用Navicat连接数据库 默认情况下&#xff0c;Ubuntu2…

Python urllib模块学习

HTTP协议 HTTP 协议&#xff1a;一般指HTTP(超文本传输)协议。 HTTP是为Web浏览器和Web服务器之间的通信而设计的&#xff0c;基于TCP/IP通信协议嘞传递数据。 HTTP消息结构 客户端请求消息 客户端发送一个HTTP请求到服务器的请求消息包括以下格式 请求行(request line)请求…

python毕设选题 - 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

# 1 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通…

什么是HTTP代理,socks5代理?它们的区别是什么?

什么是HTTP代理&#xff1f; HTTP代理是一种常见的网络代理方式&#xff0c;它通过在客户端和服务器之间建立一个中间层&#xff0c;将客户端的请求转发给服务器&#xff0c;并将服务器的响应返回给客户端。HTTP代理通常用于访问受限制的网站&#xff0c;或者在网络中隐藏客户…

以太网通讯工业RFID读写器|传感器RH623A安装方法与注意事项

以太网通讯工业RFID读写器|传感器RH623A是一款支持MODBUS-TCP工业以太网&#xff0c;MODBUS-RTU(RS232)工业总线型高频读写设备&#xff0c;支持ISO15693协议&#xff0c;最高支持3米/秒的相对速度下准确读卡不漏读&#xff0c;满足根类工业环境下应用&#xff0c;广泛应用于AG…

WebGL中开发科学数据可视化应用

WebGL在科学数据可视化领域有广泛的应用&#xff0c;可以用于呈现和解释复杂的科学数据。以下是在WebGL中开发科学数据可视化应用时的一些建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.选择合…

多目图像拼接算法

图像拼接一般要经过图像特征提取、特征匹配、融合等步骤来实现。 特征匹配与变换: SIFT(尺度不变特征变换)SURF(加速鲁棒特征)ORB(Oriented FAST and Rotated BRIEF)AKAZE(加速的KAZE特征)全景图像拼接算法: 基于特征匹配的拼接:利用特征点匹配找到重叠区域,然后进…

C++之Easyx——图形库的基本功能(2):来点色彩

一、setbkcolor 函数定义 void EGEAPI setbkcolor(color_t color, PIMAGE pimg NULL); // 设置当前绘图背景色&#xff08;设置并做背景色像素替换&#xff09; 使用说明 void EGEAPI setbkcolor(颜色RGB, PIMAGE pimg NULL); // 设置当前绘图背景色&#xff08;…

深度学习在时间序列预测的总结和未来方向分析

2023年是大语言模型和稳定扩散的一年&#xff0c;时间序列领域虽然没有那么大的成就&#xff0c;但是却有缓慢而稳定的进展。Neurips、ICML和AAAI等会议都有transformer 结构(BasisFormer、Crossformer、Inverted transformer和Patch transformer)的改进&#xff0c;还出现了将…

32.仿简道云公式函数实战-数学函数-MOD

1. MOD函数 返回两数相除的余数。 结果的符号与除数相同。 2. 函数用法 MOD(number, divisor) 3. 函数示例 返回两数相除的余数。 结果的符号与除数相同。 number: 必需。 要计算余数的被除数。 divisor: 必需。 除数。 4. 代码实战 首先我们在function包下创建math包…

书生·浦语大模型实战营-第一课笔记

首先了解了大模型的发展历程&#xff0c;从GPT1到GPT4的发展历程&#xff0c;大模型经历自OPENAI发布GPT3.5后进入了快速发展阶段&#xff0c;成为了技术界高度关注的热门技术。 大模型的出现改变了以往通用人工智能的困局&#xff0c;使得通用人工智能在通用领域的应用变得有可…

QT3作业

1 2. 使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数&#xff0c;将登录按钮使用t5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#…

模板初阶C++

1、泛型编程 如何实现一个通用的交换函数呢? void Swap(int& left, int& right) {int temp = left;left = right;right = temp; }void Swap(double& left, double& right) {double temp = left;left = right;right = temp; }void Swap(char& left, char&…

五种多目标优化算法(MOJS、MOGWO、NSWOA、MOPSO、NSGA2)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOJS 1.2MOGWO 1.3NSWOA 1.4MOPSO 1.5NSGA2 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…