首页 > TAG信息列表 > Ynoi2018

LUOGU P4119 Ynoi2018 未来日记

更好的阅读体验 题意 有一个长度为 \(n\) 的序列,共 \(m\) 次操作: 1 l r x y,把区间 \([l, r]\) 内所有 \(x\) 变成 \(y\); 2 l r k,查询区间 \([l, r]\) 内第 \(k\) 小值. \(1\le n, m\le 10^5\),任何时刻 \(1\le a_i\le 10^5\) 题解 对于这种复杂的修改操作,我们直接考虑分块 对序列

【题解】P4117 [Ynoi2018] 五彩斑斓的世界

题意 P4117 [Ynoi2018] 五彩斑斓的世界 给定一个长度为 \(n\) 的序列和 \(m\) 个操作,每次操作可以: 将区间 \([l, r]\) 中所有大于 \(x\) 的值减去 \(x\) 询问区间 \([l, r]\) 中值 \(x\) 的出现次数 \(1 \leq n \leq 10^6, 1 \leq m \leq 5 \times 10^5, 1 \leq l \leq r \l

P4119 [Ynoi2018] 未来日记

P4119 [Ynoi2018] 未来日记 有一个长为 \(n\) 的序列 \(a\),有 \(m\) 次操作: 把区间 \([l,r]\) 内所有的 \(x\) 变成 \(y\)。 查询区间 \([l,r]\) 内第 \(k\) 小值。 \(1 \leq n,m,a_i \leq 10^5\),时限 \(1.00\text{s}\),空限 \(512\text{MB}\)。 sol 最初分块。 难度评分:\(8.5\)

【做题记录】Ynoi2018 天降之物

\(\text{Ynoi 2018}\) 天降之物 题目: 一个长为 \(n\) 的序列 \(a\)。 需要实现 \(m\) 个操作,操作有两种: 把序列中所有值为 \(x\) 的数的值变成 \(y\)。 找出一个位置 \(i\) 满足 \(a_i=x\),找出一个位置 \(j\) 满足 \(a_j=y\),使得 \(|i-j|\) 最小,并输出 \(|i-j|\)。 \(n\le

[Ynoi2018] 未来日记 Solution

先考虑分块做区间第 \(k\) 大。 令 \(cnt_{i,j}\) 表示第 \(i\) 块中 \(j\) 的出现次数, \(sum1_{i,j}\) 表示前 \(i\) 块中 \(j\) 的出现次数。 然后我们发现,只用这些信息会多一个 \(\log\)。 注意到值域是 \(1 \times 10^5\) ,考虑权值分块。 再记 \(sum2_{i,j}\) 表示序列分块的

【洛谷5398】[Ynoi2018] GOSICK(莫队二次离线)

点此看题面 给定了一个长度为\(n\)的序列。 \(q\)次询问,每次给定一个区间,求区间内有多少对\(i,j\)满足\(a_i\)是\(a_j\)的倍数(\(i,j\)可以相同)。 \(n,m,a_i\le5\times10^5\) 莫队二次离线 可以看看模板题:【洛谷4887】【模板】莫队二次离线。 不过个人感觉莫队二次离线的核心就是

【洛谷4117】[Ynoi2018] 五彩斑斓的世界(第二分块)

点此看题面 给定一个长度为\(n\)的序列,要求支持两种操作:将区间内大于\(x\)的数减去\(x\);询问区间中\(x\)的出现次数。 \(n\le10^6,q\le5\times10^5,V\le10^5\) 第二分块 突刺贯穿的第二分块 首先观测这道题极度卡内存,肯定无法对于每个块分别开一个\(O(V)\)的数组。 但是,这道题

【题解】「Ynoi2018」天降之物 [*hard]

最开始的想法是对序列分块,然后每个块维护一个 \(\sqrt{n}\times \sqrt{n}\) 的矩阵表示这个块中颜色与颜色的距离,再维护每个颜色到左右端点的最短距离。 容易发现查询的时候很好查询,问题在于修改操作:要对每一个块进行处理,光是枚举块就要用掉 \(O(\sqrt{n})\) 的时间,那就只能在一个

Luogu P4680 [Ynoi2018]末日时在做什么?有没有空?可以来拯救吗?

Link 这个是\(O(n\sqrt{n\log n})\)的过不去的辣鸡做法。 还是分块。每块还是维护一下\(sum,pre,suf,ans\)的值/凸包。 修改对于整块的打个标记就完事了。 零散的考虑暴力修改,\(a,sum,suf,pre\)可以直接暴力。 然后用类似于Subtask 3的合并方式一样分治处理\(ans\)。 这样我们就

[YNOI2018]五彩斑斓的世界&CF896E(分块+并查集)

由于晚上比赛二连(Atcoder&codeforces),外加复习学考,所以暂时没时间写了。 贴个O(n√n)的分块代码,洛谷和cf上都过了,但垃圾bzoj卡不过去,反正分块题也没什么卡头的就不改了。 #include<bits/stdc++.h>using namespace std;const int N=1e5+7;int n,m,B,a[N],b[N],pos[N],l[N],r[N],fa[

【题解】Luogu P5398 [Ynoi2018]GOSICK

原题传送门 二次离线莫队 二次离线莫队的做法参考第十四分块(前体)的题解 我们需要考虑从(1,i)如何推到(1,i+1) 我们算过了a[i]的答案,考虑加入a[i]的贡献 我们需要在a[i]的所有约数上打标记,这个珂以直接暴力(因为约数是\(\sqrt(n)\)级别的) 我们还要考虑倍数的问题,当a[i]>32时,直接暴力