颜色和乘积相关
乱七八糟的问题。
。
- 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。
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17096275.html,谢谢你的阅读或转载!

浙公网安备 33010602011771号