[关闭]
@LinKArftc 2015-10-03T14:43:53.000000Z 字数 416 阅读 1033

RMQ

动态规划 RMQ


RMQ-ST算法

  1. const int maxn = 1000010;
  2. int num[maxn];
  3. int dp[maxn][30];
  4. int n;
  5. int main() {
  6. //input;
  7. scanf("%d", &n);
  8. for (int i = 1; i <= n; i ++) {
  9. scanf("%d", &num[i]);
  10. dp[i][0] = num[i];
  11. }
  12. for (int j = 1; (1 << j) <= n; j ++) {
  13. for (int i = 1; i + (1 << j) - 1 <= n; i ++) {
  14. dp[i][j] = min(dp[i][j-1], dp[i+(1<<(j-1))][j-1]);
  15. }
  16. }
  17. int q, a, b;
  18. scanf("%d", &q);
  19. while (q --) {
  20. scanf("%d %d", &a, &b);
  21. int k = 0;
  22. while (a + (1 << k) - 1 <= b) k ++;
  23. k --;
  24. printf("%d\n", min(dp[a][k], dp[b-(1<<k)+1][k]));
  25. }
  26. return 0;
  27. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注