题意
有一个 n × n n\times n n×n 的网格,每个格子可能是宝藏(T
,只会有 k k k 个)、起点(S
,只会有一个)、红/绿/蓝色(R
/G
/B
)。玩家从起点出发,当经过红、绿、蓝色格子时,分别花费 r , g , b r,g,b r,g,b 金币,首次经过一个宝藏格子得到 t t t 金币,收集到 [ L X , R X ] [LX,RX] [LX,RX] 个宝藏后,便可以结束游戏。问结束游戏时玩家至多可以有多少金币?(若要倒扣便输出负数)
1 ≤ n ≤ 501 , 1 ≤ L X ≤ R X ≤ k ≤ 10 , 0 ≤ r , g , b , t ≤ 1 0 5 1\leq n \leq 501,1\leq LX\leq RX\leq k\leq 10,0\leq r,g,b,t\leq 10^5 1≤n≤501,1≤LX≤RX≤k≤10,0≤r,g,b,t≤105
题解
打胡乱说的官方题解:
正解:
先跑 k k k 次 dij 预处理出所有宝藏与起点间两两的距离。
这之后由于宝藏很少( ≤ 10 \leq 10 ≤