当前位置: 首页 > news >正文

蓝桥杯刷题 前缀和与差分-[2128]重新排序(C++)

问题描述

给定一个数组 A 和一些查询 L**i, R**i,求数组中第 L**i 至第 R**i 个元素之和。 小蓝觉得这个问题很无聊,于是他想重新排列一下数组,使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组,所有查询结果的总和最多可以增加多少?

输入格式

输入第一行包含一个整数 n。

第二行包含 n 个整数 A1, A2, · · · , A**n,相邻两个整数之间用一个空格分隔。

第三行包含一个整数 m 表示查询的数目。

接下来 m 行,每行包含两个整数 L**i、R**i ,相邻两个整数之间用一个空格分隔。

输出格式

输出一行包含一个整数表示答案。

样例输入

5
1 2 3 4 5
2
1 3
2 5

样例输出

4

样例说明

原来的和为 6 + 14 = 20,重新排列为 (1, 4, 5, 2, 3) 后和为 10 + 14 = 24,增

加了 4。

评测用例规模与约定

对于 30% 的评测用例,n, m ≤ 50 ;

对于 50% 的评测用例,n, m ≤ 500 ;

对于 70% 的评测用例,n, m ≤ 5000 ;

对于所有评测用例,1 ≤ n, m ≤ 10^5,1 ≤ A**i ≤ 10^6,1 ≤ L**i ≤ R**i ≤ 10^6 。

知识点:前缀和与差分

代码 

通过90%测试样例代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+5;
ll a[N],b[N],cnt[N];
ll sum1,sum2;
int main() {ll n,m,l,r;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];b[i]=b[i-1]+a[i];}cin>>m;for(int i=1;i<=m;i++){cin>>l>>r;sum1+=b[r]-b[l-1];for(int j=l;j<=r;j++){cnt[j]++;}}sort(a+1,a+n+1);sort(cnt+1,cnt+n+1);for(int i=1;i<=n;i++){sum2+=a[i]*cnt[i];}cout<<sum2-sum1<<endl;return 0;
}

 通过100%测试样例代码(差分优化)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+5;
ll a[N],b[N],cnt[N];
ll sum1,sum2;
void insert(ll l,ll r,ll c)
{cnt[l]+=c;cnt[r+1]-=c;
}
int main() {ll n,m,l,r;cin>>n;for(int i=1;i<=n;i++){cin>>a[i];b[i]=b[i-1]+a[i];}cin>>m;for(int i=1;i<=m;i++){cin>>l>>r;sum1+=b[r]-b[l-1];insert(l,r,1);}for(int i=1;i<=n;i++){cnt[i]+=cnt[i-1];}sort(a+1,a+n+1);sort(cnt+1,cnt+n+1);for(int i=1;i<=n;i++){sum2+=a[i]*cnt[i];}cout<<sum2-sum1<<endl;return 0;
}

http://www.lryc.cn/news/333095.html

相关文章:

  • STM32重要参考资料
  • [StartingPoint][Tier0]Preignition
  • 数据库系统概论(超详解!!!)第三节 关系数据库标准语言SQL(Ⅴ)
  • SpringBoot | Spring Boot“整合Redis“
  • SV学习笔记(四)
  • Midjourney艺术家分享|By Moebius
  • Vue - 1( 13000 字 Vue 入门级教程)
  • Vue关键知识点
  • Prometheus+grafana环境搭建redis(docker+二进制两种方式安装)(四)
  • 宝塔面板安装nginx流媒体服务器(http-flv)
  • LNMP环境:揭秘负载均衡与高可用性设计
  • 深入理解Java异常处理机制(day20)
  • Docker实战教程 第1章 Linux快速入门
  • java数据结构与算法刷题-----LeetCode172. 阶乘后的零
  • 掌握数据相关性新利器:基于R、Python的Copula变量相关性分析及AI大模型应用探索
  • Centos7环境下安装MySQL8详细教程
  • 趣学前端 | 综合一波CSS选择器的用法
  • 数据库 06-04 恢复
  • 基于MPPT的风力机发电系统simulink建模与仿真
  • GD32F30x IO 复用问题
  • BPMNJS 在原生HTML中的引入与使用
  • HarmonyOS 应用开发之通过数据管理服务实现数据共享静默访问
  • ubuntu强密码支持
  • C语言中文分词 Friso的使用教程
  • MySQL中drop、truncate和delete的区别
  • Deep Image Prior
  • leetcode148. 排序链表
  • 【深度学习环境配置】一文弄懂cuda,cudnn,NVIDIA Driver version,cudatoolkit的关系
  • C语言中的字符与字符串:魔法般的函数探险
  • 【JAVASE】带你了解面向对象三大特性之一(继承)