tg 71
打摆被锤爆了呜呜呜
考试的时候没关网
然后看到公告栏有\(ICEY\)这个单词,
就知道是什么意思了
刚去翻了Administrator-09的博客
T1
写的倍增(其实就是个矩阵快速幂)
首先会发现这个东西显然满足结合律,
不管怎么复制最后都要复制\(T\)次
然后我的定义是基于值域的一个定义
设\(f_{i,j,k}\)表示当复制\(2^i\)次以后的数组中
以数字\(j\)开头,数字\(k\)结尾的最长上升子序列长度
转移就是
\(f_{i,j,k}=\max \{f_{i-1,j,x}+f_{i-1,y,k}\},j\leq x\leq y\leq k\)
如果真正的枚举所有决策,时间复杂度单次就是\(O(n^4)\)
但是事实上你发现决策集合只会加入不会删除
可以一个变量直接维护最优决策做到单次\(O(n^3)\)
接下来考虑合并
设\(ans_{j,k}\)是最终序列中已经合并部分以数字\(j\)开头,数字\(k\)结尾的最长上升子序列长度
转移类似
初值:
\(f_{0,j,k}\)即为给定初始序列中\(j\)开头,\(k\)结尾的最长上升子序列长度
若不存在,设为负无穷,表示非法状态
\(f_{i,j,k}\leftarrow -\infty,\forall i\in[1,\log T]\)
目标\(:\max \{ans_{j.k}\}\)
时间复杂度\(O(v^3\log T),v\)是值域,其实并不优秀,但是能直接过
T2
Happy New Year
首先最应该值得注意的东西
所以这一维直接状压即可
发现事实上\(l,r\)并不是那么重要,
因为我们事实上设计状态也不会从\(m\)入手,
直接离散化然后开个什么东西映射即可
综上,考虑状压\(DP\)
设\(f_{i,j}\)表示到\(i\)左端点,用的指令情况\(j\)
\(j\)的二进制表示下第\(k\)位\(1\)表示使用\(k\),否则不用
转移就非常显然了

浙公网安备 33010602011771号