题意

守墓人会有几个操作:

1.将[l,r]这个区间所有的墓碑的风水值增加 k。

2.将主墓碑的风水值增加 k

3.将主墓碑的风水值减少 k

4.统计[l,r]这个区间所有的墓碑的风水值之和

5.求主墓碑的风水值

主墓为1

题解

线段树,把主墓拎出来单独算

调试记录

无~~(是真的啥都没干)~~

#include <cstdio>
#define maxn 200005using namespace std;int val[maxn], n, f;struct node{int l, r, key, lazy;
}a[maxn << 2];void build(int cur, int l, int r){a[cur].l = l, a[cur].r = r;a[cur].lazy = 0;if (l == r){a[cur].key = val[l];return;}int mid = (l + r) >> 1;build(cur << 1, l, mid);build(cur << 1 | 1, mid + 1, r);a[cur].key = a[cur << 1].key + a[cur << 1 | 1].key;
}void pushdown(int cur){if (!a[cur].lazy) return;a[cur << 1].lazy += a[cur].lazy;a[cur << 1 | 1].lazy += a[cur].lazy;a[cur << 1].key += (a[cur << 1].r - a[cur << 1].l + 1) * a[cur].lazy;a[cur << 1 | 1].key += (a[cur << 1 | 1].r - a[cur << 1 | 1].l + 1) * a[cur].lazy;a[cur].lazy = 0;
}void update(int cur, int l, int r, int k){if (a[cur].r < l || a[cur].l > r) return;if (a[cur].l >= l && a[cur].r <= r){a[cur].key += (a[cur].r - a[cur].l + 1) * k;a[cur].lazy += k;return;}pushdown(cur);update(cur << 1, l, r, k);update(cur << 1 | 1, l, r, k);a[cur].key = a[cur << 1].key + a[cur << 1 | 1].key;
}int Query(int cur, int l, int r){if (a[cur].r < l || a[cur].l > r) return 0;if (a[cur].l >= l && a[cur].r <= r) return a[cur].key;pushdown(cur);return Query(cur << 1, l, r) + Query(cur << 1 | 1, l, r);
}int main(){scanf("%d%d", &n, &f);for (int i = 1; i <= n; i++) scanf("%d", &val[i]);build(1, 1, n);while (f--){int opt, l, r, k; scanf("%d", &opt);if (opt == 1){scanf("%d%d%d", &l, &r, &k);if (l == 1) val[1] += k, l++;if (l > r) continue;update(1, l, r, k);}if (opt == 2){scanf("%d", &k);val[1] += k;}if (opt == 3){scanf("%d", &k);val[1] -= k;}if (opt == 4){scanf("%d%d", &l, &r);if (l == 1){if (r == 1) printf("%d\n", val[1]);else printf("%d\n", Query(1, l + 1, r) + val[1]);}else printf("%d\n", Query(1, l, r));}if (opt == 5) printf("%d\n", val[1]);}return 0;
}

洛谷 #2357. 守墓人相关推荐

  1. [洛谷2357] 守墓人

    题目描述 在一个荒凉的墓地上 有一个令人尊敬的守墓人, 他看守的墓地从来 没有被盗过, 所以人们很放心的把自己的先人的墓 安顿在他那 守墓人能看好这片墓地是必然而不是偶然..... 因为....守墓人 ...

  2. 洛谷 P2357 守墓人

    洛谷 P2357 守墓人 题目描述 在一个荒凉的墓地上 有一个令人尊敬的守墓人, 他看守的墓地从来 没有被盗过, 所以人们很放心的把自己的先人的墓 安顿在他那 守墓人能看好这片墓地是必然而不是偶然.. ...

  3. 『题解』洛谷P2357 守墓人

    Portal Portal1: Luogu Description 在一个荒凉的墓地上有一个令人尊敬的守墓人,他看守的墓地从来没有被盗过, 所以人们很放心的把自己的先人的墓安顿在他那守墓人能看好这片墓 ...

  4. 洛谷P2357 守墓人

    题目描述 在一个荒凉的墓地上 有一个令人尊敬的守墓人, 他看守的墓地从来 没有被盗过, 所以人们很放心的把自己的先人的墓 安顿在他那 守墓人能看好这片墓地是必然而不是偶然..... 因为....守墓人 ...

  5. 洛谷 P2357 守墓人(树状数组)

    树状数组区间更新,区间查询的入门好题 const int N=2e5+5;int i,j,k;int n,m,t;ll a[N]; ll c[N][2];ll sum[N];void add(int ...

  6. 洛谷P2357 守墓人(差分+树状数组)

    原题链接 什么是差分? 7 8 6 5 8 18 20 35 //原数组 7 1 -2 -1 3 10 2 15 //差分数组 差分数组的前缀sum[i]即原数组的a[i] 我们构建两个树状数组 su ...

  7. [洛谷] P2357 守墓人

    原题 第一张图把我吓到了/kk 这道题就是我们最最喜爱(恶心)的线段树模板. 共5种操作: 1. 格式:1 l r k 表示区间[l,r]加上k; 2. 格式:2 val 表示主墓碑风水值加上val; ...

  8. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  9. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

最新文章

  1. 数据集超越MS COCO,2020智源x旷视Objects365物体检测挑战赛开赛
  2. Swift中的闭包例子
  3. [缓存]关于memcached的详细介绍以及用法
  4. echarts 图例太多放不下怎么办_如何选择合脚的篮球鞋?篮球鞋不合脚怎么办?...
  5. 读卡器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  6. python之路_自定义forms组件
  7. 视频教程-汇编语言程序设计-其他
  8. @Tableau 设计技巧 8.2:tableau官方教程(中文版pdf)
  9. 生物信息学算法之Python实现|Rosalind刷题笔记:005 GC含量计算
  10. 面试官:“你为什么离开上家公司?”怎么回答?
  11. 黑掉php网站,如何黑掉一个网站
  12. 2014.7.8 第一天学习hfss13
  13. fiddler证书安装
  14. 数据库系统:第二章关系数据库
  15. TensorFlow学习笔记1:graph、session和op
  16. Linux perm
  17. topcoder入门
  18. 如何设置vscode默认谷歌浏览器打开
  19. element-UI中el-select组件使用拼音进行模糊匹配可选择项
  20. 俄罗斯方块源码分享 html+css+js

热门文章

  1. 信号与系统20(拉普拉斯变换域分析)
  2. 曾经面试的一个关于文件操作的上机题
  3. 《现代数学基础丛书》
  4. 用毛毛狗的耳朵擦眼泪
  5. 南加州大学计算机专业研究生录取,南加州大学研究生录取案例分享
  6. brpc学习笔记(1)
  7. Springboot集成Brpc
  8. 天大《西方经济学》大作业期末考核
  9. https://github.com/Wechat-Group/WxJava 使用记录
  10. 华为一碰传多屏协同超级终端最新教程(附带安装文件)