Codeforces Round #248 (Div. 2) B称号 【数据结构:树状数组】
主题链接:http://codeforces.com/contest/433/problem/B
题目大意:给n(1 ≤ n ≤ 105)个数据(1 ≤ vi ≤ 109),当中有m(1 ≤ m ≤ 105)个问题,分两种。第一种:给出l,r,让你求出v[l],v[r]之间的全部数据和;另外一种:先将原数据升序排序得到vv数组,给出l,r,让你求出vv[l],vv[r]之间的全部数据和;
此题假设用暴力求解,因为数据太大,会TLE,所以利用树状数组,高速求解区间和的问题。
假设不懂树状数组,能够去看看关于数据结构的知识
代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; int v[100011];
int vv[100011];
long long Cv[100011];// 每一个C数组代表v[i-lowbit(i)+1]到v[i]之间的和
long long Cvv[100011]; int lowbit(int x)
{
return x&(x^(x-1));
}
long long Sumv(int i) //求出数组v[1]到v[i]的和
{
long long result=0;
while (i>=1)
{
result+=Cv[i];
i-=lowbit(i);
}
return result;
}
long long Sumvv(int i) //求出数组vv[1]到vv[i]的和
{
long long result=0;
while (i>=1)
{
result+=Cvv[i];
i-=lowbit(i);
}
return result;
}
int main()
{
int n,m,t,l,r;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&v[i]);
vv[i]=v[i];
}
sort(vv,vv+n+1);
for(int i=1;i<=n;i++)
{
for(int j=i-lowbit(i)+1;j<=i;j++)
Cv[i]+=v[j];
for(int j=i-lowbit(i)+1;j<=i;j++)
Cvv[i]+=vv[j];
}
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%d%d%d",&t,&l,&r);
if(t==1)
{
printf("%I64d\n",Sumv(r)-Sumv(l-1));
}
else
{
printf("%I64d\n",Sumvv(r)-Sumvv(l-1));
}
}
return 0;
}
此题也能够不用树状数组,能够用s[i]数组代表v[1]到v[i]的全部数据和,要求v[l]到v[r]之间的数据和,仅仅须要用s[r]-s[l-1]即可了,两种问题都一样,大家能够自己试试。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Codeforces Round #248 (Div. 2) B称号 【数据结构:树状数组】的更多相关文章
- Codeforces Round #381 (Div. 2) D dfs序+树状数组
D. Alyona and a tree time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- Codeforces Round #301 (Div. 2) E . Infinite Inversions 树状数组求逆序数
E. Infinite Inversions ...
- 【Codeforces Round #433 (Div. 1) C】Boredom(树状数组)
[链接]h在这里写链接 [题意] 给你一个n*n的矩阵. 其中每一列都有一个点. 任意两个点构成了矩形的两个对角点 ->即任意两个点确定了一个矩形. ->总共能确定n*(n-1)/2个矩形 ...
- Codeforces Beta Round #79 (Div. 1 Only) B. Buses 树状数组
http://codeforces.com/contest/101/problem/B 给定一个数n,起点是0 终点是n,有m两车,每辆车是从s开去t的,我们只能从[s,s+1,s+2....t-1 ...
- Codeforces Beta Round #12 (Div 2 Only) D. Ball 树状数组查询后缀、最值
http://codeforces.com/problemset/problem/12/D 这里的BIT查询,指的是查询[1, R]或者[R, maxn]之间的最值,这样就够用了. 设三个权值分别是b ...
- ACM数据结构-树状数组
模板: int n; int tree[LEN]; int lowbit(int x){ return x&-x; } void update(int i,int d){//index,del ...
- Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains 【树状数组维护区间最大值】
题目传送门:http://codeforces.com/contest/799/problem/C C. Fountains time limit per test 2 seconds memory ...
- Codeforces Round #413 (Div1 + Div. 2) C. Fountains(树状数组维护最大值)
题目链接:https://codeforces.com/problemset/problem/799/C 题意:有 c 块硬币和 d 块钻石,每种喷泉消耗硬币或钻石中的一种,每个喷泉有一个美丽值,问建 ...
- 【poj 3167】Cow Patterns(字符串--KMP匹配+数据结构--树状数组)
题意:给2个数字序列 a 和 b ,问按从小到达排序后,a中的哪些子串与b的名次匹配. a 的长度 N≤100,000,b的长度 M≤25,000,数字的大小 K≤25. 解法:[思考]1.X 暴力. ...
随机推荐
- Emacs常用快捷键
基本命令 C-x C-f 打开/新建文件 C-x C-s 保存当前缓冲区 C-x C-w 当前缓冲区另存为 C-x C-v 关闭当前Buffer并打开新文件 C-x i 光标处插入文件 C-x b 切 ...
- WindowImplBase::OnSysCommand-------duilib在最大化和还原间切换
virtual LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if( wPar ...
- 【b601】能量项链
Time Limit: 1 second Memory Limit: 50 MB [问题描述] 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾 ...
- 【边做项目边学Android】手机安全卫士05_2:程序主界面,为每一个条目加入事件
为每一个条目加入点击事件监听器 gv_main.setOnItemClickListener(this); 须要当前Activity实现OnItemClickListener接口.同一时候实现publ ...
- [Recompose] Render Nothing in Place of a Component using Recompose
Learn how to use the ‘branch’ and ‘renderNothing’ higher-ordercomponents to render nothing when a ce ...
- 【Lucene4.8教程之四】分析 2014-06-22 10:51 1412人阅读 评论(0) 收藏
1.基础内容 (1)相关概念 分析(Analysis),在Lucene中指的是将域(Field)文本转换成最基本的索引表示单元--项(Term)的过程.在搜索过程中,这些项用于决定什么样的文档能够匹配 ...
- gcc编译选项--转
gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) ...
- Docker容器应用日志查看
原文:Docker容器应用日志查看 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/benben_2015/article/details/80708 ...
- html5-8 如何控制html5中的视频标签和音频标签
html5-8 如何控制html5中的视频标签和音频标签 一.总结 一句话总结:找到视频或者音频的element对象,然后查手册看对应的方法或者属性就可以,里面有控制的. 1.如何控制html5中的视 ...
- MySQL参数文件位置
对于linux/unix: mysql --help|grep my.cnf /etc/my.cnf, /etc/mysql/my.cnf, /usr/local/etc/my.cnf, ~/.m ...