CF2147I2.Longest Increasing Path (Hard Version)

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是本题的 Hard 版本。不同之处在于本版本的第二个测试点为 n=300 000n=300\,000。本题不允许 Hack。

我们称一个整数序列 a1,a2,…,ana_1, a_2, \ldots, a_n 为距离凸序列(distance-convex),如果对每个 1<i<n1 < i < n,都有 ∣ai−ai−1∣<∣ai+1−ai∣|a_{i} - a_{i-1}| < |a_{i+1} - a_{i}|。换句话说,如果你按照 a1,a2,…,ana_1, a_2, \ldots, a_n 的顺序依次跳跃,则每一次跳跃的距离都严格大于上一次。

现在给定两个整数 nn 和 mm。请你找到一个长度为 nn,且不超过 mm 个不同数值的距离凸序列 aa。从跳跃的角度来看,意味着你要完成 n−1n-1 次递增跳跃,但至多经过 mm 个不同的点。对于所有 1≤i≤n1 \leq i \leq n,需要满足 −1018≤ai≤1018-10^{18} \leq a_i \leq 10^{18}。

输入格式

输入包含两个整数 nn 和 mm。

本题共两个测试点:

  • n=8n = 8,m=6m = 6;
  • n=300 000n = 300\,000,m=15 000m = 15\,000。

保证对于所有测试点都存在解。本题不允许 Hack。

输出格式

输出一个距离凸序列 a1,a2,…,ana_1, a_2, \ldots, a_n,其中最多包含 mm 种不同的数值。对于所有 1≤i≤n1 \leq i \leq n,满足 −1018≤ai≤1018-10^{18} \leq a_i \leq 10^{18}。

如果存在多组解,请输出其中任意一组。

输入输出样例

  • 输入#1

    8 6

    输出#1

    1 1 3 6 10 3 11 1

说明/提示

序列 [1,1,3,6,10,3,11,1][1, 1, 3, 6, 10, 3, 11, 1] 的长度为 n=8n=8,包含 55 个不同的数值,小于等于 m=6m=6。相邻元素的差值序列为 0,2,3,4,7,8,100,2,3,4,7,8,10,严格递增。

[1,1,2,4,8,16,32,1][1, 1, 2, 4, 8, 16, 32, 1] 也是一个合法答案。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页