11.14 晚

两个半小时自信离场
\(70+0+100\)

A.老司机的汽油

考这玩意是不是多少沾点?

我们再看一眼这题的数据范围:
\(1<=n<=1000000,0<=a_i<=b_i<=10^{18}\)
long double 也无法存储这么大的数,所以我们不能先求和后平均;
而是每读入一个数,将其除 n 之后的数和除 n 的余数分别累加;
这两个累加之后都不会超过 long long 的范围;
除 n 得到的数一定只是对整数部分有贡献的;
余数再除 n,商累加到整数部分,余数/n 即为小数部分;
将余数乘 \(10^{12}\) 除 n,然后再用乘 \(10^{13}\) 次方的判断四舍五入的问题就可以了;
由于读入巨大建议使用读入优化,二者时间上差了一倍之多;
标程里的读入优化可供参考,建议自己实现一遍;

B.老司机的开车计划

跳重链时 \(Fa\) 数组写成了并查集的 \(fa\) 爆蛋了。
所以就给一个极弱的小样例有意思吗?
首先把边权从大到小排序建成 \(\text{kruskal}\) 重构树,对于一次查询我们在树上求得 \(x\)\(y\)\(\text{LCA}\),记其点权为 \(val\),答案就是 \(\sum\limits_{h_i\le val}h_i\),这个东西用树状数组维护即可。

C.老司机的小司姬

感觉有点奇妙。

\(f(n,op)(op\in{0,1,2,3})\) 为在原点朝向为 \(op\) 进行 \(n\) 次操作后的答案,\(X(n,op)\) 为原点朝向为 \(op\) 进行 \(n\) 次操作后的横坐标之和,同理可得 \(Y(n,op)\),于是有以下式子:
\(\begin{aligned} f(n,0)&=S(f(n-1,0)+Y(n-1,0))+Lf(n-1,1)+Rf(n-1,3)\\ f(n,1)&=S(f(n-1,1)+X(n-1,1))+Lf(n-1,2)+Rf(n-1,0)\\ f(n,2)&=S(f(n-1,2)-Y(n-1,2))+Lf(n-1,3)+Rf(n-1,1)\\ f(n,3)&=S(f(n-1,3)-X(n-1,3))+Lf(n-1,0)+Rf(n-1,2)\\ X(n,0)&=S(X(n-1,0)+(S+L+R)^{n-1})+LX(n-1,1)+RX(n-1,3)\\ X(n,1)&=SX(n-1,1)+LX(n-1,2)+RX(n-1,0)\\ X(n,2)&=S(X(n-1,2)-(S+L+R)^{n-1})+LX(n-1,3)+RX(n-1,1)\\ X(n,3)&=SX(n-1,3)+LX(n-1,0)+RX(n-1,2)\\ Y(n,0)&=SY(n-1,0)+LY(n-1,1)+RY(n-1,3)\\ Y(n,1)&=S(Y(n-1,1)+(S+L+R)^{n-1})+LY(n-1,2)+RY(n-1,0)\\ Y(n,2)&=SY(n-1,2)+LY(n-1,3)+RY(n-1,1)\\ Y(n,3)&=S(Y(n-1,3)-(S+L+R)^{n-1})+LY(n-1,0)+RY(n-1,2)\\ \end{aligned}\)
发现这个东西可以矩阵加速,于是有以下转移式子:

\[\begin{bmatrix} f_0,f_1,f_2,f_3,X_0,X_1,X_2,X_3,Y_0,Y_1,Y_2,Y_3,(S+L+R)^{n-1} \end{bmatrix} \times \]

\[\begin{bmatrix} &S,&R,&0,&L,&0,&0,&0,&0,&0,&0,&0,&0,&0\\ &L,&S,&R,&0,&0,&0,&0,&0,&0,&0,&0,&0,&0\\ &0,&L,&S,&R,&0,&0,&0,&0,&0,&0,&0,&0,&0\\ &R,&0,&L,&S,&0,&0,&0,&0,&0,&0,&0,&0,&0\\ &0,&0,&0,&0,&S,&R,&0,&L,&0,&0,&0,&0,&0\\ &0,&S,&0,&0,&L,&S,&R,&0,&0,&0,&0,&0,&0\\ &0,&0,&0,&0,&0,&L,&S,&R,&0,&0,&0,&0,&0\\ &0,&0,&0,&-S,&R,&0,&L,&S,&0,&0,&0,&0,&0\\ &S,&0,&0,&0,&0,&0,&0,&0,&S,&R,&0,&L,&0\\ &0,&0,&0,&0,&0,&0,&0,&0,&L,&S,&R,&0,&0\\ &0,&0,&-S,&0,&0,&0,&0,&0,&L,&S,&R,&0,&0\\ &0,&0,&0,&0,&0,&0,&0,&0,&R,&0,&L,&S,&0\\ &0,&0,&0,&0,&S,&0,&-S,&0,&0,&S,&0,&-S,&S+L+R \end{bmatrix} \]

\[=\begin{bmatrix} f_0,f_1,f_2,f_3,X_0,X_1,X_2,X_3,Y_0,Y_1,Y_2,Y_3,(S+L+R)^{n} \end{bmatrix} \]

于是就做完了,通过观察会发现有很多项本质相同(相等或互为相反数),所以可以把矩阵压缩一下,但是感觉没啥必要,已经能过了。

posted @ 2024-11-15 07:27  ZepX_D  阅读(26)  评论(0)    收藏  举报