不能看题解 问个思路
查看原帖
不能看题解 问个思路
224978
optimize_2楼主2021/9/4 21:59

这题考场上想了很久没过。。。

首先我觉得好像有个性质 要让字典序最小 肯定要把 1 到 m 个数放到 1 到 m 号位置

然后就构造 分开讨论 如果 2m <= n 就这么做:

6 5 4 | 10 9 8 7 | 1 2 3

否则就

// 前提: m <= n && (2 * m - n >= 0) && (2 * n - 3 * m >= 0)

for (int i = 1; i <= 2 * m - n; i++) {
    printf("%d ", n - (2 * n - 3 * m) - i + 1);
}
for (int i = 1; i <= 2 * n - 3 * m; i++) {
    printf("%d ", n - i + 1);
}
for (int i = 1; i <= m; i++) {
    printf("%d ", i);
}

如果会有长度小于 0 的段就输出 1 到 n

但是只有 70pts 错了两个点

不知道哪里没想到

2021/9/4 21:59
加载中...