很shi的一场考试,主要是自己轻视T1了。
刚看到T1之后,感觉是exgcd水题,思考出现偏差。
然后比较谨慎地回忆了一下ex_gcd,写了上去。
感觉最终ans一定是一正一负。然后就沉迷去找>s的最小的x。
看着旁边人逐渐挂上对拍……你注意力在哪啊???
最后还有不到30min,然后发现自己思路是错的。
再看T2,T3暴力只有10分。。就接着刚T1。
总之,以后不能轻视任何一道题目。
T1
首先题目转化成求ax+by=s,
然后一时兴起,这不是一定会有一正一负的情况吗?(zzyy证明)
那我直接找到x>s最小的吗?
O(1)能出吧,然后我就想了1h多。
然后发现要保证abs(x)+abs(y)最小??
当场去世不多说了。。。
其他人考场上的AC的做法是进行三分。
可以画出来函数图像,Miemeng大佬的精心博客
正解是贪心。 最优解一定在abs_x或abs_y最小的位置。
可以用图像,当然口胡也是很棒的。。。
证明:当a<b时,显然x的变化幅度>y所以要让x尽量小,反之就是y
T2 同模拟40队长快跑。
难点:排序方式为按照a+b进行排序
证明:skyhhh巨佬
然后和队长快跑一样了
T3「最短路」
第一次遇见多源最短路
实现是在spfa的思路上,只是将第一次入队的由一个点变成好多点,其他是一样的。显然三角形法则仍然适用。
先跑一个多源最短路,然后维护 更新每个点dis的源点是谁
最后枚举每一条边,如果这条边的两段的点不是被同一个源点更新的,那就更新这两个源点的ans
正确性:对于每个成为ans的路径,必然会有中间两个点属于上述情况。