cojs.tk(所有题目来源) 树状数组专练
1.求和问题
★ 输入文件:sum.in
输出文件:sum.out
简单对比
时间限制:1.2 s 内存限制:128 MB
第二行有n个整数
第三行有一个整数m
下面m行,每行两个整数i与j(i<=j),表示求和的起始和终止位置。
输出有m行, 每行一个整数,表示这个数段数列的和。
2 3 4 7 8 9 10 234
5
2 3
4 7
1 3
7 7
7 8
34
9
10
244
对于70%的数据,n<=10000,m<=2*10^5,数列中的数不超过32767
对于100%的数据,n<=10000,m<=2*10^5,数列中的数不超过10^9
#define INF 10001
#include<iostream>
using namespace std;
#include<cstdio>
long long tree[INF];
int n,m,a,b;
int lowbit(int k)
{
return k&-k;
}
void add(int k,int num)
{
while(k<=n)
{
tree[k]+=num;
k+=lowbit(k);
}
}
long long int count(int k)
{
long long int sum=;
while(k)
{
sum+=tree[k];
k-=lowbit(k);
}
return sum;
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&n);
int x;
for(int i=;i<=n;++i)
{
scanf("%d",&x);
add(i,x);
}
scanf("%d",&m);
for(int i=;i<=m;++i)
{
scanf("%d%d",&a,&b);
cout<<count(b)-count(a-)<<endl;/*这才是区间a--b的和*/
}
fclose(stdin);
fclose(stdout);
return ;
}
2.数列操作
★☆ 输入文件:shulie.in
输出文件:shulie.out
简单对比
时间限制:1 s 内存限制:160 MB
【问题描述】
假设有一列数 {Ai }(1 ≤ i ≤ n) ,支持如下两种操作:
(1)将 A k 的值加 D 。( k, D 是输入的数)
(2) 输出 A s +A s+1 +…+A t 。( s, t 都是输入的数, S ≤ T )
根据操作要求进行正确操作并输出结果。
【输入格式】
输入文件第一行一个整数 n(0<=n<=100000) , 第二行为 n 个整数,表示 {A i } 的初始值。
第三行为一个整数 m(0<=m<=150000) ,表示操作数。 下接 m 行,每行描述一个操作,有如下两种情况:
ADD k d ( 表示将 A k 加 d , 1<=k<=n , d 为整数 )
SUM s t (表示输出 A s +…+A t )
【输出格式】
对于每一个 SUM 提问,输出结果
【输入输出样例】
输入:
4
1 4 2 3
3
SUM 1 3
ADD 2 50
SUM 2 3
输出:
7
56
#include<iostream>
using namespace std;
#include<cstdio>
string a="ADD";
int n,m;
#define INF 100100
long long int tree[INF];
int s,t;
int lowbit(int k)
{
return k&-k;
}
void add(int k,int num)
{
while(k<=n)
{
tree[k]+=num;
k+=lowbit(k);
}
}
long long int count(int k)
{
long long int sum=;
while(k)
{
sum+=tree[k];
k-=lowbit(k);
}
return sum;
}
int main()
{
freopen("shulie.in","r",stdin);
freopen("shulie.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d",&s);
add(i,s);
}
scanf("%d",&m);
for(int i=;i<=m;++i)
{
string l;
cin>>l;
scanf("%d%d",&s,&t);
if(l==a)
add(s,t);
else cout<<count(t)-count(s-)<<endl;
}
fclose(stdin);
fclose(stdout);
return ;
}
cojs.tk(所有题目来源) 树状数组专练的更多相关文章
- [BZOJ 1901] Dynamic Rankings 【树状数组套线段树 || 线段树套线段树】
题目链接:BZOJ - 1901 题目分析 树状数组套线段树或线段树套线段树都可以解决这道题. 第一层是区间,第二层是权值. 空间复杂度和时间复杂度均为 O(n log^2 n). 线段树比树状数组麻 ...
- luogu3368树状数组模板2
题目链接:https://www.luogu.org/problemnew/show/P3368 题意:与模板1不同的是这题的操作是树状数组并不在行的区间更新和单点查找,如果按照模板1那样写肯定会T. ...
- 树状数组求区间和模板 区间可修改 参考题目:牛客小白月赛 I 区间
从前有个东西叫树状数组,它可以轻易实现一些简单的序列操作,比如单点修改,区间求和;区间修改,单点求值等. 但是我们经常需要更高级的操作,比如区间修改区间查询.这时候树状数组就不起作用了,只能选择写一个 ...
- Solution -「树状数组」 题目集合
T1 冒泡排序 题目描述 clj 想起当年自己刚学冒泡排序时的经历,不禁思绪万千 当年,clj 的冒泡排序(伪)代码是这样的: flag=false while (not flag): flag=tr ...
- 数据结构--树状数组(黑龙江省第八届大学生程序设计竞赛--post office)
例题来源: 题目: 1468: Post office 题目描述 There are N(N<=1000) villages along a straight road, numbered fr ...
- POJ3321 Apple Tree (树状数组)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 16180 Accepted: 4836 Descr ...
- Vijos P1066 弱弱的战壕【多解,线段树,暴力,树状数组】
弱弱的战壕 描述 永恒和mx正在玩一个即时战略游戏,名字嘛~~~~~~恕本人记性不好,忘了-_-b. mx在他的基地附近建立了n个战壕,每个战壕都是一个独立的作战单位,射程可以达到无限(“mx不赢定了 ...
- Vijos P1448 校门外的树【多解,线段树,树状数组,括号序列法+暴力优化】
校门外的树 描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的…… 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K= ...
- 牛客练习赛38 D 题 出题人的手环 (离散化+树状数组求逆序对+前缀和)
链接:https://ac.nowcoder.com/acm/contest/358/D来源:牛客网 出题人的手环 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他 ...
随机推荐
- delegate, event - 里面涉及的参数类型必须完全一致,子类是不行的
public void TestF() { Test += Fun; } public void Fun(Person p) { } // 如 Person变成 SubPerson,则报错..pub ...
- 百度vue服务端渲染(ssr)有感
前端各种框架工具层次不穷,日新月异,越学越混乱了快 知乎上看到了一段回复,豁然开朗的感觉. Web 2.0时代最大的思想革命本质不是前后端分离,而是把网页当作独立的应用程序(app).前后端分离只是实 ...
- Android 实现对图片 Exif 的修改(Android 自带的方法)
很多时候我们都要对我们的图片信息进行一些处理,比如向图片中写入经纬度,拍摄时间,设备信息,作者等等. 这个时候我们就要对我们的图片Exif进行写入信息的操作,当然,我们想知道图片的Exif信息,也可以 ...
- 帮助小伙伴写的组装xml字符串类
import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.uti ...
- openstack 问题澄清
1. neutron中plugin与agent是一一对应的吗? 在不使用ml2时,plugin与agent一一对应,如ovs-plugin与ovs-agent:当使用ml2 plugin时,该plug ...
- POJ1258 (最小生成树prim)
Agri-Net Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 46319 Accepted: 19052 Descri ...
- maven的项目管理方面细节
1.1 Maven 1.依赖管理.jar包.工程之间的依赖. 2.项目构建.实现项目的一步构建. 3.工程聚合.工程继承.工程依赖. 1.2 Maven的工程类型: 1.war包工程 2. ...
- Windows+Ubuntu双系统如何设置Windows为第一启动项
在安装双系统的时候,如果先安装的是Windows然后再安装Ubuntu系统,开机时是以Ubuntu的grub来引导Windows的,而且默认进入Ubuntu系统,下面我们介绍如何更改这个默认项,然后让 ...
- 成都项目中因为MYSQL与SSDB备分时间不一致,导致主键产生器错误解决一例
-- JFinal错误提示 Duplicate entry '1791361-1823391' for key 'PRIMARY' -- 1.查看SSDB的主键生成器值ssdb 127.0.0.1:8 ...
- jquery事件之select选中事件
根据select下拉列表选中的不同选项执行不同的方法,工作中经常会用到,这里就要用到Jquery的select选中事件 这里给select加一个叫label_id的id,然后通过id选择器找到这个节点 ...