58.区间和

news2024/11/15 17:24:37

58.区间和


//卡码网题号58.区间和
/*
//如果我查询m次,每次查询的范围都是从0到n-1,那么该算法的时间复杂度是O(n*m),
//如果查询次数非常大的话,这个时间复杂度也是非常大的。
#include<iostream>
#include<vector>
using namespace std;

int main() {
	int num,start,end;
	cin >> num;
	vector<int> stairx(num, 0);
	for (int i = 0;i < num;i++) {
		cin >> stairx[i];
	}
	while (cin >> start >> end) {
		int sum = 0;
		for (int i = start;i <= end;i++) {
			sum += stairx[i];
		}
		cout << sum << " ";
	}
	return 0;
}
*/

/*
//前缀法:
//时间复杂度为O(n),后面只需要O(1)的减法操作
#include<iostream>
#include<vector>
using namespace std;

int main() {
	int num,start,end,sum=0;//num为数组的长度,start是起始位置,end是终止位置,sum是0~i位置的和
	cin >> num;//输入num的值
	vector<int> stairx(num);//初始化数组
	vector<int> stairxSum(num);//初始化数组和,stairxSum的每一个元素表示stairxSum[i]=stairx[0]~stairx[i]的和(前缀和)
	for (int i = 0;i < num;i++) {//利用一个for循环赋值stairx和stairxSum
		cin >> stairx[i];
		sum += stairx[i];
		stairxSum[i] = sum;
	}
	while (cin >> start >> end) {//三目运算符判断start是否为0,如果为0则没有前面一个元素,只能减到0的位置。
		cout << stairxSum[end] - (start == 0 ? 0:stairxSum[start - 1]) << endl;
	}
	return 0;
}
*/

//C++ 代码 面对大量数据 读取 输出操作,最好用scanf 和 printf,耗时会小很多:
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <iostream>
#include <vector>
using namespace std;
int main() {
	int n, a, b;
	cin >> n;
	vector<int> vec(n);
	vector<int> p(n);
	int presum = 0;
	for (int i = 0; i < n; i++) {
		scanf("%d", &vec[i]);
		presum += vec[i];
		p[i] = presum;
	}
//函数返回值为 int 型。如果a和b都被成功读入,那么 scanf 的返回值就是2;
//如果只有a被成功读入,返回值为1;
//如果a和b都未被成功读入,返回值为0;
//如果遇到错误或遇到end of file,返回值为EOF。end of file为Ctrl + z 或者Ctrl + d。其中EOF的值为 - 1
//也就是说 scanf 返回值只有为EOF的时候,也就是-1的时候取反才是0(-1的补码表示全是1,按位取反后全是0,即为假),
//才会正常退出循环,其他情况均不会正常退出循环(可能会报错)
	while (~scanf("%d%d", &a, &b)) {
		int sum;
		if (a == 0) sum = p[b];
		else sum = p[b] - p[a - 1];
		printf("%d\n", sum);
	}
	return 0;
}

在这里插入图片描述

验证~scanf的结果

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

int main() {
	int a, b;
    //验证一个的时候注意注释掉另外一个
	//cout << scanf("%d%d", &a, &b);
	cout << ~scanf("%d%d", &a, &b);
	return 0;
}

如果a和b都被成功读入

那scanf 的返回值就是2

在这里插入图片描述

~scanf的返回值为-3。

在这里插入图片描述

如果只有a被成功读入

那scanf 返回值为1,

在这里插入图片描述

~scanf 返回值为-2

在这里插入图片描述

如果a和b都未被成功读入

那scanf 返回值为0,

在这里插入图片描述

~scanf 返回值为-1

在这里插入图片描述

如果遇到错误或遇到end of file(Ctrl+z)

那scanf 返回值为EOF(-1)

在这里插入图片描述

~scanf 返回值为0

在这里插入图片描述

注意:为什么这里连续用了三个Ctrl+z?根据网上的某个结论:

ctrl+z类似于一个带有指令的字符,而整形和浮点型无法接收字符,但其拥有指令,他可以让原本不能接收字符的%d变为接受字符。在接收到ctrl+z字符后scanf函数内部可能需要再接收一个ctrl+z指令执行ctrl+z字符,才能返回EOF,而%c本就能就收字符,所以只需要输入2个ctrl+z。那为什么猜测ctrl+z是字符呢,是因为我用getchar函数来接收他的值,发现只用输入一次就可以输出EOF,但是也许函数内部已经定好把ctrl+z转化为EOF,所以不敢肯定ctrl+z的字符型参数一定为-1。

当我们把代码改变为

在这里插入图片描述

得到结果:

在这里插入图片描述

结果验证了上面网友的猜想。

验证cin的结果

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

int main() {
	int a, b;
	cin>>a>>b;
	cout << cin.get();
	return 0;
}

当输出正确时,

在这里插入图片描述

当输入错误时,

在这里插入图片描述

cin是C++的输入流对象,">>"是重载的运算符,cin>>的返回值是cin对象。用这个当条件的话,通过检测其流的状态来判断结束;
(1)若流是有效的,即流未遇到错误,那么检测成功;
(2)若遇到文件结束符,或遇到一个无效的输入时(例如本题输入的第二个值不是一个整数),istream对象的状态会变为无效,条件就为假;读取失败的时候,就不能继续读取了,那么读取操作结束,cin.get()就返回-1,跳出程序!

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

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

相关文章

失易得数据恢复体验,2024精选数据恢复工具推荐!

数据丢失的风险无处不在&#xff0c;可能是由于硬件故障、软件错误、病毒感染或人为操作失误等原因。在这种情况下&#xff0c;数据恢复工具就显得尤为重要。本文将介绍几款市场上广受好评的数据恢复工具&#xff0c;帮助您在数据丢失后能够迅速找回宝贵的信息。 一、Foxit数据…

Windows客户端加入域环境时提示指定的服务器无法运行请求的操作

工作中小毛小病之&#xff1a;如下图 问题出在域控制器上&#xff0c;检查域控制器的各项域服务是否正常&#xff0c;确认windows防火墙关闭&#xff0c;一般能解决这个问题&#xff1b; 如果之前一切正常&#xff0c;只是某台电脑重装系统或者新电脑加入域出现这个情况&#…

LCD 显示字符

1.0 字符显示 使用显示图片的方式显示字符会浪费存储空间&#xff0c;显示字符的时候字符的笔画是一个固定的颜色&#xff0c;因此不用使用显示图片的方式&#xff0c;可以使用1 表示字符的本身&#xff0c;0 表示字符的背景&#xff0c;使用这种方式显示字符节省存储空间。 注…

每日OJ_牛客_反转部分单向链表

目录 牛客_反转部分单向链表 解析代码 牛客_反转部分单向链表 反转部分单向链表__牛客网 题目给的代码‘&#xff1a; #include <iostream> using namespace std; struct Node {int val;struct Node* next; }; Node* input_List() {int n,val;Node* pheadnew Node();…

【Java】效率工具模板的使用

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 乱码问题4.2 快捷键模板4.3 文件模板 一、前言 提高效率 二、学习内容&am…

【开端】Linux抓包测试接口

一、绪论 平时我们开发接口&#xff0c;可以通过程序去调用接口测试接口的情况&#xff0c;也可以通过postman去测试接口的联通情况&#xff0c;也可以直接通过命令去调试接口的情况。 二、几种接口调试方式 1、程序代码测试 public static void main(String[] args) {String …

电子木鱼+提肛+游戏地图,车机还能这么玩?

文/王俣祺 导语&#xff1a;电子木鱼、提肛训练、游戏级地图&#xff0c;你很难想象这些“直男关怀”是来自小鹏MONA M03的车机系统。最近&#xff0c;一批关于MONA M03车机功能的视频在网上疯传&#xff0c;一系列“没用但有趣”的功能广受年轻用户的好评&#xff0c;情绪价值…

【Linux】搭建Openstack(一)

搭建openstack平台的总结 Openstack是一个开源的云计算平台&#xff0c;可以提供基础设施即服务&#xff08;IaaS&#xff09;的功能&#xff0c;让用户可以在自己的数据中心部署和管理虚拟化的资源。 Openstack是当今最具影响力的云计算管理工具——通过命令或者基于web的可…

PostgreSQL下载、安装(Windows 10/11 64位)详细教程【超详细,保姆级教程!!!】

本文介绍关于windows 11如何下载、安装PostgreSQL-15.8版本的详细步骤 一、下载PostgreSQL 1、进入官网 PostgreSQL下载地址&#xff08;官网&#xff09; 直达PostgreSQL下载页面&#xff08;官网&#xff09; 2、点击“Download the installer”链接&#xff0c;选择合适…

使用Seaborn绘制热力图

热力图是一种用于展示矩阵数据的图表&#xff0c;其中颜色深浅表示数据值的大小。 import seaborn as sns import numpy as np import matplotlib.pyplot as plt # 创建示例数据 data np.random.rand(10, 12) # 绘制热力图 sns.heatmap(data, annotTrue, cmapcoolwa…

Ubuntu20.04离线安装 Docker

1.下载3个docker离线安装包&#xff0c;下载网址&#xff1a; https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/2.把3个离线安装包拷贝到ubuntu本地执行以下命令 sudo dpkg -i containerd.io_1.4.6-1_amd64.deb sudo dpkg -i docker-ce-cli_20.10.…

蓝队技能-应急响应篇C2后门权限维持手法WindowsLinux基线检查排查封锁清理

知识点 1、应急响应-C2后门-排查&封锁 2、应急响应-权限维持-排查&清理 3、应急响应-基线检测-整改&排查演示案例-蓝队技能-C2后门&权限维持-基线检查&查杀封锁-Windows 1、常规C2后门-分析检测 无隐匿手法 也可以把怀疑的exe程序上传到沙箱上分析 有…

Java二十三种设计模式-中介者模式(22/23)

本文深入探讨了中介者模式&#xff0c;这是一种行为型设计模式&#xff0c;通过定义一个中介者对象来简化对象间的通信&#xff0c;降低耦合度&#xff0c;并提高系统的模块化&#xff0c;同时提供了实现示例、使用场景、优缺点分析、与其他设计模式的比较&#xff0c;以及最佳…

贪心算法,暴力递归

前缀树 如果想要查询“bc”就可以直接看有没有走向b的路&#xff0c;如果有的话就看c节点上面的e值为1那么就是有这个“bc”&#xff0c;还能看见加过几次&#xff0c;代价很低 如果想看有多少是以“ab”作为前缀的&#xff0c;那么就直接看b上面的p值 贪心算法 哪个会议结束时…

java中final的使用方法

package Test;/*** author gyf* ClassName Test* Date 2024/8/13 16:26* Version V1.0* Description :*/ public class Test {public static void main(String[] args) {// 被final修饰就不能修改变量了final int a 10;System.out.println(a);} } // 若父类用final 修饰 则子类…

基于Java和GeoTools的Shapefile矢量数据缩略图生成实践

目录 前言 一、关于GeoTools的图片生成 1、关于GtRenderer 2、关于 图像生成架构 3、流式计算绘制 二、全球空间预览生成实战 1、pom.xml中关于图像生成依赖 2、样式设置及地图资源绑定 3、图片生成绘制 4、图片生成测试 三、成果验证 1、全球范围生成 2、我国的范…

快速批量替换图片名称为指定名称(附代码)

目录 一、需求二、代码使用方法三、代码四、效果展示 一、需求 深度学习配对训练&#xff0c;有时配对图像的名称需要一致&#xff0c;这里写了一个脚本&#xff0c;快速批量替换图片名称中某些字符串。 二、代码使用方法 使用代码时需要修改的地方见下&#xff1a; 三、代码…

一文1600字从0到1JMeter全流程性能测试实战!

项目背景&#xff1a; 我们的平台为全国某行业监控平台&#xff0c;经过3轮功能测试、接口测试后&#xff0c;98%的问题已经关闭&#xff0c;决定对省平台向全国平台上传数据的接口进行性能测试。 01、测试步骤 1、编写性能测试方案 由于我是刚进入此项目组不久&#xff0c…

[HGAME 2023 week1]Classic Childhood Game

方法一&#xff1a;在控制台输入mota&#xff08;&#xff09; 方法二&#xff1a;查看页面源码发现多个js,一一查看 在./Res/Events.js中发现编码&#xff08;准确来说是字符串&#xff09; \x59\x55\x64\x6b\x61\x47\x4a\x58\x56\x6a\x64\x61\x62\x46\x5a\x31\x59\x6d\x35\x7…

基于MATLAB视觉的静态手势识别系统

一、课题介绍及思路 为了丰富手势识别方法的多样性&#xff0c;提高手势识别的正确率&#xff0c;提出了一种基于手势轮廓像素变化的手势识别方法。在Matlab环境下&#xff0c;设计并开发了一个基于视觉的静态手势识别系统。系统主要由两部分组成&#xff1a;手势分割与手势识…