intTsearch(const vector<int> &a, int l, int r, int x){ while (l < r) { int mid = (l + r) / 2; if (a[mid] >= x) r = mid; else l = mid + 1; } return l; }
intmain(){ int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } int q; cin >> q; int x; for (int i = 0; i < q; i++) { cin >> x; int result = Tsearch(a, 0, n, x); if (a[result] == x) { cout << "Yes" << endl; } else { cout << "No" << endl; } } return0; }
intmain(){ int n, c; cin >> n >> c; vector<int>a(n); longlong s = 0; for (int i = 0; i < n; i++) cin >> a[i]; sort(a.begin(), a.end()); for (int i = 0; i < n; i++) s += upper_bound(a.begin(), a.end(), a[i] + c) - lower_bound(a.begin(), a.end(), a[i] + c);//关键,利用两个二分查找锁定目标A(即满足B+C的数字A) cout << s << endl; return0; }
intmain(){ int n, k, mid; cin >> n >> k; vector<int>h(n); vector<int>w(n); int ans = 0; for (int i = 0; i < n; i++) { cin >> h[i] >> w[i]; ans = max(h[i], max(ans, w[i])); } int l = 0, r = 2 * ans;//原本从很大范围进行查找,因为这边已知边长,因此可以缩小范围 while (l < r) {//l<r的模型 ans = 0; mid = (l + r + 1) / 2; for (int i = 0; i < n; i++) ans += (h[i] / mid) * (w[i] / mid); if (ans >= k)//若所求块数大于小朋友人数,进行逼近 l = mid; else//小于所求人数,右边减少一位进行缩小 r = mid - 1; } cout << l; return0; }