关注
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
相关推荐
点赞 评论 收藏
分享
06-19 22:53
江西应用科技学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 工作中哪个瞬间让你想离职 #
28354次浏览 197人参与
# 在职场上,你最讨厌什么样的同事 #
16244次浏览 162人参与
# 选了这个offer,你有没有后悔? #
592966次浏览 4028人参与
# 小米硬件提前批进度交流 #
171099次浏览 1528人参与
# 哪些公司校招卡第一学历 #
74180次浏览 300人参与
# 机械人,秋招第一次笔试的企业是哪家? #
41100次浏览 326人参与
# 担心入职之后被发现很菜怎么办 #
139271次浏览 808人参与
# 入职以后才知道的校招谎言 #
88966次浏览 587人参与
# 华子oc时间线 #
1244976次浏览 6487人参与
# Offer比较,你最看重什么? #
192117次浏览 1309人参与
# 哪些公司开提前批了? #
29677次浏览 275人参与
# 风评不好的公司,你会去吗? #
65687次浏览 463人参与
# 两会劳动法放大招 #
76696次浏览 692人参与
# 实习如何「偷」产出? #
55630次浏览 1389人参与
# 职场常用语录大全 #
4045次浏览 30人参与
# 不卡学历的大厂有哪些? #
32402次浏览 245人参与
# 校招阶段,学历VS技术哪个更重要? #
19280次浏览 200人参与
# 机械人春招想让哪家公司来捞你? #
349547次浏览 3088人参与
# 除了主业以外,你还有哪些其他收入? #
13423次浏览 203人参与
# 工作丧失热情的瞬间 #
294398次浏览 2373人参与