2024-10-06 09:56:04
发布于:江苏
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int MAXN = 1e5 + 5;
vector<int> pos; // 存储原始位置
vector<int> queries[MAXN]; // 存储每个位置对应的查询
int ans[MAXN]; // 存储查询结果
int discrete[MAXN]; // 离散化后的结果
// 离散化函数
void discretize() {
sort(pos.begin(), pos.end());
pos.erase(unique(pos.begin(), pos.end()), pos.end()); // 去重
for (int i = 0; i < pos.size(); ++i) {
discrete[pos[i]] = i; // 映射
}
}
// 处理查询
void processQueries(int n, int q) {
// 初始化离散化
discretize();
// 构建数据结构(这里可以是线段树或树状数组)
// ...
// 处理每个查询
for (int i = 0; i < q; ++i) {
int a, b;
cin >> a >> b;
// 转换为离散化后的坐标
a = discrete[a];
b = discrete[b];
// 计算查询结果
// ...
ans[i] = ...; // 将查询结果存入 ans 数组
}
// 输出结果
for (int i = 0; i < q; ++i) {
cout << ans[i] << endl;
}
}
int main() {
int n, q;
cin >> n >> q;
pos.resize(n); // 读入干草垛位置
for (int i = 0; i < n; ++i) {
cin >> pos[i];
}
processQueries(n, q);
return 0;
}
这里空空如也
有帮助,赞一个