专栏文章
题解:P14257 嫉妒(jealousy)
P14257题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @minjgncn
- 此快照首次捕获于
- 2025/12/02 03:25 3 个月前
- 此快照最后确认于
- 2025/12/02 03:25 3 个月前
TJ P14257
前言
一道看似困难实则简单的题目。不需要数学,仅需 个
for 循环轻松拿下。Analysis
题目中仅给出了 个变量,这种题根据经验一般为数学题。但是看过 Tag 变量范围:
,,。
发现其实可以暴力枚举。
具体如何枚举呢?
首先,枚举一个时刻 表示面试进行的场数。枚举一个变量 表示小 Y 转的圈数。枚举范围,由
具体地,他会在第 分钟在面试间门口。第 场面试的时间为从第 分钟到第 分钟。
可知,应为 至 之间。
判断是否正好撞上小 Y 时,可以判断上一场面试开始与结束的时间是否与小 Y 在面试间门口时间相等。
因此,就很好写出代码了:
Code
CPP#include <bits/stdc++.h>
using namespace std;
int main() {
int n, y, s, t; // n: 面试的场数; y: 来的时刻; s: 面试持续的时间; t: 巡逻一圈的时间
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> y >> s >> t;
for (int i = 1; i <= n; i++) { // i: 面试的场数
int sk1 = (i - 1) * s;
int sk2 = i * s; // 两个时刻
bool flag = true; // 是否有一个符合题意的时刻
for (int j = 0; j * t + y <= n * s; j++) {
if (j * t + y == sk2 || j * t + y == sk1) {
flag = false;
break;
}
}
if (flag) {
cout << "Yes";
goto end; // 不想写 return 0
}
}
cout << "No";
end:
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...