小寄巧

· · 休闲·娱乐

乱七八糟的问题。

。

直接树状数组求区间乘积。

* 3.区间出现出现的数的 $\prod a_i$,带区间推平 势能分析发现 $pre$ 的变化量是 $O(n+m)$ 的,配合拿个ODT就行,直接暴力修改二位偏序。 洛谷上有个类似题,但是由于要YNOI卡常就没去写。 不带修可以离线单 $\log$ 解决。 * 4.区间出现的数的 $\prod a_i^{max\{c_i-1,0\}}$ ,带修 $i \in [l,r] , pre(i) \in [l,r]$ 同样二位偏序带修。 * 5.区间出现的数的 $\prod a_i^{max\{c_i-k,0\}}$ ,不带修 $i \in [l,r] , pre^k(i) \in [l,r]$ 手玩一下显然正确。 * 6.区间出现的数的 $\prod a_i^{max\{c_i-k,0\}}$ ,带修 时间复杂度瓶颈在改变 $pre^k(i)$ ,再在树套树上修改。 k较小可以用 set 暴力修改前驱后继,k较大可以使用带修莫队。 分块+根号分治应该可做吧,没有细想。 * 7.区间出现出现的数的 $\prod a_i^{[c_i=1]}$ ,不带修 离线,将询问挂在右端点,从左到右扫,线段树维护对应左端点的答案,加入右端点对 $(pre_i,i],(pre^2_i,i] $进行区间乘除就行。 另一种: 三维偏序 $pre < l,i\in[l,r],suf > r

区间出现出现的数的 \prod a_i^{[c_i=1]} ,带修

你可以试着用KDT去做上面的带修三位偏序

分块或者带修莫队,好像没别的做法了。

考虑过从 \prod a_i^{c_i} 中去除 \prod a_i^{c_i[c_i\geq 2]} , 使用上方做法数线段,但是比较烦,每种数出来的线段+1就是答案的指数,但这又变成二维平面数颜色了,不太可做。

应该没有更优秀的做法了?有请务必告诉kk。

以后可能会更新。

写完了,还剩6分钟回寝室,开把王怒一门先。

体测完了,班上吐了几个。。。。。

upd 2020/10/20:

简简单单。

离线的话直接莫队,在线的话分块,维护整块之间的答案,然后把散块插到整块里面更改。

upd 2020/10/25:

nxt_i > r , i\ge l$ 的 $i_{\min}

分成若干段,只有两段会贴边界(散),中间部分为整。

整部分为 [i,nxt_i] \in [l,r] 的二维数点

散部分为问题 10。