[1-03H]nocriz参加学习运动

nocriz参加学习运动

题解

又是一个跑图的。

发现图挺大的,但发现一个神奇的现象,边权只有\leq 50的取值,而它自身的权值又会不断地增加,所以它能走的边又是不断增加地,但增加次数较少,于是就可以用矩阵去处理它每走一步的情况,将每一种状态下可走的边表示成矩阵,没走一次就是乘一次这个矩阵,用矩阵快速幂去处理。

如果在这种情况下它可以走到终点的话的话,说明肯定有一种情况是走到终点的,我们就可以去二分它是在什么时候走到终点的,如果一直走不到就impossible。

然后笔者就天真地以为可以过了,发现只有35pts,为什么我暴力都可以得60pts。

我们发现它只有到与没到的两种情况,可以用一个而二进制的来表示它,我们就用了bitset来表示它,分行与列两个数组,乘与加的两种操作都可以用位运算来表示。这样时间复杂度就可以过了。

笔者又天真地认为可以过了,呵呵。还是T了,95pts。于是笔者就加上了一个超级优化......

源码

这题就这么卡常吗,虽说校内OJ有些差,但我又不是zxy....

 

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(&
posted @ 2022-07-07 00:13  StaroForgin  阅读(12)  评论(0)    收藏  举报  来源