颜色和乘积相关

乱七八糟的问题。

  • 1.区间出现出现的数的 \(\prod a_i^{c_i}\) ,带修

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

  • 2.区间出现出现的数的 \(\prod a_i\),带修

\(pre_i < l , i\in[l,r]\),二维偏序带修,树套树或者分块解决。

  • 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:

  • 8.AKIOI。

简简单单。

  • 9.区间中出现的数的 \(\prod c_i\)

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


upd 2020/10/25:

  • 10.区间中最后一次出现最靠前的数:

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

  • 11.区间中至少有一种数不全包含的最长子区间:

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

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

散部分为问题 10。

posted @ 2023-02-06 17:57  寂静的海底  阅读(46)  评论(0)    收藏  举报