一_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 }