【蓝桥集训】第二天——差分
作者:指针不指南吗
专栏:Acwing 蓝桥集训每日一题🐾做题过程中首先应该注意时间复杂度问题🐾
文章目录
- 1.改变数组元素
- 2.差分
- 3.差分矩阵
1.改变数组元素
给定一个空数组 V 和一个整数数组 a1,a2,…,an。
现在要对数组 V 进行 n 次操作。
第 i 次操作的具体流程如下:
- 从数组 V 尾部插入整数 0。
- 将位于数组 V 末尾的 ai 个元素都变为 1(已经是 1 的不予理会)。
注意:
- ai 可能为 0,即不做任何改变。
- ai 可能大于目前数组 V 所包含的元素个数,此时视为将数组内所有元素变为 1。
请你输出所有操作完成后的数组 V。
输入格式
第一行包含整数 T,表示共有 T 组测试数据。
每组数据第一行包含整数 n。
第二行包含 n 个整数 a1,a2,…,an。
输出格式
每组数据输出一行结果,表示所有操作完成后的数组 V,数组内元素之间用空格隔开。
数据范围
1≤T≤20000,
1≤n≤2×10510^5105 ,
0≤ai≤n,
保证一个测试点内所有 n 的和不超过 2×10510^5105 。输入样例:
3 6 0 3 0 0 1 3 10 0 0 0 1 0 5 0 0 0 2 3 0 0 0输出样例:
1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0 0 0
- 思路
- 对V进行 n 次操作,每次操作加个 0 ,即V一共有 n 个元素
第 i 次 把 V 末尾的 ai 个元素都变为 1,即 V 是由 0,1 组成
只要被操作过就是 1 ;
- 首先根据数据范围来分析时间复杂度,200010,应该是 n log2nlog_2^nlog2n 或者 n 比较合适
- 用个一个数组来存某个元素操作的次数,超过 1 的输出 1,0就输出 0
- 对 区间 [ n - ai , n ] 统一加上 1,这里可以用差分
- 注意:每一组数据之后,要进行置零

- 代码实现
#include<bits/stdc++.h>
using namespace std;const int N=2*1e5+10;
int a[N];int main()
{int T;cin>>T; // T 组测试数据while(T--){int n; // n 个元素cin>>n;memset(a,0,(n+1)*4); //置零操作,memset 或者是 for(快些),sizeof b 会比(n+1)*4 慢很多 for(int i=1;i<=n;i++){ //输入数据int x;cin>>x; int l=max(1,i-x+1),r=i; a[l]++,a[r+1]--; //记录V中元素被操作多少次 差分} for(int i=1;i<=n;i++){a[i]+=a[i-1]; // 为什么求前缀和数组,算的差分数组不是记录的 V 中元素操作的次数吗?cout<<!!a[i]<<' '; // !! 运算,如果是0,则为0,如果是非0,则为1,也可以写特判}cout<<endl;}return 0;
}
2.差分
输入一个长度为 n 的整数序列。
接下来输入 m 个操作,每个操作包含三个整数 l,r,c表示将序列中 [l, r ]之间的每个数加上 。
请你输出进行完所有操作后的序列。
输入格式
第一行包含两个整数 n 和 m。
第二行包含 n 个整数,表示整数序列。
接下来 m 行,每行包含三个整数 l,r,c,表示一个操作。
输出格式
共一行,包含 n 个整数,表示最终序列。
数据范围
1≤n,m≤100000,
1≤l≤r≤n,
−1000≤c≤1000,
−1000≤整数序列中元素的值≤1000,输入样例:
6 3 1 2 2 1 2 1 1 3 1 3 5 1 1 6 1输出样例:
3 4 5 3 4 2
- 代码实现
#include<iostream>
using namespace std;const int N=100010;
int a[N],b[N];int n,m; //n 数组元素个数;m 表示操作次数void insert(int l,int r,int c){b[l]+=c; //对差分+cb[r+1]-=c; //补丁
}int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];insert(i,i,a[i]); //差分b 数组}while(m--){int l,r,c; //对差分 b 操作cin>>l>>r>>c; insert(l,r,c); //对区间进行元素进行操作}for(int i=1;i<=n;i++){ //求出原数组即前缀和aa[i]=a[i-1]+b[i];cout<<a[i]<<' ';}return 0;
}
3.差分矩阵
输入一个 n 行 m 列的整数矩阵,再输入 q个操作,每个操作包含五个整数 x1,y1,x2,y2,c,
其中 (x1,y1)和 (x2,y2) 表示一个子矩阵的左上角坐标和右下角坐标。
每个操作都要将选中的子矩阵中的每个元素的值加上 c。
请你将进行完所有操作后的矩阵输出。
输入格式
第一行包含整数 n,m,q。
接下来 n 行,每行包含 m 个整数,表示整数矩阵。
接下来 q 行,每行包含 55 个整数 x1,y1,x2,y2,c,表示一个操作。
输出格式
共 n 行,每行 m 个整数,表示所有操作进行完毕后的最终矩阵。
数据范围
1≤n,m≤1000,
1≤q≤100000,
1≤x1≤x2≤n,
1≤y1≤y2≤m,
−1000≤c≤1000,
−1000≤矩阵内元素的值≤1000.输入样例:
3 4 3 1 2 2 1 3 2 2 1 1 1 1 1 1 1 2 2 1 1 3 2 3 2 3 1 3 4 1输出样例:
2 3 4 1 4 3 4 1 2 2 2 2
-
代码实现
#include <iostream>using namespace std;const int N = 1010;int n, m, q; int a[N][N], b[N][N];void insert(int x1, int y1, int x2, int y2, int c) {b[x1][y1] += c;b[x2 + 1][y1] -= c;b[x1][y2 + 1] -= c;b[x2 + 1][y2 + 1] += c; }int main() {scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ ){scanf("%d", &a[i][j]);insert(i, j, i, j, a[i][j]);}while (q -- ){int x1, y1, x2, y2, c;cin >> x1 >> y1 >> x2 >> y2 >> c;insert(x1, y1, x2, y2, c);}for (int i = 1; i <= n; i ++ ){for (int j = 1; j <= m; j ++ ){b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];printf("%d ", b[i][j]);}puts(" ");}return 0; }

相关文章:
【蓝桥集训】第二天——差分
作者:指针不指南吗 专栏:Acwing 蓝桥集训每日一题 🐾做题过程中首先应该注意时间复杂度问题🐾 文章目录1.改变数组元素2.差分3.差分矩阵1.改变数组元素 给定一个空数组 V 和一个整数数组 a1,a2,…,an。 现在要对数组 V 进行 n 次操…...
Spring Boot最核心的27个注解,你了解多少?
https://blog.csdn.net/ManuMAX/article/details/129017443 导读 Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成…...
css3弹性盒子
弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。 弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。 弹性容器内包含了一个或多个弹性子元素。 display:flex; 修改排列方式: 0. direction: rtl; //(right-to-left),弹性子元素的…...
数据分析与SAS学习笔记2
SAS在企业使用的情况: SAS是一个很昂贵的商业软件。在企业中使用SAS比较多,在企业界中是比较流行,在学术界使用R比较多。 SAS简介:统计分析系统 处理生物分析数据。 SAS成为统计领域的国际标准软件,服务全球50000多家…...
零信任-Akamai零信任介绍(6)
Akamai零信任介绍 Akamai是一家专注于分布式网络服务的公司,它提供了一系列的互联网内容和应用加速服务。关于Akamai的零信任,它指的是Akamai的安全架构中不存在任何一个环节是可以被单独的控制或影响的,因此可以提供更高的安全性。通过使…...
表现良好的最长时段[前缀和思想子数组]
前缀和与最长子数组前言一、表现良好的最长时间段二、前缀和思想&子数组1、前缀和&map2、前缀和&单调栈总结参考文献前言 对于子数组/子串问题,紧密连续前缀和/滑动窗口/单调栈;挖掘内在规律,可以简化代码,降低时空复…...
Python 获取当前系统时间
在有的时候,系统不能联网,需要获取系统的当前实现,此时需要python的datetime库。 一、使用方法 1. 导入库:import datetime 2.获取当前日期和时间:now_time datetime.datetime.now() 3.格式化成我们想要的格式&am…...
pytorch基础入门教程
pytorch基础入门教程 Pytorch一小时入门教程 前言 机器学习的门槛并没有想象中那么高,我会陆续把我在学习过程中看过的一些文章和写过的代码以博客的形式分享给大家,和大家一起交流,这个是本系列的第一篇,pytoch入门教程&#x…...
RTSP协议交互时TCP/UDP的区别 以及视频和音频的区别 以及H264/H265的区别
经过这几天的调试 一个功能简单的 RTSP服务端已经实现了 支持TCP/UDP 支持H264 H265 支持同时传输 AAC音频 记录下 交互时需要注意的地方 1.OPTIONS 都一样 如下:左箭头内是客户端发给服务端 箭头内是服务端回给客户端 2.DESCRIBE 目前的流是包含视频和AAC音频…...
调用大智慧L2接口是什么原理?作用是什么?
有些开发人员想要设计一个微信公众号或者微信小程序,由于自己搭建数据库工作量太大,或者技术受限,也会选择调用大智慧L2接口减少工作量。调用大智慧L2接口是什么原理?作用是什么? 大智慧L2接口即应用程序编程接口&…...
数据结构 - 栈 与 队列 - (java)
前言 本篇介绍栈和队列,了解栈有顺序栈和链式栈,队列底层是双链表实现的,单链表也可以实现队列,栈和队列的相互实现和循环队列;如有错误,请在评论区指正,让我们一起交流,共同进步&a…...
CellularAutomata元胞向量机-8-渗流集群MATLAB代码分享
%% Percolation Clusterclf clc, clearthreshold .63; % ax axes(units,pixels,position,[1 1 650 700],color,k); text(units, pixels, position, [150,255,0],... string,美赛,color,w,fontname,helvetica,fontsize,100) text(units, pixels, position, [40,120,0],... str…...
iOS UI自动化测试详解
前言: 小目标 关于UI自动化的定义,我想要的是自动地按照流程去点击页面、输入数据,不需要人去参与,节省人工时间。比如登录,能够自己去填写用户名&密码,然后点击按钮跳转到下一个页面等。在能够保证业…...
Mybatis源码分析(九)Mybatis的PreparedStatement
文章目录一 JDBC的PreparedStatement二 prepareStatement的准备阶段2.1 获取Connection2.1.1 **UnpooledDataSource**2.1.2 PooledDataSource2.2 Sql的预编译PreparedStatementHandler2.3 为Statement设置参数2.4 执行具体的语句过程官网:mybatis – MyBatis 3 | 简…...
winfrom ui
http://www.iqidi.com/download/warehouse/Device_DotNetBar.rar http://qiosdevsuite.com/Download https://sourceforge.net/projects/qiosdevsuite/ https://www.cnblogs.com/hcyblogs/p/6758381.html https://www.cnblogs.com/jordonin/p/6484366.html MBTiles地图瓦片管…...
中国国家级地面气象站基本气象要素日值数据集(V3.0)
数据集摘要 数据集包含了中国基本气象站、基准气候站、一般气象站在内的主要2474个站点1951年1月以来本站气压、气温、降水量、蒸发量、相对湿度、风向风速、日照时数和0cm地温要素的日值数据。数据量为21.3GB。 (1)SURF_CLI_CHN_MUL_DAY-TEM-12001-201501.TXT 气温数据TEM, 包…...
【Python语言基础】——Python NumPy 数组副本 vs 视图
Python语言基础——Python NumPy 数组副本 vs 视图 文章目录 Python语言基础——Python NumPy 数组副本 vs 视图一、Python NumPy 数组副本 vs 视图一、Python NumPy 数组副本 vs 视图 副本和视图之间的区别 副本和数组视图之间的主要区别在于副本是一个新数组,而这个视图只是…...
Spring Cloud_OpenFeign服务接口调用
目录一、概述1.OpenFeign是什么2.能干嘛二、OpenFeign使用步骤1.接口注解2.新建Module3.POM4.YML5.主启动类6.业务类7.测试8.小总结三、OpenFeign超时控制1.超时设置,故意设置超时演示出错情况2.是什么3.YML中需要开启OpenFeign客户端超时控制四、OpenFeign日志打印…...
十三、GIO GTask
GTask表示管理一个可取消的“任务task” GCancellable GCancellable是一个线程安全的操作取消栈,用于整个GIO,以允许取消同步和异步操作。 它继承于GObject对象,不是一个单纯的结构体 相关函数 g_task_new GTask* g_task_new (GObject*…...
ch4_1存储器
1. 存储器的类型 1.1 按照存储介质来分类 半导体存储器: TTL, MOS 易失性 磁表面存储器: 磁头, 载磁体; 磁芯存储器: 硬磁材料, 环状元件 光盘存储器: 激光, 磁光材料; 1.2 按…...
Flow3D 11.1玩转金属3D打印模拟】手把手教你搞熔池仿真
Flow3d 11.1 lpbf 熔池仿真模拟 slm 选区激光熔化 降价 与别的店大几百上千的基本一致 (视频是多层模拟的视频) 1.该模拟设包含颗粒床以及建立过程(有视频),运用Flow3D11.1、EDEM软件以及Gambit软件(含安装包)&am…...
MOS管技术详解:从基础到工程应用
MOS管技术详解:从基础原理到工程应用1. MOS管基础概念与分类1.1 场效应管基本类型场效应管(FET)主要分为两大类型:结型场效应管(JFET):Junction Field-Effect Transistor金属氧化物半导体场效应管(MOSFET):Metal-Oxide-Semiconduc…...
用MATLAB玩转三维可视化:手把手教你绘制动态曲面图(含peaks函数详解)
MATLAB三维可视化实战:从静态曲面到动态交互的全方位指南 科研工作者常面临海量数据的可视化挑战,而MATLAB提供的三维图形工具链能将这些抽象数字转化为直观的空间形态。本文将带您深入探索三维可视化的核心技巧,从基础绘图到高级交互&#x…...
Phi-4-Reasoning-Vision商业应用:跨境电商产品图→合规标签→营销文案生成
Phi-4-Reasoning-Vision商业应用:跨境电商产品图→合规标签→营销文案生成 1. 项目背景与价值 跨境电商卖家每天面临三大核心挑战:产品图拍摄成本高、合规标签制作繁琐、多语言营销文案创作耗时。传统解决方案需要分别使用图像处理软件、标签生成工具和…...
实战演练:基于快马ai生成kafka实现用户行为日志实时收集与分析系统
今天想和大家分享一个最近用Kafka实现的实战项目——用户行为日志实时收集与分析系统。这个系统特别适合电商、内容平台这类需要实时了解用户行为的场景,下面我就把整个搭建过程拆解开来,希望能给有类似需求的同学一些参考。 系统架构设计思路 整个系统分…...
如何解决多显示器DPI缩放混乱?SetDPI工具实战指南
如何解决多显示器DPI缩放混乱?SetDPI工具实战指南 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 在现代办公环境中,多显示器配置已成为提升工作效率的标准方案。然而,当你将4K显示器与1080P显示器组合…...
AniShort:一站式AI短剧协作平台,重塑创作全流程
在AI技术迅猛发展的今天,短剧创作正迎来前所未有的变革。AniShort 作为一款专为AI短剧打造的全链路协作平台,致力于重构短剧生产流程,让创作者从繁琐的技术操作中解放出来,专注于内容本身。一个平台,搞定AI短剧全流程A…...
Qt 数据QByteArray与QString高效转换实战技巧
1. QByteArray与QString的本质区别 在Qt开发中,QByteArray和QString这两个类经常让新手开发者感到困惑。我第一次接触Qt时,也曾经把两者混为一谈,结果在中文显示时出现了乱码问题。后来才发现,它们的根本区别在于:QByt…...
postgresql(15)使用yum安装后环境变量信息
postgresql(15)使用yum安装后,其默认家目录,其环境变量信息如下 1.家目录 -bash-4.2$ whoami postgres -bash-4.2$ cd -bash-4.2$ pwd /var/lib/pgsql -bash-4.2$ 2.环境变量信息 -bash-4.2$ ls -la total 44 drwx------ 3 postgres postgres 95 Dec 18 10:49 . drwx…...
vLLM-v0.17.1精彩案例:Qwen2-72B 4-bit量化后精度保持98.6%
vLLM-v0.17.1精彩案例:Qwen2-72B 4-bit量化后精度保持98.6% 1. vLLM框架简介 vLLM是一个专注于大语言模型(LLM)推理和服务的高性能开源库。这个项目最初由加州大学伯克利分校的天空计算实验室开发,现在已经发展成为一个活跃的社区驱动项目,…...
