CODEVS-2018-反病毒软件-线段树

描述

两种操作:

1. (1, x, y) 表示 x 点权值增加 y

2. (2, x, y) 表示求 [x, y] 区间的最大值与次大值的差.

分析

  • 可以采用线段树
  • 对于操作1, 就是单点修改
  • 操作2, 先找到区间最大值, 然后把这个点清零, 再求一遍区间最大值. 相减输出. 最后单点修改改回原状态.
  • 有许多细节需要注意.

代码

时间: 2024-08-11 05:09:20

CODEVS-2018-反病毒软件-线段树的相关文章

codevs 2018 反病毒软件

一个求最大值和次大值的问题. 在更新的时候将两个子区间的最大次大值都算进去,排个序再装进去即可. #include<iostream>#include<cstdio>#include<algorithm>#define maxn 800005using namespace std;struct tree{ int left,right; int value1,value2;}node[maxn];struct ans{ int a,b;};int n,q,father[

codevs 1299 切水果 线段树

1299 切水果 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和数据范围适当修改,避免数据包过大而浪费空间资源 输入描述 Input Description 第1行共包括2个正整数,分别为N,M. 接下来m行每行两个正整数L,R 输出描述 Output Description 一共输出M行,每

codevs 2216 行星序列 线段树+延迟标记(BZOJ 1798)

2216 行星序列 时间限制: 2 s 空间限制: 256000 KB 题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始,他就报名参加了“小小宇航员夏令营”,在这里小可可不仅学到了丰富的宇航知识,还参与解决了一些模拟飞行中发现的问题,今天指导老师交给他一个任务,在这次模拟飞行的路线上有N个行星,暂且称它们为一个行星序列,并将他们从1至n标号,在宇宙未知力量的作用下这N个行星的质量是不断变化的,所以他们对飞船产生的引力也会不断变化,

Codevs2018 反病毒软件

2018 反病毒软件 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 查看运行结果 题目描述 Description 其实这个“反病毒软件”(Anti-Virus SOFTware),是相关部门应对H9N7人流感研发的. 相关部门的监控范围里只有N个城市,从1到N编号.初始时,这些城市都没有任何病例出现.由于在某一个城市出现过多的病例不太好,相关部门需要随时知道,从X到Y(含X和Y)这些城市当中,病例最多的城市与病例第二多的城市的病例数之差为多少. 一共会

线段树1

线段树的基本操作 1.特点:与普通的树不同,线段树存取的是某一个区间,它在各个节点保存一条线段. 2.节点储存方式:(结构体) 方式一:数组储存 struct Tree { int leftnode, rightnode; //区间的最左端和最右端 long long sum; //该节点储存区间的值 } tree[N *4]; //比常规储存的数组要大四倍(Be careful!) 方式二:链表储存(自己了解) struct Tree { int Left, Right; Tree *Left

[Codevs] 1080 线段树练习

1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和:修改的规则是指定某一个格子x,加上或者减去一个特定的值A.现在要求你能对每个提问作出正确的回答.1≤N<100000,,提问和修改的总数m<10000条. 输入描述 Input Description 输入文件第一行为一个整

【树状数组区间修改区间求和】codevs 1082 线段树练习 3

http://codevs.cn/problem/1082/ [AC] 1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=2e5+2; 5 int n; 6 ll a[maxn]; 7 ll c1[maxn]; 8 ll c2[maxn]; 9 int lowbit(int x) 10 { 11 return x&-x; 12 } 13 void add(l

1080 线段树练习 (codevs)

http://codevs.cn/problem/1080/ 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和:修改的规则是指定某一个格子x,加上或者减去一个特定的值A.现在要求你能对每个提问作出正确的回答.1≤N<100000,,提问和修改的总数m<10000条. 输入描述 Input Des

线段树练习 codevs 1080

/* codevs 1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和:修改的规则是指定某一个格子x,加上或者减去一个特定的值A.现在要求你能对每个提问作出正确的回答.1≤N<100000,,提问和修改的总数m<10000条. 输入描述 Input Des