题目简化和分析:

为了更加快速的求出答案,好像没前缀和快速。

为了大家更好的理解线段树,我们使用了线段树。

如果您并不了解线段树,可以转战模板。

因为我们知道线段树可以快速求区间和,于是我们建两棵树。

一个是原来数组,一个是排好序的数组。

每次查询分别用不同的线段树区间和就行了。

Solution:

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef double db; const int N=4e5+50;
const int M=1e5+50; inline ll read(){
ll x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);
ch=getchar();
}
return x*f;
} ll n,m;
ll v[N]; ll ans1[N],ans2[N];
ll ls(ll x){return x<<1;}
ll rs(ll x){return x<<1|1;}
void push_up1(ll p){
ans1[p]=ans1[ls(p)]+ans1[rs(p)];
}
void push_up2(ll p){
ans2[p]=ans2[ls(p)]+ans2[rs(p)];
}
void build1(ll p,ll l,ll r){
if(l==r){ans1[p]=v[l];return;}
ll mid=(l+r)>>1;
build1(ls(p),l,mid);
build1(rs(p),mid+1,r);
push_up1(p);
}
void build2(ll p,ll l,ll r){
if(l==r){ans2[p]=v[l];return;}
ll mid=(l+r)>>1;
build2(ls(p),l,mid);
build2(rs(p),mid+1,r);
push_up2(p);
}
ll query1(ll nx,ll ny,ll l,ll r,ll p){
ll res=0;
if(nx<=l&&r<=ny) return ans1[p];
ll mid=(l+r)>>1;
if(nx<=mid) res+=query1(nx,ny,l,mid,ls(p));
if(ny>mid) res+=query1(nx,ny,mid+1,r,rs(p));
return res;
}
ll query2(ll nx,ll ny,ll l,ll r,ll p){
ll res=0;
if(nx<=l&&r<=ny) return ans2[p];
ll mid=(l+r)>>1;
if(nx<=mid) res+=query2(nx,ny,l,mid,ls(p));
if(ny>mid) res+=query2(nx,ny,mid+1,r,rs(p));
return res;
}
int main()
{
n=read();
for(int i=1;i<=n;++i) v[i]=read();
build1(1,1,n);
sort(v+1,v+n+1);
build2(1,1,n);
m=read();
for(int i=1;i<=m;++i){
ll op,l,r;
op=read();
if(op==1){
l=read(),r=read();
printf("%lld\n",query1(l,r,1,n,1));
}else{
l=read(),r=read();
printf("%lld\n",query2(l,r,1,n,1));
}
}
return 0;
}

CF433B的更多相关文章

  1. CF433B Kuriyama Mirai's Stones 题解

    Content 有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\).有 \(m\) 次询问,询问有以下两种: \(1~l~r\),求 \(\sum\limits_{i=l ...

随机推荐

  1. 工作中必备的12个Git命令

    前言 以下是工作中必备的12个Git命令,包括创建和初始化仓库.克隆远程仓库.添加和提交文件.查看状态和历史记录.创建和切换分支.合并分支以及推送和拉取远程仓库等操作.掌握这些命令可以帮助你进行基本的 ...

  2. Prometheus-2:blackbox_exporter黑盒监控

    黑盒监控blackbox_exporter 前边介绍有很多exporter可以直接将metrics暴露给Prometheus进行监控,这些称为"白盒监控",那些exporter无法 ...

  3. iis7以上 ssl 证书导入

    证书导入 开始 -〉运行 -〉MMC: 启动控制台程序,选择菜单"文件"中的"添加/删除管理单元"-> "添加",从"可用的 ...

  4. Isito 入门(四):微服务可观测性

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 可观测性 通过 Gateway 访问 Kiali 查看链路追踪数据 可能失败的原因 修复 Kiali Grafa ...

  5. Angular:error TS2717: Subsequent property declarations must have the same type. Property 'contentRect' mu st be of type 'DOMRectReadOnly', but here has type 'DOMRectReadOnly'.

    解决方案 在tsconfig.json的compilerOptions选项中添加如下内容"skipLibCheck": true. 如下图所示 之后重新启动项目. 如下图启动成功

  6. 关于Linux下服务器MySQL的安装和搭建

    一.检测是否已经安装Mysql 检测 # yum list installed | grep mysql //检查安装 # yum -y remove mysql-libs.x86_64 //卸载 / ...

  7. Visual Studio常用快捷键(附带免费PDF)

    前言 对于开发者而言,熟悉快捷键的使用,能够起到事半功倍的作用,提高工作效率.以下是我整理的一份Visual Studio常用快捷键清单,希望能够帮助到你. 常用快捷方式 快捷键 功能 Ctrl + ...

  8. 26种source-map看花了眼?别急,理解这几个全弄懂

    上一篇 webpack处理模块化源码 的文章中提到了 "source map",这一篇来详细说说. 有什么作用 source map 用于映射编译后的代码与源码,这样如果编译后的代 ...

  9. 通过jmeter上传/导入文件

    系统性能测试,需要模拟生产环境搭建应用服务和建造环境数据,最大限度的还原生产环境,使系统性能测试的指标更加合乎实际,真实.准确. 如某项目财务系统中的薪资管理模块做工资计算的压测,需要在系统内造179 ...

  10. [ABC150F] Xor Shift

    2023-03-10 题目 题目传送门 翻译 翻译 难度&重要性(1~10):6 题目来源 AtCoder 题目算法 KMP,Z函数 解题思路 首先是按位确定,令 \(t(i,j)\) 表示 ...