World Robot Contest2025-2026Algorithm Application ThemeJunior Highwrc.hao.work
WRC
Contest Archive / Structured Dossiers青少年算法应用训练档案馆

把训练题、知识点、执行证据和最终解题档案统一归档成可直接浏览的竞赛资料库。

Archive30 Cases

四大文化赛道完整展开

AccessHTTPS

完整题面 / 题解 / 运行证据

No Rounded CornersTailwind FirstDossier Ready
06-deliverables/appendix-code.md

红色宣讲波次:广播时段覆盖统计 代码附录

站内文件视图直接读取仓库内容,Markdown 使用文档排版渲染,其余文本文件保持原始排版,方便校对训练证据链。

文件类型Markdown

10-cases/s2-jh-07-broadcast-wave/06-deliverables/appendix-code.md

Python 主实现

源文件:main.py

  • 实现状态:当前已有可执行实现
import sys


def solve(data: str) -> str:
    tokens = list(map(int, data.split()))
    if not tokens:
        return ""
    it = iter(tokens)
    n = next(it)
    timeline = next(it)
    diff = [0] * (timeline + 3)
    for _ in range(n):
        left = next(it)
        right = next(it)
        diff[left] += 1
        diff[right + 1] -= 1
    active = 0
    covered = 0
    peak = -1
    first_peak = 0
    for minute in range(timeline + 1):
        active += diff[minute]
        if active > 0:
            covered += 1
        if active > peak:
            peak = active
            first_peak = minute
    return "\n".join(
        [
            f"covered={covered}",
            f"peak={peak}",
            f"first_peak={first_peak}",
        ]
    )


if __name__ == "__main__":
    sys.stdout.write(solve(sys.stdin.read()).strip())
    sys.stdout.write("\n")

C++ 对照实现

源文件:main.cpp

  • 实现状态:当前已有可执行实现
#include <iostream>
#include <vector>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, timeline;
    if (!(cin >> n >> timeline)) {
        return 0;
    }
    vector<long long> diff(timeline + 3, 0);
    for (int i = 0; i < n; ++i) {
        int left, right;
        cin >> left >> right;
        ++diff[left];
        --diff[right + 1];
    }
    long long active = 0;
    long long covered = 0;
    long long peak = -1;
    int first_peak = 0;
    for (int minute = 0; minute <= timeline; ++minute) {
        active += diff[minute];
        if (active > 0) {
            ++covered;
        }
        if (active > peak) {
            peak = active;
            first_peak = minute;
        }
    }
    cout << "covered=" << covered << "\n";
    cout << "peak=" << peak << "\n";
    cout << "first_peak=" << first_peak << "\n";
    return 0;
}