1 条题解

  • 1
    @ 2025-8-16 17:09:23

    根据题意进行二分查找即可。

    参考代码(C++):

    #include <bits/stdc++.h>
    using namespace std;
    
    #define debug(x) cerr << #x" = " << x << " ";
    #define dbged cerr << "\n";
    
    using ll = long long;
    using ull = unsigned long long;
    using PII = pair<int, int>;
    
    signed main() {
    
        ios::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
    
        int n;
        cin >> n;
        vector<int> a(n + 1);
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
        }
        
        int t;
        cin >> t;
        while (t--) {
            double p, q;
            int l, r, y;
            cin >> p >> q >> l >> r >> y;
            
            int lo = l - 1, hi = r + 1;
            while (lo + 1 < hi) {
                int mid = lo + ((hi - lo) >> 1);
                int res = p * a[mid] + q;
                if (res <= y) {
                    lo = mid;
                } else {
                    hi = mid;
                }
            }
            
            if (lo < l) {
                cout << "-1\n";
            } else {
                cout << lo << "\n";
            }
        }
    
        return 0;
    }
    
    • 1

    信息

    ID
    173
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    77
    已通过
    14
    上传者