解题思路:
避坑指南:兔子休息完后,如果仍然领先乌龟t米及以上,兔子还是会跑一次,不会继续休息的
参考代码:

import java.util.Scanner;

public class T1476 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		while(in.hasNext()){
			int v1 = in.nextInt(),v2 = in.nextInt(),
				t = in.nextInt(),s = in.nextInt(),l = in.nextInt();
			int Sr = 0,St = 0,time = 0;
			int break_time = 0;
			//每循环一次,过一秒,乌龟跑v2米,但兔子如果处在休息期内,相当于受到惩罚,不允许动,
			//而一旦休息期过,不管领先还是落后,不管领先超了t米还是没有,都要动一次
			while(Sr < l && St < l){
				time++;
				St += v2;
				if(break_time > 0){
					break_time--;
					continue;
				}
				Sr += v1;//休息期一过,一定动一次
				if(Sr - St >= t)
					break_time = s;
			}
			if(Sr == l && St == l)
				System.out.printf("D%n%d%n",time);
			else if(St == l)
				System.out.printf("T%n%d%n",time);
			else
				System.out.printf("R%n%d%n",time);
		}
		in.close();
	}
}


点赞(3)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 9 条评论

BUG写手 3年前 回复TA
@suda401015 //判断兔子是否可以开始休息了 			if(rabbit - turtle >= t) 			{ 				time = s; 			}                                      这样就不过
BUG写手 3年前 回复TA
@BUG写手 发错了,无视
BUG写手 3年前 回复TA
这是过了的
	public static void main(String[] args) {
		// TODO Auto-gener
BUG写手 3年前 回复TA
@suda401015 public static void main(String[] args) { 		// TODO Auto-generated method stub 		Scanner in = new Scanner(System.in); 		int v1 = in.nextInt();	//兔子的速度 		int v2 = in.nextInt();	//乌龟的速度 		int t = in.nextInt();	 		int s = in.nextInt();	//兔子发现自己领先t米就会休息s秒 		int l = in.nextInt(); 		int turtle = 0; 		int rabbit = 0; 		int time = 0;	//兔子停留的时间 		int second = 0; 		while(turtle < l && rabbit < l) 		{ 			//乌龟不到终点不停止 			turtle += v2; 			//判断兔子是否还在休息状态 			if(time > 0) 			{ 				time--; 			} 			else 			{ 				rabbit += v1; 				//判断兔子是否可以开始休息了 				if(rabbit - turtle >= t) 				{ 					time = s; 				} 			} 			second++; 		} 		if(turtle >= l && rabbit >= l) 		{ 			System.out.println("D"); 		} 		else if(turtle >= l) 		{ 			System.out.println("T"); 		} 		else 		{ 			System.out.println("R"); 		} 		System.out.println(second); 		 		in.close(); 	} }
BUG写手 3年前 回复TA
@suda401015 这是过了的package 模拟; import java.util.Scanner;  public class 龟兔赛跑预测 { 	/* 	 * 话说这个世界上有各种各样的兔子和乌龟,但是  研究发现,所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。 	 * 于是世界上各个角落都不断在发生着乌龟和兔子的比赛,小华对此很感兴趣,于是决定研究不同兔  子和乌龟的赛跑。 	 * 他发现,兔子虽然跑比乌龟快,但它们有众所周知的毛病——骄傲且懒惰,于是在与乌龟的比赛中,一旦任一秒结束后 	 * 兔子发现自己领先t米或以  上,它们就会停下来休息s秒。对于不同的兔子,t,s的数值是不同的,但是所有的乌龟却是一致——它们不到终点决不停止。  	然而有些比赛相当漫长,全程观看会耗费大量时间,而小华发现只要在每场比赛开始后记录下兔子和乌龟的数据——兔子的速 	度v1(表示每秒兔子能跑v1  米),乌龟的速度v2,以及兔子对应的t,s值,以及赛道的长度l——就能预测出比赛的结果。但 	是小华很懒,不想通过手工计算推测出比赛的结果,于是他找  到了你——清华大学计算机系的高才生——请求帮助,请你写一个程序, 	对于输入的一场比赛的数据v1,v2,t,s,l,预测该场比赛的结果。 	 */ 	public static void main(String[] args) { 		// TODO Auto-generated method stub 		Scanner in = new Scanner(System.in); 		int v1 = in.nextInt();	//兔子的速度 		int v2 = in.nextInt();	//乌龟的速度 		int t = in.nextInt();	 		int s = in.nextInt();	//兔子发现自己领先t米就会休息s秒 		int l = in.nextInt(); 		int turtle = 0; 		int rabbit = 0; 		int time = 0;	//兔子停留的时间 		int second = 0; 		while(turtle < l && rabbit < l) 		{ 			//乌龟不到终点不停止 			turtle += v2; 			//判断兔子是否还在休息状态 			if(time > 0) 			{ 				time--; 			} 			else 			{ 				rabbit += v1; 				//判断兔子是否可以开始休息了 				if(rabbit - turtle >= t) 				{ 					time = s; 				} 			} 			second++; 		} 		if(turtle >= l && rabbit >= l) 		{ 			System.out.println("D"); 		} 		else if(turtle >= l) 		{ 			System.out.println("T"); 		} 		else 		{ 			System.out.println("R"); 		} 		System.out.println(second); 		 		in.close(); 	} }
BUG写手 3年前 回复TA
@suda401015 或者就是你的方法不需要考虑到这个,那就没事
BUG写手 3年前 回复TA
@suda401015 按照还会继续休息的思维,那就是错的
judgement 4年前 回复TA
错了,真是,会坑人的
suda401015 6年前 回复TA
错的,兔子还是会休息