洛谷 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区间的加和
输出格式:
每行一个数,分别是每次询问的结果
输入输出样例
- 5
- 4
- x 3 8
- y 1 3
- x 4 9
- y 3 4
- 8
- 17
- 线段树版题
区间求和
单点修改
屠龙宝刀点击就送
- #include <iostream>
- #include <cstdio>
- using namespace std;
- #define Max 200000
- struct node
- {
- int l,r,dis;
- }tree[Max*];
- int t=,n,w;
- char cz;
- void up(int k)
- {
- tree[k].dis=tree[k<<].dis+tree[k<<|].dis;
- }
- void build(int l,int r,int k)
- {
- tree[k].l=l;tree[k].r=r;
- if(l==r)
- {
- tree[k].dis=;
- return;
- }
- int mid=(l+r)>>;
- build(l,mid,k<<);
- build(mid+,r,k<<|);
- up(k);
- }
- void add(int to,int v,int k)
- {
- if(tree[k].l==tree[k].r)
- {
- tree[k].dis+=v;
- return;
- }
- int mid=(tree[k].l+tree[k].r)>>;
- if(to<=mid) add(to,v,k<<);
- else add(to,v,k<<|);
- up(k);
- }
- int ans=;
- void query(int u,int v,int k)
- {
- if(tree[k].l==u&&tree[k].r==v)
- {
- ans+=tree[k].dis;
- return ;
- }
- int mid=(tree[k].l+tree[k].r)>>;
- if(mid>=v) query(u,v,k<<);
- else if(mid<u) query(u,v,k<<|);
- else query(u,mid,k<<),query(mid+,v,k<<|);
- }
- int main()
- {
- scanf("%d",&n);
- build(,n,);
- scanf("%d",&w);
- int u,v;
- while(w--)
- {
- cin>>cz;
- scanf("%d%d",&u,&v);
- if(cz=='x')
- add(u,v,);
- else if(cz=='y')
- {
- ans=;
- query(u,v,);
- printf("%d\n",ans);
- }
- }
- return ;
- }
洛谷 P2068 统计和的更多相关文章
- 洛谷——P2068 统计和
P2068 统计和 题目描述 给定一个长度为n(n<=100000),初始值都为0的序列,x(x<=10000)次的修改某些位置上的数字,每次加上一个数,然后提出y (y<=1000 ...
- 洛谷P2068 统计和
题目描述 给定一个长度为\(n(n \leq 100000)\),初始值都为\(0\)的序列,\(x(x \leq 10000)\)次的修改某些位置上的数字,每次加上一个数,然后提出\(y (y \l ...
- 洛谷P2068 统计和题解
题目描述 给定一个长度为n(n<=100000),初始值都为0的序列,x(x<=10000)次的修改某些位置上的数字,每次加上一个数,然后提出y (y<=10000)个问题,求每段区 ...
- AC日记——统计和 洛谷 P2068
统计和 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 100005 int n,m,tree ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
随机推荐
- Flexpaper二次开发入门教程》(十) Flexpaper简单使用-第一个Flexpaper例子
4. Flexpaper简单使用 通过上面三章的内容,大家对Flexpaper.SWFTools应该有大概的了解了,SWF文件也已经生成了,我们开始进入Flexpaper的使用的介绍. 本章中只演示F ...
- spark学习之IDEA配置spark并wordcount提交集群
这篇文章包括以下内容 (1)IDEA中scala的安装 (2)hdfs简单的使用,没有写它的部署 (3) 使用scala编写简单的wordcount,输入文件和输出文件使用参数传递 (4)IDEA打包 ...
- 【WIP】LaTex入门
创建: 2018/06/15 说明: 这鸟东西实在没什么用的感觉,无奈学校报告要用这个写.无奈抽点时间学一下.
- 零基础配置Linux服务器环境
详细步骤请走官方通道 over!over!over!
- lightoj1047 【简单线性DP】
因为写不出hdu3401...好像要用单调队列优化...这边水了一个... 题意: 给n个房子涂色,给出n个房子对应颜色的花费,问涂完所有颜色花费最少. 保证相邻房子颜色不能相同. 思路: dp[i] ...
- OPENGL4_变换
几种变换的几何意义说明 http://blog.csdn.net/onafioo/article/details/22094247 变换的执行顺序问题 正常顺序 1 视图(观察)变换 2 模型变换 3 ...
- MongoDb 创建用户以及其他版本造成的一些问题
问题:require auth data to have schema version 3 but found 1 这是可以查看如下链接: http://stackoverflow.com/quest ...
- 题解 P1162 【填涂颜色】
看到题目规模是n(1≤n≤30)即最大规模为30*30 本蒟蒻有个奇妙的想法!! 核心思路:搜索地图内除开被1包围着的0,并标注为1(即不填色) !!!那么,我们可以从每一个边界点开始去搜索 话不多说 ...
- H - String painter
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> ...
- 最短路之SPFA(单源)HDU 1317
#include <iostream> #include<cstdio> #include<cstring> #include<cmath> #incl ...