树状数组--模版1和2 P3368、P3374
题目描述
如题,已知一个数列,你需要进行下面两种操作: 将某一个数加上 x 求出某区间每一个数的和 输入格式
第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i项的初始值。 接下来 m 行每行包含 个整数,表示一个操作,具体如下: x k 含义:将第 x 个数加上 k x y 含义:输出区间 [x,y]内每个数的和 输出格式
输出包含若干行整数,即为所有操作 的结果。
#include <cstdio>
#include <iostream>
using namespace std;
int n,m;
int x,y;
int w1;
int a[];
int s[];
void fix(int x,int v)
{
for (int i = x;i <= n;i+=i&-i)
{
s[i]+=v;
}
}
int find(int x)
{
int ret=;
for (int i = x;i>;i-=i&-i)
{
ret+=s[i]; }
return ret;
}
int main()
{
scanf ("%d%d",&n,&m);
for (int i = ;i <= n;i++)
{
scanf ("%d",&a[i]);
fix(i,a[i]);
}
for (int i = ;i <= m;i++)
{
scanf ("%d",&w1);scanf ("%d%d",&x,&y);
if (w1==){
fix(x,y);
}
if (w1==)
{
cout<<find(y)-find(x-)<<endl;
}
}
return ;
}
2.模版2
题目描述
如题,已知一个数列,你需要进行下面两种操作:
1.将某区间每一个数数加上x
2.求出某一个数的值
输入格式
第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。
第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。
接下来M行每行包含2或4个整数,表示一个操作,具体如下:
操作1: 格式:1 x y k 含义:将区间[x,y]内每个数加上k
操作2: 格式:2 x 含义:输出第x个数的值
输出格式
输出包含若干行整数,即为所有操作2的结果。
因为本题不是单纯修改一个数,而是修改一段区间的数,所以fix(x,k)表示把x到最后一个数都加上,但是我们把y+1到最后一个数也都加上了k,而我们只需要把x到y加k,所以fix(y+1,-k)把y+1到最后一个数都减去k,就是把多加的都减去。我们就知道了每个数所对应的修改量,把原来的数加上修改量,就是所得的数
#include <cstdio>
#include <iostream>
using namespace std;
long long n,m;
long long x,y,k;
long long w1;
long long a[];
long long s[];
void fix(long long x,long long v)
{
for (long long i = x;i <= n;i+=i&-i)
{
s[i]+=v;
}
}
long long find(long long x)
{
long long ret=;
for (long long i = x;i>;i-=i&-i)
{
ret+=s[i];
}
return ret;
}
int main()
{
scanf ("%lld%lld",&n,&m);
for (int i = ;i <= n;i++)
{
scanf ("%lld",&a[i]);
}
for (int i = ;i <= m;i++)
{
scanf ("%lld",&w1);
if (w1==){
scanf ("%lld%lld%lld",&x,&y,&k);
fix(x,k);
fix(y+,-k);
}
if (w1==)
{
scanf ("%lld",&x);
cout<<a[x]+find(x)<<endl;
}
}
return ;
}
树状数组--模版1和2 P3368、P3374的更多相关文章
- poj 2155 Matrix---树状数组套树状数组
二维树状数组模版,唯一困难,看题!!(其实是我英语渣) Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 22098 ...
- 学习笔记 BIT(树状数组)
痛定思痛,打算切割数据结构,于是乎直接一发BIT 树状数组能做的题目,线段树都可以解决 反之则不能,不过树状数组优势在于编码简单和速度更快 首先了解下树状数组: 树状数组是一种操作和修改时间复杂度都是 ...
- HDU 3584 三维树状数组
三维树状数组模版.优化不动了. #include <set> #include <map> #include <stack> #include <cmath& ...
- 洛谷P3368 【模板】树状数组 2
P3368 [模板]树状数组 2 102通过 206提交 题目提供者HansBug 标签 难度普及/提高- 提交 讨论 题解 最新讨论 暂时没有讨论 题目描述 如题,已知一个数列,你需要进行下面两 ...
- P3368 【模板】树状数组 2(区间增减,单点查询)
P3368 [模板]树状数组 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别表 ...
- 模板【洛谷P3368】 【模板】树状数组 2
P3368 [模板]树状数组 2 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的值 树状数组区间加,单点查询. code: #include <i ...
- 洛谷 P3368 【模板】树状数组 2 题解
P3368 [模板]树状数组 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的值 输入格式 第一行包含两个整数N.M,分别表示该数列数字的个 ...
- P3368 【模板】树状数组 2
原题链接 https://www.luogu.org/problemnew/show/P3368 这个题和洛谷P3374树状数组1 有些不同,在普通的树状数组上运用了差分的知识.(由于P3374涉及 ...
- 洛谷 P3368 【模板】树状数组 2(区间加,单点查询)
题目链接 https://www.luogu.org/problemnew/show/P3368 树状数组 最基础的用法:https://www.cnblogs.com/yinyuqin/p/1096 ...
随机推荐
- 关于spring-mvc.xml的静态资源的配置
转 配置如下: <!-- 配置静态资源 --><mvc:resources location="/static/" mapping="/static/* ...
- (转)ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)
有时候,当我们使用“mysql”.“mysqladmin”.“mysqldump”等命令管理数据库时,服务器抛出类似如下错误: 1 ERROR 2002 (HY000): Can't connect ...
- JPA#实体属性转换器
__震惊,一下内容竟然是空白 用途 (自动转换数据库字段和实体属性间的最佳取值): - 1. POJO持久化到数据库表中的时候,对某些特殊属性处理后,用处理过的值作为数据库字段的值. 2. 从数据库查 ...
- 090-PHP数组过滤函数array_filter
<?php function odd($x){ //定义过滤偶数的函数 if($x%2==1) return TRUE; } function even($x){ //定义过滤奇数的函数 if( ...
- 第三节MapStruct翻译--Defining a mapper
第三节MapStruct--Defining a mapper 在这一章节你将学到如何用mapstruct和它的一些必要的操作选项来定义一个bean mapper. 3.1 Basic mapping ...
- Django 数据库配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你的数据库名称 'USER': ' ...
- Maccms后门分析复现(并非官网的Maccms){10.15 第二十二天}
该复现参考网络中的文章,该漏洞复现仅仅是为了学习交流,严禁非法使用!!!! Maccms官网:http://www.maccms.cn/ Maccms网站基于PHP+MYSQL的系统,易用性.功能良好 ...
- Swift字符串截取与Range使用
1.String.Index String.Index表示一个位置,使用String与String.Index可以获取该位置的Character let str = "123456789&q ...
- 关于SOA的架构设计案例分析
SOA体系架构及相关技术,主要应用在企业应用集成领域,它能够以服务的方式共享和复用企业现有应用资产,保护用户IT投资,并能够以服务的方式构建新的业务流程,对企业流程进行灵活重构和优化,增强业务的敏捷性 ...
- dwz框架
官网:http://jui.org/index_menu.html PDF教程:http://jui.org/doc/dwz-user-guide.pdf DWZ最大的特点是使用html扩展的方式来代 ...