关注
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
相关推荐
查看26道真题和解析 点赞 评论 收藏
分享
10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活 点赞 评论 收藏
分享
11-06 12:53
吉林大学 Java mikeu04:简历顶部留名字即可,你写“后端开发实习生-Java”就是把自己的方向限制死了。我建议把这揉在个人简介里,说你对后端开发充满热情就行。性别出生年份以及微信号不是必须的。
把个人简介从教育背景里拿出来,第一个写。你的个人简介有点太泛了。把“爱好中长跑”去了,加点数字(“拥有xxx年的xxx经历”),加点你最熟的几个语言或技术栈。和别人的简介区分开来。
专业技能放项目经历前面。面试官一般会优先看这个再往下看你做了什么项目来考察你是否具备这些技能。实习我不是很清楚,但像Redis, JVM, 消息模型,计算机网络这些属于基本知识。你如果了解GCP, AWS, Docker 这些实际生产工具就可以把八股知识换掉。
项目简介可以和工作内容揉在一起。项目简介还是太长了,就一句话,“开发了一个基于【1,2个主要框架】为【目标客户群体】的【产品类型】, 实现了【产品价值】”。产品价值不是功能。比如一个在线计算器,它的功能是算数,但它的价值可以是让人在没带计算器的情况下算数(可访问性)或比手算效率提升了80%。工作内容多加点数字,你这个产品有多少人用了?浏览量是多少?技术上xxx性能提升了多少%?(实在想不出来就丢给deepseek :)
11 月理论上秋招已经结束了。八股是背不完的。无脑投,刷笔试,中了面试邀请就突击面经八股,没问题的。
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 第一次找实习,我建议__ #
8122次浏览 107人参与
# 如果今天是你的last day,你会怎么度过? #
40422次浏览 273人参与
# 联影求职进展汇总 #
94120次浏览 477人参与
# 秋招暂停,我将对以下公司做出处罚__ #
15444次浏览 71人参与
# 你听到的“最没用”的秋招建议 #
13880次浏览 164人参与
# 从mentor身上学到了__ #
8541次浏览 123人参与
# 2025秋招体验点评 #
35992次浏览 345人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
2534次浏览 17人参与
# 工作以后,你父母对你啥态度 #
6205次浏览 68人参与
# 非技术岗简历怎么写 #
257942次浏览 3093人参与
# 小红书取消大小周 #
78052次浏览 180人参与
# 什么样的公司千万别去 #
8887次浏览 79人参与
# 薪资要看总包还是月薪? #
11935次浏览 136人参与
# 如果有时光机,你最想去到哪个年纪? #
60119次浏览 830人参与
# 四大天坑是哪四家? #
87778次浏览 222人参与
# 机械人的保底公司是哪一家? #
42669次浏览 139人参与
# 选完offer后,你后悔学机械吗? #
45235次浏览 257人参与
# 你在职场上见过哪些“水货”同事 #
12181次浏览 102人参与
# 秋招签约后的心态变化 #
103003次浏览 917人参与
# 机械人值得去的半导体企业 #
30393次浏览 179人参与
# 机械人的薪资开到多少,才适合去? #
144438次浏览 519人参与