Content

有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\)。有 \(m\) 次询问,询问有以下两种:

  • \(1~l~r\),求 \(\sum\limits_{i=l}^ra_i\)。
  • \(2~l~r\),将数组非降序排列后再依次标号,然后再求 \(\sum\limits_{i=l}^ra_i\)。

数据范围:\(1\leqslant l\leqslant r\leqslant n\leqslant 10^5,1\leqslant m\leqslant 10^5,1\leqslant a_i\leqslant 10^9\)。

Solution

这道题旨在考察对前缀和的操作,比如说这道题目我们就可以用前缀和很好地求解。具体如下:

我们先将没有排序的数组求出他们的前缀和 \(s_i=\sum\limits_{j=1}^ia_j\),然后再按照题目要求排序得到 \(a'\) 数组,再求出 \(s'_i=\sum\limits_{j=1}^ia_j\)。再接着,我们根据两种不同的操作分类讨论:

  1. 对于第一种操作,我们知道:\(s_{l-1}=\sum\limits_{i=1}^{l-1} a_i,s_r=\sum\limits_{i=1}^n a_i\)。由此我们得到 \(s_r-s_{l-1}=a_r+a_{r-1}+...+a_l+a_{l-1}+...+a_1-(a_l+a_{l-1}+...+a_l)=a_l+a_{l+1}+...+a_r\)。正好就是我们所要求的 \([l,r]\) 这个区间内所有数的总和。由此我们就知道了,第一种操作的答案就是 \(s_r-s_{l-1}\)。
  2. 对于第二种操作,和第一种操作类似,只不过变成了排序后的数组的前缀和罢了,除了排序以外几乎没什么差别,答案就是 \(s'_r-s'_{l-1}\)。

Code

#include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
using namespace std; int n, m, a1[100007], a2[100007];
long long sum[3][100007]; int main() {
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
scanf("%d", &a1[i]);
a2[i] = a1[i];
}
sort(a2 + 1, a2 + n + 1);
for(int i = 1; i <= n; ++i)
sum[1][i] = sum[1][i - 1] + a1[i], sum[2][i] = sum[2][i - 1] + a2[i];
scanf("%d", &m);
while(m--) {
int opt, l, r;
scanf("%d%d%d", &opt, &l, &r);
printf("%lld\n", sum[opt][r] - sum[opt][l - 1]);
}
return 0;
}

CF433B Kuriyama Mirai's Stones 题解的更多相关文章

  1. 433B.Kuriyama Mirai's Stones

    Kuriyama Mirai has killed many monsters and got many (namely n) stones. She numbers the stones from  ...

  2. Codeforces Round #248 (Div. 2) B. Kuriyama Mirai's Stones

    题目简单描述就是求数组中[l,r]区间的和 #include <iostream> #include <vector> #include <string> #inc ...

  3. 动态规划,而已! CodeForces 433B - Kuriyama Mirai&#39;s Stones

    Kuriyama Mirai has killed many monsters and got many (namely n) stones. She numbers the stones from  ...

  4. codechef Jewels and Stones 题解

    Soma is a fashionable girl. She absolutely loves shiny stones that she can put on as jewellery acces ...

  5. CF264D - Colorful Stones 题解

    题面 官方题解 模拟赛题解 题解概述: 定义符号A~B表示序列A是序列B的子序列,A!~B反之. 设操作序列为I,则有A~I,B!~I,C~I,D!~I. 可得出条件①B!~C且D!~A,所以我们只要 ...

  6. 2017 ACM-ICPC亚洲区域赛北京站J题 Pangu and Stones 题解 区间DP

    题目链接:http://www.hihocoder.com/problemset/problem/1636 题目描述 在中国古代神话中,盘古是时间第一个人并且开天辟地,它从混沌中醒来并把混沌分为天地. ...

  7. Codeforces Round #248 (Div. 2) (ABCD解决问题的方法)

    比赛链接:http://codeforces.com/contest/433 A. Kitahara Haruki's Gift time limit per test:1 second memory ...

  8. codeforces433B

    Kuriyama Mirai's Stones CodeForces - 433B 有n颗宝石,每个宝石都有自己的价值. 然后m次询问.问区间[i,j]的宝石的总值,或者问排序后的区间[i,j]的总值 ...

  9. HDU 全国多校第四场 题解

    题解 A AND Minimum Spanning Tree 参考代码: #include<bits/stdc++.h> #define maxl 200010 using namespa ...

随机推荐

  1. 抽象类和接口的区别详解、package和import

    1.抽象类和接口以及抽象类和接口的区别. 1.1.抽象类的基础语法(见昨天笔记) 1.2.接口的基础语法 1.接口是一种"引用数据类型". 2.接口是完全抽象的. 3.接口怎么定义 ...

  2. ML2021 | (腾讯)PatrickStar:通过基于块的内存管理实现预训练模型的并行训练

    ​  前言  目前比较常见的并行训练是数据并行,这是基于模型能够在一个GPU上存储的前提,而当这个前提无法满足时,则需要将模型放在多个GPU上.现有的一些模型并行方案仍存在许多问题,本文提出了一种名为 ...

  3. pechkin 导出https路径的图片

    使用Pechkin.Synchronized可以方便导出html为pdf,但是对于https路径的图片并不支持,仅支持http路径下的图片 解决方案:图片使用本地绝对路径(相对于服务器) 以下是我获取 ...

  4. [NOI2020] 美食家

    很好,自己会做NOI签到题了,去年只要会这题,再多打点暴力,\(Ag\)到手,希望今年\(NOI\)同步赛过\(Ag\)线吧,得有点拿得出手的成绩证明啊. 考虑\(T\)非常大,\(n\)又很小. 想 ...

  5. Bedtools genomecov 计算覆盖度

    简单说明: 从2.28.0版开始,bedtools使用htslib库支持CRAM格式 除了BAM文件,bedtools默认所有的输入文件都以TAB键分割 除非使用-sorted选项,bedtools默 ...

  6. 避免UE4项目VS中误改源码.h文件导致编译时间长

    最近几天两次触发VS中误改UE4源码头文件,导致需要编译大量源码的情况:再好的习惯也有不可靠的时候,还是需要可靠方案解决这个问题:官方提供了预编译版本(即从Launcher中下载的版本),但是对于程序 ...

  7. 【模板】滑动窗口最值(单调队列)/洛谷P1886

    题目链接 https://www.luogu.com.cn/problem/P1886 题目大意 有一个长为 \(n\) 的序列 \(a\) ,以及一个大小为 \(k\) 的窗口.现在这个从左边开始向 ...

  8. springcloud - alibaba快速上手 - 更新完毕

    1.简单对比一下springcloud与springcloud-alibaba 2.准备知识 官网:https://nacos.io/zh-cn/ 查看cloud和springboot的对应关系 ht ...

  9. 大数据学习day26----hive01----1hive的简介 2 hive的安装(hive的两种连接方式,后台启动,标准输出,错误输出)3. 数据库的基本操作 4. 建表(内部表和外部表的创建以及应用场景,数据导入,学生、分数sql练习)5.分区表 6加载数据的方式

    1. hive的简介(具体见文档) Hive是分析处理结构化数据的工具   本质:将hive sql转化成MapReduce程序或者spark程序 Hive处理的数据一般存储在HDFS上,其分析数据底 ...

  10. oracle 根据ids转names

     WITH t AS (SELECT '1,2,3,4' a, 1 b    FROM Dual  UNION ALL  SELECT '1,2,3' a, 2 b FROM Dual),p AS ( ...