题目大意:牛可乐得到了一个长度为 n 且非严格单调递增的序列 a,然而这个序列被 q 层魔法封印了,其中第 i 层封印的问题包含两个整数 xi,yi(xi≤yi),牛可乐必须正确回答序列中大于等于 xi且小于等于 yiy_iyi 的数字个数才能够解开该层封印。
牛可乐觉得这个问题太难了,于是他想请你帮助他解开序列的 q 层封印。
牛可乐觉得这个问题太难了,于是他想请你帮助他解开序列的 q 层封印。
思路:二分查找模板题,由于本蒟蒻太菜,不会二分模板(好吧其实是太懒了),只能用C++库中的二分查找函数水过。
#include <bits/stdc++.h> using namespace std; signed main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) cin >> a[i]; int q; cin >> q; int l, r; while (q--) { cin >> l >> r; cout << upper_bound(a.begin(), a.end(), r) - lower_bound(a.begin(), a.end(), l) << endl; } }