CF2147I2.Longest Increasing Path (Hard Version)
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这是本题的 Hard 版本。不同之处在于本版本的第二个测试点为 n=300000。本题不允许 Hack。
我们称一个整数序列 a1,a2,…,an 为距离凸序列(distance-convex),如果对每个 1<i<n,都有 ∣ai−ai−1∣<∣ai+1−ai∣。换句话说,如果你按照 a1,a2,…,an 的顺序依次跳跃,则每一次跳跃的距离都严格大于上一次。
现在给定两个整数 n 和 m。请你找到一个长度为 n,且不超过 m 个不同数值的距离凸序列 a。从跳跃的角度来看,意味着你要完成 n−1 次递增跳跃,但至多经过 m 个不同的点。对于所有 1≤i≤n,需要满足 −1018≤ai≤1018。
输入格式
输入包含两个整数 n 和 m。
本题共两个测试点:
- n=8,m=6;
- n=300000,m=15000。
保证对于所有测试点都存在解。本题不允许 Hack。
输出格式
输出一个距离凸序列 a1,a2,…,an,其中最多包含 m 种不同的数值。对于所有 1≤i≤n,满足 −1018≤ai≤1018。
如果存在多组解,请输出其中任意一组。
输入输出样例
输入#1
8 6
输出#1
1 1 3 6 10 3 11 1
说明/提示
序列 [1,1,3,6,10,3,11,1] 的长度为 n=8,包含 5 个不同的数值,小于等于 m=6。相邻元素的差值序列为 0,2,3,4,7,8,10,严格递增。
[1,1,2,4,8,16,32,1] 也是一个合法答案。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?