ARTICLE · 997401
2026航模竞赛真题:航迹观测窗口解析
2026航模竞赛真题:航迹观测窗口解析
#include <iostream> #include <vector> using namespace std; int main() { int n, K; if (!(cin >> n >> K)) return 0; vector<int> w(n); for (int i = 0; i < n; i++) cin >> w[i]; int left = 0, maxlen = 0, best_start = 0, count = 0; for (int right = 0; right < n; right++) { if (w[right] > K) { left = right + 1; continue; } // 风速超标,窗口作废,从下一天重开 int L = right - left + 1; if (L > maxlen) { maxlen = L; count = 1; best_start = left; } else if (L == maxlen) { count++; } // 又出现一个等长起点 } // 输出:最长窗口长度 / 最早起始日(1-based) / 达标起点个数 cout << maxlen << " " << (maxlen ? best_start + 1 : 0) << " " << count << endl; return 0; } def solve(w, K): n = len(w) left = 0 maxlen = 0 best_start = 0 count = 0 for right in range(n): if w[right] > K: # 风速超标,窗口作废,从下一天重开 left = right + 1 continue L = right - left + 1 if L > maxlen: maxlen = L count = 1 best_start = left elif L == maxlen: # 又出现一个等长的达标起点 count += 1 start = best_start + 1 if maxlen else 0 return maxlen, start, count # 样例 w = [3, 5, 2, 8, 1, 4, 6, 2, 3, 9] print(solve(w, 5)) # -> (3, 1, 1)
2026航模竞赛真题:航迹观测窗口解析
🛰️ 开学季特训|「飞向北京·飞向太空」全国青少年航空航天模型教育竞赛(教育部白名单)的无人机编程飞行赛项,要求选手在风速波动中规划最稳的航迹。今天我们用一道原创「真题」拆解滑动窗口算法。
一、题目背景
在无人机编程飞行赛项中,裁判会连续记录 N 天的瞬时风速(单位 cm/s)。无人机安全飞行要求当天风速不超过阈值 K。我们把「一段连续天数,每天风速都 ≤ K」称为一个适宜飞行窗口。请回答三个问题:
最长适宜飞行窗口包含多少天? 该最长窗口最早从第几天开始(1-based)? 共有多少个不同的起始日能取到该最长长度?
二、样例
输入:N=10, K=5,风速序列 [3,5,2,8,1,4,6,2,3,9]
输出:3 1 1(最长窗口为前 3 天 [3,5,2],从第 1 天开始,仅此 1 个起点)。
三、滑动窗口思路拆解
核心观察:窗口内所有元素都必须 ≤ K,因此一旦碰到某天风速超标,包含这一天的任何窗口都作废,只能从它的下一天重新开窗口。维护左右指针 left / right:
右指针 right逐天右移;若 w[right] > K,令left = right+1,当前窗口清空;否则当前窗口长度 L = right-left+1,用它更新「最长长度 / 最早起点 / 等长起点计数」。
四、C++ 参考代码
五、Python 参考代码
六、复杂度与边界
时间复杂度 O(N),每个元素最多被左右指针各访问一次;空间复杂度 O(1)(仅用几个标量);边界:所有天都超标时最长窗口为 0,起点输出 0;序列等长窗口可能多个,计数需累加。
七、考点拆解(7 点)
- 双指针滑动窗口
:右扩左缩维护合法区间; - 合法性判定
:窗口内元素全部满足条件,遇违例立即重开; - 最值记录
:边扫边维护最大长度与对应起点; - 计数去重
:等长窗口用计数器累加,避免遗漏多个起点; - 1-based 与 0-based
:输出时下标 +1 转换; - 全违例边界
:最长长度为 0 时起点应返回 0; - 线性思维
:把"连续子段"问题从 O(N²) 暴力压到 O(N)。
八、动手练一练
把序列改成 [4,4,2,7,4,4,2,7,4,4,2,1]、K=5,最长窗口是多少天、从第几天开始?欢迎在评论区贴出你的运行结果,下期拆解「单调队列」变体。
📚 免费少儿编程资料(夸克网盘领取)
以下资料来自夸克网盘分享。个人号链接暂不支持直接点击,请长按或复制下方链接,打开夸克网盘 App / 网页粘贴即可保存:
1. 全国青少年信息素养大赛复赛集训题目Python&C++.docx https://pan.quark.cn/s/93995d3cb150 2. 2024信息素养-智能算法应用挑战赛-复赛初中组题目7月7日.pdf https://pan.quark.cn/s/da97b5dbf75d 3. Python背记手册.pdf https://pan.quark.cn/s/7568ae9ca92b 4. Python课程 https://pan.quark.cn/s/a94bf02d00c6 5. 2024信息素养大赛图形化复赛集训题答案3-9 https://pan.quark.cn/s/6ccab7ec3cbc 6. 2025年03月份电子学会考级真题 https://pan.quark.cn/s/4403c4228912 7. 2025全国青少年信息素养大赛赛项说明 https://pan.quark.cn/s/d9d0df4a9f29 8. 青少儿信息素养大赛编程资料 https://pan.quark.cn/s/4ab6bd83be8a
资料持续更新,关注本号第一时间获取新分享。