博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P2068 统计和
阅读量:6320 次
发布时间:2019-06-22

本文共 1761 字,大约阅读时间需要 5 分钟。

P2068 统计和

题目描述

给定一个长度为n(n<=100000),初始值都为0的序列,x(x<=10000)次的修改某些位置上的数字,每次加上一个数,然后提出y (y<=10000)个问题,求每段区间的和。时间限制1秒。

输入输出格式

输入格式:

 

第一行1个数,表示序列的长度n

第二行1个数,表示操作的次数w

后面依次是w行,分别表示加入和询问操作

其中,加入用x表示,询问用y表示

x的格式为"x a b" 表示在序列a的位置加上b

y的格式为"y a b" 表示询问a到b区间的加和

 

输出格式:

 

每行一个数,分别是每次询问的结果

 

输入输出样例

输入样例#1:
54x 3 8y 1 3x 4 9y 3 4
输出样例#1:
817 线段树单点修改区间查询
#include
#include
#include
#include
#include
#define N 410000using namespace std;char ch;int n,m,x,y,ans;int read(){ int 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*10+ch-'0'; ch=getchar();} return x*f;}struct Tree{ int l,r,w,f; }tree[N];void build(int k,int l,int r){ tree[k].l=l,tree[k].r=r; if(tree[k].l==tree[k].r) { tree[k].w=0; return ; } int m=(l+r)>>1; build(k<<1,l,m); build(k<<1|1,m+1,r);}void change_point(int k){ if(tree[k].l==tree[k].r) { tree[k].w+=y; return ; } int m=(tree[k].r+tree[k].l)>>1; if(x<=m) change_point(k<<1); else change_point(k<<1|1); tree[k].w=tree[k<<1].w+tree[k<<1|1].w;}void ask_interval(int k){ if(tree[k].l>=x&&tree[k].r<=y) { ans+=tree[k].w; return ; } int m=(tree[k].r+tree[k].l)>>1; if(x<=m) ask_interval(k<<1); if(y>m) ask_interval(k<<1|1);}int main(){ n=read(),m=read(); build(1,1,n); while(m--) { ans=0; cin>>ch;x=read(),y=read(); if(ch=='x') change_point(1); else { ask_interval(1); printf("%d\n",ans); } } return 0;}

 

转载于:https://www.cnblogs.com/z360/p/7484955.html

你可能感兴趣的文章
C# 模拟POST提交文件
查看>>
PAT 解题报告 1004. Counting Leaves (30)
查看>>
Android开发之蓝牙 --修改本机蓝牙设备的可见性,并扫描周围可用的蓝牙设备
查看>>
[Head First设计模式]生活中学设计模式——外观模式
查看>>
Repository模式中,Update总是失败及其解析
查看>>
.Net 转战 Android 4.4 日常笔记(2)--HelloWorld入门程序
查看>>
[原创]浅谈测试团队转型,思维模式的转变是关键
查看>>
Redis学习-SortedSet
查看>>
android CoordinatorLayout使用
查看>>
机器学习资料大汇总
查看>>
Python selenium 滚动条 详解
查看>>
poj1035Spell checker
查看>>
微信程序开发
查看>>
如何退出minicom【学习笔记】
查看>>
C++内存布局之虚拟继承
查看>>
Sqlserver 数据库基本查询
查看>>
图书馆维护系统总结
查看>>
[hadoop源码阅读][5]-counter的使用和默认counter的含义
查看>>
SAP HUM 如何对一个HU做上架?
查看>>
LINUX系统中动态链接库的创建与使用{补充}
查看>>