概述
Sample Input
1
10
1 2 3 4 5 6 7 8 9 10
Query 1 3
Add 3 6
Query 2 7
Sub 10 2
Add 6 3
Query 3 10
End
Sample Output
Case 1:
6
33
59
### [](https://gitee.com/vip204888/java-p7)2.代码
单点更新
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
using namespace std;
#define lson l,m,rt<<1 宏定义更方便
#define rson m + 1,r,rt<<1|1
const int maxn = 55555; //元素总个数
int sum[maxn << 2]; ///sum求和
void PushUP(int rt) ///更新父节点
{
sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];
}
void build(int l,int r,int rt) //建树
{
if (l == r) ///到达叶节点
{
scanf("%d", &sum[rt]);
return ;
}
int m = (l + r) >> 1;
///左右递归
build(lson);
build(rson);
///更新信息
PushUP(rt);
}
///点修改
void update(int p, int add, int l, int r, int rt)//l,r表示当前节点区间,rt表示当前节点编号
{
if (l == r) //到叶节点,修改
{
sum[rt] += add;
return;
}
int m = (l + r) >> 1;
//根据条件判断往左子树调用还是往右
if (p <= m) update(p, add, lson);
else update(p, add, rson);
PushUP(rt);//子节点更新了,所以本节点也需要更新信息
}
int query(int L, int R, int l, int r, int rt)//L,R表示操作区间,l,r表示当前节点区间,rt表示当前节点编号
{
if (L <= l && r <= R)
{
return sum[rt];//在区间内,直接返回
}
int m = (l + r) >> 1;
//累计答案
int ans = 0;
if (L <= m) ans += query(L, R, lson);
if (R > m) ans += query(L, R, rson);
return ans;
}
int main()
总结:绘上一张Kakfa架构思维大纲脑图(xmind)
其实关于Kafka,能问的问题实在是太多了,扒了几天,最终筛选出44问:基础篇17问、进阶篇15问、高级篇12问,个个直戳痛点,不知道如果你不着急看答案,又能答出几个呢?
若是对Kafka的知识还回忆不起来,不妨先看我手绘的知识总结脑图(xmind不能上传,文章里用的是图片版)进行整体架构的梳理
资料领取方式:点击这里免费下载
梳理了知识,刷完了面试,如若你还想进一步的深入学习解读kafka以及源码,那么接下来的这份《手写“kafka”》将会是个不错的选择。
-
Kafka入门
-
为什么选择Kafka
-
Kafka的安装、管理和配置
-
Kafka的集群
-
第一个Kafka程序
-
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
Kafka的生产者
-
Kafka的消费者
-
深入理解Kafka
-
可靠的数据传递
-
Spring和Kafka的整合
-
SpringBoot和Kafka的整合
-
Kafka实战之削峰填谷
-
数据管道和流式处理(了解即可)
[外链图片转存中…(img-HTzhJWIe-1628407517501)]
最后
以上就是眼睛大寒风为你收集整理的HDU1166 敌兵布阵【线段树,Java数据结构和算法面试题及答案的全部内容,希望文章能够帮你解决HDU1166 敌兵布阵【线段树,Java数据结构和算法面试题及答案所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复