首页 > 筱玛爱线段树
头像 __故人__
发表于 2020-10-12 13:59:39
分析 我们主要考虑如何处理 的操作又重新做一次,这个我们考虑区间加,定义 为第 次操作要执行的次数。那么这个我们可以通过差分做到。最后处理区间加。这个一样可以用差分来做,那么最后的复杂度为 。 差分,我们定义数组 ,如果原值为 。那么满足 。那么给 全部 等同于 。这样我们对 展开全文
头像 又在摸鱼的大熊猫很勤奋努力
发表于 2020-10-12 18:45:28
筱玛爱线段树 这个看上去有点树套树的感觉,但是它的区间满足某些性质,于是可以差分做首先有一个差分数组叫做 ,它的后缀和表示第 个操作被除了这个操作本身操作了多少次还有一个 ,他的前缀和就表示第 的数的答案然后题目的操作有一个性质:保证 小于当前操作的编号所以是可以从后往前倒着推的,那么如果没有 展开全文
头像 林思艺
发表于 2020-10-12 17:04:14
题意 给你一个初始值为的序列。你现在有两种操作,一是给的区间加;二是再执行一遍第次到第次的操作。 思路 两次差分。第一次为处理第二种操作,我们定义为第次操作要执行的次数,用差分实现。第二次是处理区间加,也可以用差分。 所以,差分就对啦! 代码 #include<bits/stdc++.h> 展开全文
头像 DeNeRATe
发表于 2020-10-12 19:09:46
分析 观察题目可以发现题目要求维护两种数组的区间加 当Opt==2时,将操作区间加一 当Opt==1时,将数组范围内的数加一 我们还发现,第一种区间加,会影响第二种区间加所以我们在维护第一种区间加的基础上再维护第二种区间加并且我们发现第一种区间加会影响它之前的询问所以我们需要倒叙维护每个操作的次 展开全文
头像 Kur1su
发表于 2020-10-15 13:55:39
Description 筱玛是一个热爱线段树的好筱玛。筱玛的爷爷马爷在游戏中被筱玛吊打了,于是他恼羞成怒,决定给筱玛出这样一道数据结构题:给定一个长度为nn的数组AA,刚开始每一项的值均为00。支持以下两种操作,操作共mm次 mm次操作结束后,你要告诉马爷AA数组变成什么样子了。由于答案可能会很大, 展开全文
头像 sunsetcolors
发表于 2020-10-13 00:31:41
筱玛爱线段树 题目地址: https://ac.nowcoder.com/acm/problem/25737 基本思路: 如果只进行操作,很显然可以直接差分,那么我看引入的操作,其实也是一个差分的形式,所以我们考虑将查询离线,倒着维护两个差分,第一个差分我们可以在树状数组上进行,是维护当前的 展开全文
头像 shyyhs
发表于 2020-10-13 01:09:38
两次差分.第一次统计下某个操作要操作多少次,第二次差分就是直接统计答案了.注意要从后往前算. #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e5+5; const int 展开全文
头像 lifehappy
发表于 2020-10-12 23:10:51
筱玛爱线段树 思路 比较容易想到离线后从后向前处理,所以我们只要维护两个差分数组即可了,一个是答案数组,从前向后的,一个是当编号被操作了几次的数组,从后向前的,然后只需要按照要求模拟即可。 代码 /* Author : lifehappy */ #include <bits/stdc++. 展开全文
头像 昵称很长很长真是太好了
发表于 2020-10-18 10:03:57
题意:有两个操作,操作一和操作二。操作1: 区间[l:r] +1操作2: 执行操作编号在[l,r]内的所有操作各一次 题解:两次差分。第一次差分,因为题目说保证r小于当前操作的编号,所以我们统计做了多少次操作1我们要倒着统计。如果正着进行差分计算,行不通,,因为你不知道后面具体有哪些操作包含了当前 展开全文
头像 ⊙__⊙
发表于 2020-10-13 14:57:18
题意: 一个长度为n的数组,初始值都是0,给出2个操作:操作1: 区间[l:r] 加1操作2: 执行操作编号在[l,r]内的所有操作各一次 求最后序列是多少? 分析: 1、首先操作2是在之前操作再进行一次,所以我们可以先统计当前这个位置被操作了多少次,怎么统计呢,每个2的操作是对前 展开全文

等你来战

查看全部