[CF963E]Circles of Waiting[高斯消元网格图优化+期望]

题意

你初始位于 \((0,0)\) ,每次向上下左右四个方向走一步有确定的概率,问你什么时候可以走到 以 \((0,0)\)为圆心,\(R\) 为半径的圆外。

\(R\le 50\)

分析

  • 暴力 \(O(R^6)\) 的高斯消元复杂度太高。
  • 注意到本题在网格图上操作,假设我们从上至下从左至右依次给在圆内的点标号,那么对于当前点来说,相关的点(除了等式右边)和他的标号都不超过 \(2R\) 。所以高斯消元的时候只需要考虑向下的 \(2R\) 行和向右的 \(2R\) 列即可。
  • 以前写的消成单位矩阵的方法是不可行的,因为向上消的操作会使上面的点所在的行中下面点那一列也存在。
  • 总时间复杂度 \(O(R^4)\)

代码链接

posted @ 2019-01-11 21:16  fwat  阅读(419)  评论(0编辑  收藏  举报