2024.7.20.pm

一_getch();

_getch() 是一个在 C 和 C++ 中用于无回显地从控制台读取一个字符的函数。

_getch 函数的声明通常位于 <conio.h> 头文件中

它不会将输入的字符显示在屏幕上。

但,_getch() 不是标准 C 和 C++ 库中的函数,通常在 Windows 平台的特定编译器(如 Visual C++)中可用。如果您希望编写可移植的代码,建议使用标准库中的输入函数,如 getchar() 。

二RMQ问题

st预处理

  • #include <bits/stdc++.h>  // 包含 C++ 标准库的所有头文件
    using namespace std;  // 使用标准命名空间
    typedef long long ll;  // 定义 ll 为 long long 类型的别名
    
    const ll N = 1e7 + 10;  // 定义常量 N ,表示一些规模或边界
    ll x, y, n, m;  // 定义多个长整型变量
    ll a[N], f[N][21], log1[N];  // 定义长整型数组 a 、二维数组 f 和数组 log1
    
    void st() {  // 定义预处理函数 st
        for (ll i = 1; i <= n; i++) {  // 初始化 f 数组的第一列
            f[i][0] = a[i];
        }
        for (ll j = 1; j <= log1[n]; j++) {  // 进行动态规划的计算
            for (ll i = 1; i + (1 << j) - 1 <= n; i++) {
                f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
            }
        }
    }
    
    int main() {  // 主函数
        cin >> n >> m;  // 输入数组长度 n 和查询次数 m
        for (ll i = 1; i <= n; i++) {  // 输入数组 a 的元素
            cin >> a[i];
        }
        log1[0] = -1;  // 初始化 log1 数组的第一个元素
        for (ll i = 1; i <= n; i++) {  // 计算 log1 数组的其他元素
            log1[i] = log1[i >> 1] + 1;
        }
        st();  // 调用预处理函数
        for (ll i = 1; i <= m; i++) {  // 处理 m 次查询
            cin >> x >> y;  // 输入查询的左右边界
            ll k = log1[y - x + 1];  // 计算对应的 k 值
            cout << max(f[x][k], f[y - (1 << k) + 1][k]) << endl;  // 输出查询结果
        }
        return 0;  // 程序正常结束返回 0
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值