题目地址:

https://www.luogu.com.cn/problem/P2184

题目背景:
面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾。现在,小FF的后方是一望无际的大海,前方是变异了的超级蚂蚁。小FF还有大好前程,他可不想命丧于此, 于是他派遣手下最后一批改造SCV布置地雷以阻挡蚂蚁们的进攻。

题目描述:
小FF最后一道防线是一条长度为 n n n的战壕,小FF拥有无数多种地雷,而SCV每次可以在 [ L , R ] [L, R] [L,R]区间埋放同一种不同于之前已经埋放的地雷。由于情况已经十万火急,小FF在某些时候可能会询问你在 [ L ′ , R ′ ] [L',R'] [L′,R′]区间内有多少种不同的地雷,他希望你能尽快的给予答复。

输入格式:
第一行为两个整数 n n n和 m m m, n n n表示防线长度, m m m表示SCV布雷次数及小FF询问的次数总和。
接下来有 m m m行,每行三个整数 q , l , r q,l,r q,l,r:
若 q = 1 q=1 q=1,则表示SCV在 [ l , r ] [l, r] [l,r]这段区间布上一种地雷;
若 q = 2 q=2 q=2,则表示小FF询问当前 [ l , r ] [l, r] [l,r]区间总共有多少种地雷。

输出格式:
对于小FF的每次询问,输出一个答案(单独一行),表示当前区间地雷总数。

数据范围:
对于 30 % 30\% 30%的数据, 0 ≤ n 0 \le n 0≤n, m ≤ 1000 m \le 1000 m≤1000。
对于 100 % 100\% 100%的数据, 0 ≤ n 0 \le n 0≤n, m ≤ 1 0 5 m \le 10^5 m≤105。

询问的时候,其实就是问,所有的区间有多少个起点在 [ 1 , r ] [1, r] [1,r],有多少个终点在 [ 1 , l − 1 ] [1,l-1] [1,l−1],两个相减即为 [ l , r ] [l,r] [l,r]这个区间有多少种不同的地雷。对于起点,其实就是要做单点修改和求前缀和,从而可以用树状数组做。对起点和终点各自开一个树状数组即可。代码如下:

#include <iostream>
using namespace std;const int N = 1e5 + 10;
int n, m;
int tr[2][N];#define lowbit(x) (x & -x)void add(int i, int k, int x) {for (; k <= n; k += lowbit(k)) tr[i][k] += x;
}int sum(int i, int k) {int res = 0;for (; k; k -= lowbit(k)) res += tr[i][k];return res;
}int main() {scanf("%d%d", &n, &m);while (m--) {int q, l, r;scanf("%d%d%d", &q, &l, &r);if (q == 1) add(0, l, 1), add(1, r, 1);else printf("%d\n", sum(0, r) - sum(1, l - 1));}
}

每次操作时间复杂度 O ( log ⁡ n ) O(\log n) O(logn),空间 O ( n ) O(n) O(n)。

【洛谷】P2184 贪婪大陆相关推荐

  1. 洛谷 P2184 贪婪大陆 解题报告

    P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...

  2. 洛谷 P1690 贪婪的Copy

    题目描述 Copy从卢牛那里听说在一片叫yz的神的领域埋藏着不少宝藏,于是Copy来到了这个被划分为个区域的神地.卢牛告诉了Copy这里共有个宝藏,分别放在第Pi个(1<=Pi<=N)区域 ...

  3. P2184 贪婪大陆

    题目背景 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败--人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前方是变异了的超级蚂蚁. 小 ...

  4. 洛谷P1690 贪婪的Copy 题解

    题目:https://www.luogu.org/problemnew/show/P1690 分析: 这道题就是一道最短路的题目,因为看到数据范围: n≤100n\leq100n≤100 所以考虑使用 ...

  5. lugou P2184 贪婪大陆(线段树)

    题目描述 小 FF 最后一道防线是一条长度为 nn 的战壕,小 FF 拥有无数多种地雷,而 SCV 每次可以在 [L, R]区间埋放同一种不同于之前已经埋放的地雷.由于情况已经十万火急,小 FF 在某 ...

  6. 2019.6.7 一场搜索专题的考试【including 洛谷·血色先锋队,入门OJ·兴建高铁,珠光宝气阁

    这次分数还好.但全是搜索题还没上200就有点打击人了--[本狸才177QAQ 血色先锋队/血色敢死队 传送门:洛谷P1332 & 入门OJ P2259 Description 邪魔天国领主复活 ...

  7. 关于图的广度优先搜索—————洛谷1332

    这边讲一下一般的解题思路,一般来说,我们做题都是将复杂化为简单.所以一般切题,我们都是看是否能够构造一个邻接矩阵. 对于邻接矩阵,但凡有一点算法基础都能知道它其中的一个作用就是用来描述数据之间的相互关 ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷 P1332 血色先锋队

    洛谷 P1332 血色先锋队 第一次写bfs,纪念一下 qwq 之前一直都在写dfs,对bfs有莫名的恐惧 现在觉得...好像差不多 qwq 题目描述 巫妖王的天灾军团终于卷土重来,血色十字军组织了一 ...

最新文章

  1. STM32 基础系列教程 37 - Lwip_igmp
  2. PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径
  3. LeetCode【7--整数反转】 LeetCode【8--字符串转整数】
  4. 腾讯会议扩容背后:100万核计算资源全由自研服务器星星海支撑
  5. 购买域名和GitHub映射
  6. 动态规划——最长回文子串(Leetcode 5)
  7. 使用Metal打造令人惊叹的游戏效果
  8. bootstrap php 多行,使用PHP循环将Bootstrap行和正确的列号添加到元素
  9. 由c#事件监听、回调函数引发观察者模式
  10. 你们真的会追汉纸么?!
  11. aarch64 arm上交叉编译mysql-2.7.35
  12. python 爬取起点中文网的小说(学习记录)
  13. 数据结构_静态链表(C语言)
  14. java 切面 不执行,Spring AOP 切面没有执行
  15. php 微信 公众 平台,微信公众平台代码详解-php语言(一)
  16. 软件企业软件产品税收优惠政策
  17. python写出雷霆战机_利用Python自制雷霆战机小游戏,娱乐编程,快乐学习!
  18. 大数据技术十大核心原理
  19. 网站故障和安全事件的应急预案
  20. 解析wiki数据(带标点,保留格式)

热门文章

  1. 电脑端刺激战场显示服务器满,绝地求生刺激战场PC端模拟器注册上限解决方法...
  2. 每天5分钟玩转Kubernetes | Weave Scope
  3. HCIA——VLAN
  4. html首行缩进语言,css如何设置首行缩进2字符?
  5. 显示或隐藏不可见字符
  6. Flash,RAM,ROM区别
  7. 什么是匿名内部类,如何使用匿名内部类
  8. logstash采集数据配置示例
  9. 游戏浅谈3-帝国荣耀
  10. 化学实验室自动化 - 1. 深度学习视觉检测(实例分割) - COCO格式的化学实验室常见物体实例分割数据集制作