[HDU5443]The Water Problem

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5443

一道ST表的板子题。ST表可以用于满足幂等律x×x=x的运算,如最大最小值和gcd,因为其对重叠现象不敏感,时间复杂度O(nlogn),常数小于线段树,用得不多。

复制代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int bin[10],len[1010];
int Max[1010][10];
int main() {
    bin[0] = 1;
    len[1] = 0;
    for (int i = 1; i < 10; i++) bin[i] = bin[i - 1] << 1;
    for (int i = 2; i <= 1000; i++) len[i] = len[i >> 1] + 1;
    int T;
    scanf("%d", &T);
    while (T--) {
        int n;
        scanf("%d", &n);
        for (int i = 1; i <= n; i++) scanf("%d", &Max[i][0]);
        for (int k = 1; k < 10; k++)
            for (int i = 1; i + bin[k] <= n + 1; i++)
                Max[i][k] = max(Max[i][k - 1], Max[i + bin[k - 1]][k - 1]);
        int q;
        scanf("%d", &q);
        while (q--) {
            int l, r;
            scanf("%d%d", &l, &r);
            int k;
            for (int i = 0; i < 10; i++) {
                if (r - l + 1 < bin[i]) break;
                k = i;
            }
            printf("%d\n", max(Max[l][k], Max[r - bin[k] + 1][k]));
        }
    }
    return 0;
}
复制代码

 

 

 

 

posted @   halfrot  阅读(118)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示