首页 > TAG信息列表 > Ynoi2013

#并查集,树状数组#洛谷 5610 [Ynoi2013] 大学

题目 分析 设最大值为 \(mx\),考虑每个数最多被除以 \(\log{mx}\) 次,那么加上树状数组的维护为 \(O(n\log{n}\log{mx})\) 问题就是如何快速找到这些位置,可以对于每一个约数单独把合法的数抽出来作为连续的一段用并查集维护。 那么一共需要抽出 \(O(mx\log{mx})\) 个位置,再加上并查

[Ynoi2013] 对数据结构的爱

一、题目 点此看题 二、解法 直接上线段树维护,其实可以把每一个区间看成一个函数 \(f(x)\),表示如果传进来的初值是 \(x\) 那么得到的值是 \(f(x)\),如果我们成功维护出每个区间的 \(f(x)\) 那么只需要进行 \(\log\) 次函数运算得到答案。 不难发现 \(f(x)\) 是分段的,设 \(c_i\) 表

P5610 [Ynoi2013] 大学

题目 P5610 [Ynoi2013] 大学 分析 似乎是个简单题,容易想到势能分析,每一个点最多被除 \(\log\) 次。 于是问题变成快速找到一个数的所有倍数的位置。 直接对每一个数开一个 \(set\) 存其倍数集合,找到后可以判断是否删掉,也就是区间删除,可以并查集实现。 代码 #include<bits/stdc++

P3987 我永远喜欢珂朵莉~ / P5610 [Ynoi2013] 大学

这个和 P4145 上帝造题的七分钟 2 / 花神游历各国非常相像。同样只需要 \(\log n\) 次修改就能让一个数变成 \(0\)。 单点修改,区间查询珂以简单地用 BIT 解决。 考虑怎么维护需要修改的数。珂以可能的每一个因子都维护一个数据结构,要修改的时候直接在该数字对应的数据结构里面查询

洛谷 P5608 [Ynoi2013] 文化课

Chimuzu 手上有一个数字序列 \(\{a_{1},a_{2},\ldots,a_{n}\}\) 和一个运算符序列 \(\{p_{1},p_{2},\ldots,p_{n-1}\}\)。其中 \(p_{i}\) 只能为 \(+\) 或 \(\times\)。 我们定义一个区间 \([l,r]\) 的权值 \(w(l,r)\) 为将字符串 \[a_{l}~p_{l}~a_{l+1}~p_{l+1} \cdots a_{r-1}~p

洛谷 P5610 [Ynoi2013] 大学

一个长为 \(n\) 的非负整数序列 \(a\),支持以下两个操作: 1 l r x:把区间 \([l,r]\) 中所有 \(x\) 的倍数除以 \(x\)。 2 l r:查询区间 \([l,r]\) 的和。 本题强制在线,每次的 \(l,r,x\) 需要 xor 上上次答案,如果之前没有询问,则上次答案为 \(0\)。 \(1\leq n,m\leq 10^5\),\(0\leq a_i