网上很多博客都只给了代码,这对于很多刚接触树状数组的人来说往往一头雾水。我说一下主要思路:你每次更新一个点的时候(加一个数),后面所有的点的前缀和都会相应的加上这个数,这其实就相当于这个数受了这个点影响,你每次画一个点的时候,其实就相当于画了它后面所有的点,然后你把那些不必要画的点受的影响减回来就行
#include <bits/stdc++.h>
#define lowbit(i) i&(-i)
using namespace std;
const int N = 100000+10;
int a[N],n,m,k,l,r;
void update(int i,int val)
{
while(i<=n)
{
a[i]+=val;
i+=lowbit(i);
}
return ;
}
int sum(int i)
{
int xx = 0;
while(i>0)
{
xx+=a[i];
i-=lowbit(i);
}
return xx;
}
int main()
{
while(scanf("%d",&n)&&n)
{
memset(a,0,sizeof(a));
for(int i=1;i<=n;i++)
{
scanf("%d %d",&l,&r);
update(l,1);
update(r+1,-1);
}
printf("%d",sum(1));
for(int i=2;i<=n;i++)
{
printf(" %d",sum(i));
}
printf("\n");
}
return 0;
}
分享到:
相关推荐
4. **HDU1556:Color the ball(裸的区间修改,单点查询)** - **题意**:给定一个区间,支持两种操作:一是修改某个区间内所有元素的值;二是查询某个位置的值。 - **解法**:采用树状数组结合差分数组的方法来...
HDU 1022 Train Problem I 附详细思路
3. **数据结构**:数组、链表、栈、队列、树(二叉树、平衡树如AVL和红黑树)、图(邻接矩阵、邻接表、最小生成树、拓扑排序等)。 4. **字符串处理**:KMP算法、Manacher's Algorithm、Rabin-Karp算法等。 5. **...
### hdu1250高精度加法 #### 背景介绍 在计算机科学与编程竞赛中,处理大整数运算(特别是加法、减法、乘法等)是常见的需求之一。当数字的位数超过了标准数据类型(如`int`、`long`等)所能表示的最大值时,就需要...
【标题】"HDU题目java实现"所涉及的知识点主要集中在使用Java编程语言解决杭州电子科技大学(HDU)在线评测系统中的算法问题。HDU是一个知名的在线编程竞赛平台,它提供了大量的算法题目供参赛者练习和提交解决方案...
【标题】"HDU_2010.rar"是一个压缩包文件,其中包含了与"HDU 2010"相关的资源,特别是针对"HDU ACM20"比赛的编程题目。"hdu 2010"和"hdu 20"可能是该比赛的不同简称或分类,而"hdu acm20"可能指的是该赛事的第20届...
根据提供的信息,我们可以总结出以下关于“hdu动态规划算法集锦”的知识点: ### 动态规划基础概念 动态规划是一种解决多阶段决策问题的方法,它通过将原问题分解为互相重叠的子问题,利用子问题的解来构建原问题...
【标题】"HDU DP动态规划"涉及到的是在算法领域中的动态规划(Dynamic Programming,简称DP)技术,这是解决复杂问题的一种高效方法,尤其适用于有重叠子问题和最优子结构的问题。动态规划通常用于优化多阶段决策...
数据结构是ACM竞赛中的核心部分,包括数组、链表、栈、队列、树(二叉树、平衡树如AVL和红黑树)、图(图的遍历、最短路径等)等。熟练掌握这些数据结构的实现与操作,能帮助解决复杂问题。例如,二分查找可以快速...
2. **数据结构**:常用的数据结构包括数组、链表、栈、队列、树(二叉树、平衡树如AVL和红黑树)、图等,对于不同的问题,选择合适的数据结构能有效提高解题效率。 3. **字符串处理**:杭电ACM中的题目可能涉及到...
这些代码是针对HDU(杭州电子科技大学在线评测系统)的四道编程题目提交的AC(Accepted)解决方案。每段代码对应一个不同的问题,下面是每个问题的简要说明及代码解析: 1. HDU 2072 - 字符串处理 这个问题涉及到...
题目名为“hdu 1257 最低拦截系统”,这里的“最低拦截系统”实际上是描述了一个问题场景,而具体的问题通过描述部分可以得知是要求找出给定数组中的最长递增子序列的长度。这里所谓的“最低拦截系统”可能是为了...
6. **数据结构**:堆(大顶堆、小顶堆)、平衡二叉搜索树(AVL、红黑树)、树状数组、 Fenwick Tree(二分索引树)等。 7. **组合数学**:排列组合、鸽巢原理、容斥原理、卡特兰数、斯特林数等。 8. **概率统计**...
《HDU 2000-2099 解题报告》是一份专注于ACM(国际大学生程序设计竞赛)题目的分析与解答的资源集合,由杭州电子科技大学的参赛者或教练团队精心编撰。这份解题报告以CHM(Microsoft帮助文档格式)呈现,包含了从...
HDU是杭州电子科技大学(Hangzhou Dianzi University)举办的一个在线编程竞赛平台,全称为HDU Online Judge。ACM是国际大学生程序设计竞赛(International Collegiate Programming Contest)的缩写,是一个全球性的...
ACM HDU 题目分类 ACM HDU 题目分类是指对 HDU 在线判题系统中题目的分类,总结了大约十来个分类。这些分类将有助于编程选手更好地理解和解决问题。 DP 问题 DP(Dynamic Programming,动态规划)是一种非常重要...
线段树是一种树形结构,它将一个数组分割成多个小 区间,每个区间对应树上的一个节点。线段树的每个节点都包含了该节点对应的区间信息。 线段树的主要应用 线段树的主要应用是解决区间问题,例如区间和、区间...
3. **解题报告**:可能包含了解题思路的详细阐述,包括算法选择、时间复杂度分析和关键代码解释。 4. **数据文件**:用于测试代码的输入输出样例,帮助验证程序的正确性。 5. **笔记或教程**:可能包含参赛者在解决...
在压缩包中的"hdu"文件,可能是题目的具体描述、输入输出格式、样例测试数据,甚至可能是已经编写的解题代码或解题思路文档。通过阅读这个文件,可以进一步了解题目的具体要求,分析解题策略,学习和借鉴他人的解决...
同时,这些报告也是复习和巩固基础理论知识的良好工具,如数据结构(数组、链表、树、图等)、数学(组合数学、图论、概率论等)和逻辑推理等。 总的来说,这份"HDU 1010-2500解题报告"的压缩包文件对于想要提升...