题目链接:Click here~~
题意:
定义一 wavy number,规则是除了首位和末位,每位的数字严格大于或小于两边的相邻数字,然后给出 k,n,问 n 的倍数中第 k 小的 wavy number 是谁。
规定合法解的范围为 [1,10^14]。
思路:
虽然题目拐了很多弯,但逐步分析还是发现可以做的。第一直觉是什么?数位DP?没错,跟着感觉走~~~
【子结构】首先对于一个合法解,从两边去掉这个数字的若干位会发现它依然是合法的。【子结构】
【状态确定与转移】当尝试从低位到高位构造合法的解时,会发当前新添数字的选择仅与已构造好的那些数字的最高位 以及 次高位与最高位的大小关系 有关。
(对于已有合法解 321,向高位添加一个数字 x,使 x321 依然合法, 此时限制取决于 "3" 以及 "2" < “3” 的关系,即 x 也要小于 3,即 可选集合为 {1,2}。
有了子结构和状态转移,就比较好 dp 了吧。