2018 ACM-ICPC World Finals
2018 ACM-ICPC World Finals - Beijing A. Catch the Plane $dp[v_i,t_i]$表示时刻$t_i$在$v_i$点,到达终点的最大概率,那么转移方程为: $dp[(v_i,t_i)] = max(P_{ij}*dp[(v_{j+1},t_{j+1})] + (1-Pij)*dp[(v_{i+1},t_{i+1})])$ $dp[(v_i,t_i)] = max(dp[v_{i+1},t_{i+1}])$ 其中$(v_i,t_i)$的一个后继状态为$(v_j,t_j)$两个状态之间的转移概率为$P_{ij}$,第一种转移:沿$P_{ij}$这个方向转移,以及继续留在这个点等待下次转移($(v_{i+1},t_{i+1})$为同一位置下与$t_i$最接近的下一个时间);第二种转移是:直接选择继续等待的概率。想出这些后,以为可以愉快的ac了。然而调到早上7点。。。才弄好 问题一:%I64d读1e18,蜜汁爆了,换了几个编译器才发现。。。 问题二:为简化代码省略了讨论,导致后面一个点wa 问题三:起点和终点要单独加进去,导致后面一个点wa #include <bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;++i) #define pb push_back typedef long