这题有两个可以统一的地方:
1. 无论e比下一个hi大还是小,下一个e都等于2倍的hi减e
2. 无论差是奇数还是偶数,可以通过加一除以2得到正确结果
所以结合贪心逆推就出来了。
其中,奇偶性的统一如下:
minE = (dp[i] + minE + 1) >> 1;
#include "cstdio"
const int N = 1e5+1;
int n, hi, minE, dp[N];
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++) scanf("%d", &dp[i]);
for(int i=n; i> 0; i--) minE = (dp[i] + minE + 1) >> 1;
printf("%d", minE);
}
这也不算动态规划吧,就是找到倒推的公式了而已呀。或者说这算最简单的dp?
不是DP是递推,答主搞错了
嗯,标题有点偏颇,内容里写的是结合贪心逆推