import java.util.Scanner; public class AmberChallenge { static final int MAX_WIND_FIELDS = 5; static int[] windFields = new int[MAX_WIND_FIELDS]; static int windFieldCount = 0; static int[] windRings = new int[MAX_WIND_FIELDS]; static int windRingCount = 0; static boolean canReachDestination(int d, int h, int x, int y, int t, int currentDistance, int currentHeight, int speedMultiplier, int windRingRemainingTime) { // 如果安柏落水或者飞过了目的地,返回false if (currentHeight <= 0 || currentDistance > d) { return false; } // 如果安柏到达了目的地,返回true if (currentDistance == d && currentHeight == 0) { return true; } // 如果安柏在风环效果中 if (windRingRemainingTime > 0) { // 继续前进,保持当前的速度倍率 if (canReachDestination(d, h, x, y, t, currentDistance + x * speedMultiplier, currentHeight - y, speedMultiplier, windRingRemainingTime - 1)) { return true; } } else { // 如果不在风环效果里,检查是否可以进入一个风环 for (int i = 0; i < windRingCount; i++) { if (currentDistance == windRings[i]) { // 进入风环,速度倍率设置为2,重新设置风环效果时间 if (canReachDestination(d, h, x, y, t, currentDistance, currentHeight, 2, t)) { return true; } } } } // 检查是否可以进入风场,如果可以,将高度设置为最大值 for (int i = 0; i < windFieldCount; i++) { if (currentDistance == windFields[i]) { if (canReachDestination(d, h, x, y, t, currentDistance + x, h, speedMultiplier, windRingRemainingTime)) { return true; } } } // 没有进入风场也没有风环效果,正常飞行一次 return canReachDestination(d, h, x, y, t, currentDistance + x, currentHeight - y, speedMultiplier, windRingRemainingTime); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int testCases = scanner.nextInt(); while (testCases-- > 0) { int d = scanner.nextInt(); // 目的地水平距离 int h = scanner.nextInt(); // 初始高度 int x = scanner.nextInt(); // 水平飞行速度 int y = scanner.nextInt(); // 垂直下降速度 int t = scanner.nextInt(); // 风环效果时间 windFieldCount = scanner.nextInt(); for (int i = 0; i < windFieldCount; i++) { windFields[i] = scanner.nextInt(); } windRingCount = scanner.nextInt(); for (int i = 0; i < windRingCount; i++) { windRings[i] = scanner.nextInt(); } boolean result = canReachDestination(d, h, x, y, t, 0, h, 1, 0); System.out.println(result ? "YES" : "NO"); } scanner.close(); } }
点赞 1

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
11-06 12:53
吉林大学 Java
如题,ip属地末九,计算机科班大三本科生。想找一段寒假实习,也是第一次找实习。&nbsp;从大二暑假7月开始准备Java后端,前期有点磨叽,导致现在手忙脚乱。目前第二个项目黑马点评快写完了,第一个项目是苍穹外卖(两个项目都是烂大街的,这就很头大)。算法题在lc上从大二至今陆续刷了将近六百题,hot100已过一遍,面试150目前刷了一半。八股刚看了不到一周,想请教一下各位牛友,这一版简历哪些地方需要继续改进,接着优化?&nbsp;同时,是现在立即开始投递,边投边背八股,完善项目。还是说八股再背个小半个月再开始投递比较好一点,我现在担心的是到了这个月下旬或者12月再开始投递简历面试会有点晚,听同学说到年底hc数量会大...
mikeu04:简历顶部留名字即可,你写“后端开发实习生-Java”就是把自己的方向限制死了。我建议把这揉在个人简介里,说你对后端开发充满热情就行。性别出生年份以及微信号不是必须的。 把个人简介从教育背景里拿出来,第一个写。你的个人简介有点太泛了。把“爱好中长跑”去了,加点数字(“拥有xxx年的xxx经历”),加点你最熟的几个语言或技术栈。和别人的简介区分开来。 专业技能放项目经历前面。面试官一般会优先看这个再往下看你做了什么项目来考察你是否具备这些技能。实习我不是很清楚,但像Redis, JVM, 消息模型,计算机网络这些属于基本知识。你如果了解GCP, AWS, Docker 这些实际生产工具就可以把八股知识换掉。 项目简介可以和工作内容揉在一起。项目简介还是太长了,就一句话,“开发了一个基于【1,2个主要框架】为【目标客户群体】的【产品类型】, 实现了【产品价值】”。产品价值不是功能。比如一个在线计算器,它的功能是算数,但它的价值可以是让人在没带计算器的情况下算数(可访问性)或比手算效率提升了80%。工作内容多加点数字,你这个产品有多少人用了?浏览量是多少?技术上xxx性能提升了多少%?(实在想不出来就丢给deepseek :) 11 月理论上秋招已经结束了。八股是背不完的。无脑投,刷笔试,中了面试邀请就突击面经八股,没问题的。
大厂面试问八股多还是项目...
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务