语文成绩

news/2024/11/17 13:37:12/文章来源:https://www.cnblogs.com/gailixia/p/18550455

语文成绩(https://www.luogu.com.cn/record/189365158)

题目描述

语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗?

输入格式

第一行有两个整数 np,代表学生数与增加分数的次数。

第二行有 n 个数,a1∼an,代表各个学生的初始成绩。

接下来 p 行,每行有三个数,xyz,代表给第 x 个到第 y 个学生每人增加 z 分。

输出格式

输出仅一行,代表更改分数后,全班的最低

样例

输入

3 2
1 1 1
1 2 1
2 3 1

**输出 **

2

说明

对于 40%的数据,有 n≤10e3

对于 60% 的数据,有 n≤10e4

对于 80%的数据,有 n≤10e5

对于 100%的数据,有 n≤5×10e6 , p≤n,学生初始成绩 ≤100,z≤100

[!TIP]

标签 题目可知,用差分解决

差分数组:

首先给定一个原数组a:a[1], a[2], a[3]...a[n];

然后再构造一个数组b : b[1], b[2], b[3]...b[i];

使得 a[i] = b[1] + b[2] + b[3] + ...+ b[i]

a数组是b数组的前缀和数组,反过来我们把b数组叫做a数组的差分数组。即每一个a[i]都是b数组中从头开始的一段区间和

构造差分b数组(一维)

a[0 ]= 0;
b[1] = a[1] - a[0];
b[2] = a[2] - a[1];
b[3] = a [3] - a[2]`;
.......
b[n] = a[n] - a[n - 1];

给定区间[x, y ],把a数组中的[x, y] 区间中的每一个数都加上z,即 a[x] + z , a[x+ 1] + z , a[x + 2] + z... a[y] + z;

暴力做法是for循环x到y区间,时间复杂度O(n),如果需要对原数组执行m次这样的操作,时间复杂度就会变成O(n * m)有没有更高效的做法吗? 考虑差分做法(差分数组派上用场了)

始终要记得,a数组是b数组的前缀和数组,比如对b数组的b[i]的修改,会影响到a数组中从a[i]及往后的每一个数。

首先让差分b数组中的 b[x] + z ,通过前缀和运算,a数组变成 a[x] + z ,a[x + 1] + z...a[n] + z;

然后我们打个补丁,b[y + 1] - z, 通过前缀和运算,a数组变成 a[y + 1] - c,a[y + 2] - z...a[n] - z;

b[x] + z,效果使得a数组中 a[x] 及以后的数都加上了z,但我们只要求x到y 区间加上 z, 因此还需要执行 b[y + 1] - z,让a数组中 a[y + 1]及往后的区间再减去z,这样对于a[y] 以后区间的数相当于没有发生改变

一维差分:给a数组中的[ x, y] 区间中的每一个数都加上z,只需对差分数组b做 b[x] + = c, b[y+1] - = z时间复杂度为O(1), 大大提高了效率

#include <iostream>
#include <vector>
using namespace std;int main() 
{int n, p;scanf("%d %d", &n, &p);vector<int> a(n);vector<int> b(n);for (int i = 1; i <= n; i-=-1) {scanf("%d", &a[i]);}for (int i = 1; i <= n; i-=-1) {b[i] = a[i] - a[i - 1];//构建差分数组}int x, y, z;for (int i = 0; i < p; i-=-1){scanf("%d %d %d", &x, &y, &z);b[x] += z; //将[x, y]之间的每个数加上zb[y + 1] -= z;}int baka = 1e7;for (int i = 1; i <= n; i-=-1) {a[i] = a[i - 1] + b[i];if (baka > a[i]) {baka = a[i];}}printf("%d\n", baka);return 0;
}




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

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

相关文章

「LUCKY STUN穿透」使用Cloudflare的页面规则固定和隐藏网页端口

关于本教程 索引 │ ├─关于本教程 │ ├─在STUN穿透环境中使用WEB服务 │ ├─动态端口带来的麻烦 │ ├─“隐藏端口”和固定端口 │ └─可用的解决方法 │ ├─使用邮件进行通知端口变化 │ └─使用HTTP重定向 │ ├─网络环境优化和STUN穿透规则设…

平板电视食用教程

先来看一道大家基本都能默写出来的题目: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入一个数 \(x\)。 删除一个数 \(x\)(若有多个相同的数,应只删除一个)。 定义排名为比当前数小的数的个数 \(+1\)。查询 \(x\) 的排名。 查询数据结…

企业集成模式-第十二章

十二、中场演练:系统管理示例管理控制台:显式所有组件的工作状态(下图一) 贷款中介的服务质量:监视请求响应时间 验证信用机构的操作:周期性地发送测试消息,希望确信该服务在正常运行(下图二) 信仰机构的故障恢复:如果信仰机构出现故障,希望把信用请求消息临时重定向…

平板电视从入门到精通

先来看一道大家基本都能默写出来的题目: 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入一个数 \(x\)。 删除一个数 \(x\)(若有多个相同的数,应只删除一个)。 定义排名为比当前数小的数的个数 \(+1\)。查询 \(x\) 的排名。 查询数据结…

人月神话-摘抄

由于人员的分工,大型编程项目碰到的管理问题和小项目区别很大:我相信关键需要是维持产品自身的概念完整性。 1. 焦油坑(the tar pit) 过去几十年的大型系统开发犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。他们中大多数开发出了可运行的系统-不过,其中只有非…

Manjaro/Arch用怎么安装天翼云电脑(Ctyun-cloud-desk)?感谢信创,感谢国家

最近微信出了linux版,用vmware装linux不过瘾,把一台闲置的笔记本装上了Manjaro KDE Plasma,经过一段时间的发展,Linux桌面可用性大大提高。 Kindle->Kindle Mate->Anki这条路在linux下 我用 Kindle ->KindleVocab ->Anki这么代替了之后, 其他软件都能凑合用,…

Prometheus 和 Grafana 监控系统搭建

Prometheus 和 Grafana 监控系统的搭建和配置。Author: ACatSmiling Since: 2024-11-11Prometheus 的架构架构理解:Prometheus 既然设计为一个维度存储模型,可以把它理解为一个 OLAP 系统。 生态圈组件:Prometheus Server:主服务器,负责收集和存储时间序列数据。 Client L…

团队作业4——项目冲刺-6

DAY(11.16) 每日站立式会议 会议照片:会议内容:成员 昨天已完成的工作 今天计划完成的工作欧可贵 Day6博客的编写,会议的组织与展开 完成任务的对接,组织第六次会议的召开,准备用户测试吴灿豪 检查代码流畅性,美化页面,交互各个界面 继续优化代码,美化界面陈东阳 用户…

STM32F103简介

自从大学毕业之后,已经很久没有接触STM32控制器了,最近打算学习一下LVGL,控制芯片计划使用STM32,因此这里我们会简单介绍有关STM32的知识。 一、STM32F103RTC6介绍 1.1 命名规则 我从网上买了一块STM32F103RTC6开发板,STM32F103RCT6 各个字段的含义:STM32(芯片系列):S…

高级语言程序设计第七次个人作业(102400106刘鑫语)

这个作业属于哪个课程: https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13304 学号:102400106 姓名:刘鑫语 作业内容: 编写并运行博客园的八道题。 1,定义一个二维数组和指向该数组的指针,分别以数组…

20222312 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.实验内容及要求 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,s…

解决 PbootCMS 网站转移后无法打开报错提示“No input file specified”的问题

确保所有文件路径正确无误。检查 index.php 文件确保 index.php 文件存在于网站根目录中,并且路径正确。检查其他配置文件确保 config.php 和其他配置文件路径正确。查看错误日志 查看服务器日志,获取更多详细的错误信息。PHP 错误日志通常位于 /var/log/php7.x-fpm.log 或 /…