由于不知道最后是从哪个出口出来的,所以状态数组为二维,维护两个世界dp[3][200010]每个位置由当前世界推移过来和从另一世界转移过来,所以状态转移方程:dp[1][i]=max(dp[1][i-1],dp[2][i-1]-k)+dp[1][i]只在dp[2][i-1]>=k的情况下满足,另一个世界也同理这里注意初始化全部为-0x3f3f3f3f表示无法到达,这里不能是0!!!,0也会被视为可以到达的状态。导致后面错误多加了状态,这里只要负数足够小,那么就不会被加到正数影响状态。最后附上代码 #include<bits/stdc++.h> using namespace ...