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

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <iostream>
  5. #include <algorithm>
  6. using namespace std;
  7. int n, m, a1[100007], a2[100007];
  8. long long sum[3][100007];
  9. int main() {
  10. scanf("%d", &n);
  11. for(int i = 1; i <= n; ++i) {
  12. scanf("%d", &a1[i]);
  13. a2[i] = a1[i];
  14. }
  15. sort(a2 + 1, a2 + n + 1);
  16. for(int i = 1; i <= n; ++i)
  17. sum[1][i] = sum[1][i - 1] + a1[i], sum[2][i] = sum[2][i - 1] + a2[i];
  18. scanf("%d", &m);
  19. while(m--) {
  20. int opt, l, r;
  21. scanf("%d%d%d", &opt, &l, &r);
  22. printf("%lld\n", sum[opt][r] - sum[opt][l - 1]);
  23. }
  24. return 0;
  25. }

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. vue实现聊天+图片表情功能

    项目需求是这样的:要求实现类似于微信聊天一样,表情+文字效果 "文字效果" 表情包三种方案 表情包的实现其实可以分为以下三种情况: 表情包:点击表情--直接发送大表情(这种方案其实 ...

  2. lambda函数实现链表的小根堆

    struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} explicit ListNode(i ...

  3. uni-app开发 uni.scss 样式的整体化设置

    今天在写uni-app设计的时候,界面图片.图标规格一直无法正常显示.查看了uni-app官网的代码注释后,发现了在style中设置<style lang="scss"> ...

  4. Admixture的监督分群(Supervised analysis)

    目录 说明 实战 说明 Admixture通过EM算法一般用于指定亚群分类:或者在不知材料群体结构背景下,通过迭代交叉验证获得error值,取最小error对应的K值为推荐亚群数目.如果我们预先已知群 ...

  5. GWAS初探

    原理 GWAS 的主要方法学依据是归纳法中的共变法,是探究复杂因果关系最主要的科学思维和方法.所谓共变法,是通过考察被研究现象发生变化的若干场合中,确定是否只有一个情况发生相应变化,如果是,那么这个发 ...

  6. 汽车C2M模式综述

  7. GraphScope 集群部署

    GraphScope 集群部署 1 k8s集群搭建 大致步骤如下: 安装docker.在ubuntu上,可以简单的通过命令sudo apt install docker.io来安装. 安装kubele ...

  8. Windows系统安装MySQL详细教程和安装过程中问题汇总(命令安装),更新时间2021-12-8

    安装包下载 下载地址:https://dev.mysql.com/downloads/mysql/ 点击下载之后,可以选择注册Oracle账号,也可以跳过直接下载. 下载完成后,选择一个磁盘内放置并解 ...

  9. Spark(十)【RDD的读取和保存】

    目录 一.文件类型 1.Text文件 2.Json文件 3.对象文件 4.Sequence文件 二.文件系统 1. MySQL 2. Hbase 一.文件类型 1.Text文件 读写 读取 scala ...

  10. 大数据学习day21-----spark04------1. 广播变量 2. RDD中的cache 3.RDD的checkpoint方法 4. 计算学科最受欢迎老师TopN

    1. 广播变量  1.1 补充知识(来源:https://blog.csdn.net/huashetianzu/article/details/7821674) 之所以存在reduce side jo ...