题解 1108: 守望者的逃离

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

1108: 守望者的逃离

摘要:```cpp #include using namespace std; int m,s,t; int main() { cin>>m>>s>>t; int s1=0,s……

守望者的逃离

摘要:解题思路:注意事项:参考代码:#include<stdio.h>int main(){ int m,s,t;//魔法初值m,初始位置与岛的出口之间的距离s,岛沉没的时间t。 scanf("%d %d ……

1108:守望者的逃离题解简单

解题思路:首先DP的套路就是先找状态这题也找不出其他的状态了,只有时间一个所以用f[i]表示时刻i能走多远而仔细一想实际上决策只有跑、闪现、停三种决策然而闪现的耗蓝要和跑步一同计算十分麻烦于是把它们分开算:先算闪现的,有以下框架foriinrange(1,t)如果蓝量够闪现,
优质题解

1108: 守望者的逃离

解题思路:算是动态规划,但贪心一样可以做,就是蓝够就用闪烁,蓝不够就根据剩余蓝量、剩余时间、剩余距离决定是跑步还是闪烁。核心思想总结来说就是:每秒的当前总位移是选择闪烁(分为位移和休息)和选择跑步两者间的最大值。注意事项:需要理解的地方是:blink[i]=blink[i-1]+60;和move[i]

C++代码,Dp做法

解题思路:注意事项:参考代码:很显然,每秒钟有三种dp状态:走路,闪烁,休息,如果将闪烁和休息练成一个dp,即算出每分钟存用法术可以走的最远距离,最后在用走路的来更新,即可得到答案设dp[i]表示第i分钟可以走到的最远距离若使用法术,dp[i]=dp[i-1]+60;若休息,

守望者的逃离-题解(Java代码)

```javapublicstaticvoidf3(){Scannersc=newScanner(System.in);intM=sc.nextInt();//法力intS=sc.nextInt();//距离intT=sc.nextInt();//时间inttime=0;//用来存放最短时间intle

守望者的逃离-题解(Java代码)

```java此题就是贪心算法的典型应用,理解原理就好了publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intm=scanner.nextInt();intn=scanner.nextInt();intt=

守望者的逃离-题解(Java代码)

```javaimportjava.util.Scanner;/***一个一直用魔法,一个一直跑*在每一秒钟都进行比较,把大的值进*行赋值,这样就可以判断一定时间内*是进行跑还是用魔法**/publicclassMain{publicstaticvoidmain(String[]args){Scann

守望者的逃离-题解(Python代码)

笔者本题就写得很丑陋了....要算一定时间内最大移动距离si,就需要注意到递归关系:```pythonsi=max(si+17,u[m][ti%7]+120*(ti//7))```max函数中后一项是一直用闪光所能移动的最大距离,其实这个可以另用函数算,笔者这里就偷懒了。