标签:通过 inline span row block 条件 amp 但我 strong
倒过来搞,关键位置只有\(2,3,5\)的倍数,由于每次是除以一个数,关键位置仅有\(60^3\)
这题为啥比A简单...
显然,当前位置与初始位置是一一对应的
对三进制\(N\)位建trie,特殊的是,根到叶子节点是从低位到高位
每个叶子节点的位置对应着当前所处的位置,每个叶子节点的编号对应着初始的位置
操作一:每个点交换\((1,2)\)儿子。这个可以打标机
操作二:考虑最低位,\(0\longrightarrow 1\),\(1\longrightarrow 2\);\(2\longrightarrow 0\)然后进位。儿子\((0,1,2)\longrightarrow (2,0,1)\),然后递归当前\(0\)儿子(也就是\((2,0,1)\)中的\(2\))
首先对每个字符,单独一个字符,查询
这样我们得到了字符串的长度\(L\)
对每个字符,长度为\(L\)的串,查询。
这样我们得到了每个字符出现的次数
结论:对于\(S,T(|S|\le |T|)\),其编辑距离为\(|T|-|S|\)的充要条件为\(S\)是\(T\)的子序列
根据此结论,我们可以对字符进行合并。
具体而言,令\(f(S)\)(其中\(S\)是字符集的子集)在字符串中的最大子序列。
对于\(f(S),f(T)(S\cap T=\emptyset)\),可以通过\(O(f(S)+f(T))\)次查询合并
令\(f_i\)为\(i\)位置最大值,显然:\(f_i=max(a_i,\frac{f_{i-1}+f_{i+1}}{2}-b_i)\)
有个不需要啥技术含量的\(O(n^2)\),就是\(a_i\)从大到小,每次更新一个位置,然后用这个位置更新其他的
通过推式子大概会得到一个麻烦的等差数列为系数的东西,用线段树维护。\(O(nlogn)\)
不过会被卡精度
考虑若\(b_i=0\),对于固定的两点\(u,v\),去更新其他点
有
这是个以\((u,a_u),(v,a_v)\)为端点,其连线为\(P_i\)的东西,可以用凸包维护
但我们实际的式子是这样的
我们考虑构造\(\{c\}\),使得\(P_i‘=P_i-c_i\)以满足较简式子
序列\(\{c\}\)需满足:\(b_i = \dfrac {c_{i-1}+c_{i+1}}2-c_i\)
令\(c_1=c_2=0,c_{i+1}=2(b_i+c_i)-c_{i-1}\)即满足条件
标签:通过 inline span row block 条件 amp 但我 strong
原文地址:https://www.cnblogs.com/Grice/p/13227047.html