2021.10.29 巴蜀模拟赛总结
今天的题比较简单,然而巴蜀的dalao们几乎都接近AK/kk
T1
发现就是一个加限制汉诺塔。用矩阵快速幂计算。
但是最后一个点过不去。
考虑卡常:
1、向量乘矩阵可以n平方实现。
2、可以预处理出\(2^i\)的矩阵。
3、每一次直接减去\(lowbit\)以减少复杂度。
如果还是过不去,有一种叫光速乘的东西,其实就是根号分治思想。
用于\(O(1)\)多次计算\(a^n\),其中a是常数。矩阵快速幂和数的幂次是一样的道理。
T2
贪心。首先都可以转化为k=1的情况,环数就是\(\frac{n}{\gcd(n,k)}\)
对于一个环的情况,先排序,则一定是a1 a3 ... an-1 an an-2 ... a4 a2这样排列,可以通过归纳法证明,或者微扰也行。
多个环的时候,从大到小把一整段元素分配给一个环即可。
T3
比较难。
考虑暴力。
考场思路:只需要记录前i个位置,正着的最小字典序和倒着的最小字典序,每一次在末尾放入一个字符再互相更新即可。优化感觉可以用主席树去写。(然而好像不太能写出来的样子)。
所以我们需要继续挖掘题目性质:
考虑翻转对答案到底有什么影响:
相邻的两次翻转,实际上就是把这一段位置给倒序放到整个段的最前面。所以两个相邻的翻转的位置可以看作把一段东西倒序放到最前面。这个东西是从后往前进行处理的,最后再从前往后把不在段内的东西给放到最后面即可。
这个段显然也可以合并,两个相邻段的操作也可以合并成一个段的操作。为了避免只翻转一次的情况,我们可以看做把第一个位置已经进行了一次翻转。
所以我们只需要贪心的维护处理完前x段后的字典序是最小的即可。因为这些东西的位置其实已经确定了。
具体我们需要O(logn)判断某两段的值是否相同,用哈希+二分即可。
实现很麻烦,到现在还没调出来23333
T4
第一种是数形结合,直接计算矩形在\(y=x\)上方的面积比上总面积就好了。
可以直接n方,然后用一大堆数据结构大概可以优化为\(O(n\log n)\)
傻逼才用数据结构
考虑把线段离散成很多小段,一段的长度为1,计算出每一个小段中期望有多少个点,然后某一个点在某一个小段内排名的期望就是分数大于这个小段的期望的点数加上本段内期望点数除二。
发现自己一定会对排名产生1的贡献,我们的这种计算方法少了0.5,再加上0.5即可。
本文来自博客园,作者:lei_yu,转载请注明原文链接:https://www.cnblogs.com/lytql/p/15481885.html