京东2019春招算法工程师笔试题 还原
题目链接: https://www.nowcoder.com/questionTerminal/49c5284278974cbda474ec13d8bd86a9 题目大意 略 分析1 为了兼容题目要求,我在 0 位置和 n + 1 位置设置了值为 1 的哨兵,如此一来,前两个条件都可以无视,只需要关注第 3 个条件即可。 我首先想到的第一个DP是从后往前递推(详细见代码注释),不过只能过60%的案例,贴在这里给自己看看,正解在分析2。 代码如下(失败的DP,TLE) 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 #define INIT() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); 5 #define Rep(i,n) for (int i = 0; i < (n); ++i) 6 #define For(i,s,t) for (int i = (s); i <= (t); ++i) 7 #define rFor(i,t,s) for (int i = (t); i >= (s); --i) 8 #define ForLL(i, s, t) for (LL i = LL(s); i <= LL(t); ++i) 9 #define rForLL(i