zoukankan      html  css  js  c++  java
  • UOJ Round #8 赴京赶考 解题报告

    算法零

    $n,m le 100, q le 10$ 的话,直接给网格中的每一个格点都建一个点,然后该怎么最短路就怎么最短路,该怎么并查集+BFS就怎么并查集+BFS。

    复杂度 $O(qnm)$,可以拿下前30分。

    算法一

    $nle 10^5, m = 1, qle 10^5$ 的话,我们可以直接预处理出 $(1,1)-(1,i)$ 的距离以及 $(1,i)-(1,n)$ 的距离,然后就枚举走的方式 $i-j$ 或者 $j-n-1-i$ 就可以啦。

    复杂度 $O(n + q)$,结合算法零可以拿下50分。

    算法二

    $n,mle 10^5, qle 10^5$ 的话,我们发现我们可以突破维度的界限,把每一维拆开分别考虑,最后的答案就是每一维的答案的和。

    这为啥是对的呢?

    对于 $a_i  eq a_{i+1}$,无论 $b_j$ 取啥值,你从 $(i,j)$ 穿越到 $(i+1,j)$ 的时候,都必然会花费等待时间;否则如果 $a_i = a_{i+1}$ 的话,就必然不会花费等待时间。所以一条路线的总等待时间可以拆分成各个维度的等待时间的和。

    然后这个问题就变成一维问题啦,直接用算法一的搞法就可以了。

    复杂度 $O(n + m + q)$,可以拿下100分。

    至于代码的话,UOJ 上一大把一大把的呀。。。

    原文地址:http://vfleaking.blog.uoj.ac/blog/490

  • 相关阅读:
    第八周总结和实验六
    第七周总结与实验五
    遍历目录中的所有文件和目录,并生成全路径
    python watchdog
    Offer_answer_with_SDP_rfc3264
    [转]UML八大误解
    leetcode周赛220
    Codeforces Round #690 (Div. 3)
    学习资料
    鱼眼图与六面图转换(python)
  • 原文地址:https://www.cnblogs.com/gromah/p/4589158.html
Copyright © 2011-2022 走看看