2020.08.11【省选B组】模拟 总结

估分:\(100 + 100 + 0 + 0 = 200\)
考场:\(100 + 90 + 0 + 40 = 230\)
今天做题状态极好(很舒服),\(10:00\)前打完三题,然后玩了玩\(T3\),从容结束比赛。
不像上次还剩十分钟开第二道题。。。。。。

\(T1\)

显然的换根操作,乱玩即可。

\(T2\)

让你求\(a1^{a2^{a3^{a4}}}...modp\)的值。
指数那么大,很容易想到扩展欧拉定理。
预处理\(phi\)数组,然后递归求解即可。
但是我忘记判指数小于\(phi[p]\)的情况了,\(WA90\)

\(T3\)

期望题,乱推一波啥也不会。
结果看(copy)题解大概玩出来个样子了。。。
我们设\(f[i]\)表示从\(i\)字符走到最后且保证\(i\)以后的字符完全正确的最小期望时间。
这样我们可以尝试转移,我们枚举一个点表示判断前面是否正确的位置:

\[f[i]=min_{j=i}^{n}(p[i]*(f[i]+j-i+1)+(1-p[i])*p[i+1]*(f[i+1]+j-i+1)+...+(1-p[i])*(1-p[i+1])*...*(1-p[j])*f[j+1]+j-i+1+t) \]

然后将右边式子里的\(p[i]*f[i]\)移项,得到:

\[(1-p[i])f[i]=min_{j=i}^{n}((1-p[i])*p[i+1]*(f[i+1]+j-i+1)+...+(1-p[i])*(1-p[i+1])*...*(1-p[j])*f[j+1]+(1+p[i])*(j-i+1)+t) \]

然后转移即可,为\(O(n^3)\)
考虑优化,发现\(j\)枚举的时候\(min\)项是一个前缀的形式,用变量存一下即可,时间为\(O(n^2)\)

\(T4\)

没有找出结论,做了个假的贪心,\(WA40\)
有个结论:对于任意序列都可以用\(<=2\)次操作来完成。
我们发现,其实交换目标会形成一个环,对于环长为\(1\),不用交换,对于环长为\(2\),交换一次即可。对于环长为\(>2\),可以证明交换两次即可。
例:\(2 3 4 5 6 7 1\)
我们交换(位置):\(6\) \(7,\) \(1\) \(5,\) \(2\) \(4\)
然后再交换:\(1\) \(6,\) \(2\) \(5,\) \(3\) \(4\)
偶数环情况类似。
先暴力判答案为\(0\)\(1\)的情况,然后在\(1\)的基础上做环操作即可(环操作环可以任意选,毕竟都只用两次操作)。

总结

这次很有比赛模式,早早写完题然后对拍检查,不错不错(* ̄︶ ̄)
还有一点就是期望题有点弱,要补一补期望以及\(DP\)之类的问题。

posted @ 2020-08-11 12:32  jz929  阅读(147)  评论(0编辑  收藏  举报