第二题我用的二分查找O(nlogn)也过了,代码: #include <iostream> using namespace std; const int MAXN = int(2e6 + 10); int A[MAXN]; int preSum[MAXN]; /* 3 3 1 2 3 4 5 6 7 8 9 */ int lower_bound(int p[], int l, int r, int target) {     while (l < r) {         int m = l + (r - l) / 2;         if (p[m] >= target) {             r = m;         } else {             l = m + 1;         }     }     return l; } int main () {     int n, s;     cin >> n >> s;     for (int i = 0; i < n; ++i) {         cin >> A[i];         if (i == 0) preSum[i] = A[i];         else preSum[i] = preSum[i - 1] + A[i];     }     // for (int i = 0; i < n; ++i) {     //     cout << preSum[i] << " ";     // }     int max_len = (A[0] <= s);     for (int i = 1; i < n; ++i) {         // Sum([i, j]) =  p[j] - p[i - 1] <= s         // p[i - 1] >= p[j] - s           int left = lower_bound(preSum, -1, i, preSum[i] - s);         max_len = max(max_len, i - left);     }     cout << max_len << endl;     return 0; }
点赞 评论

相关推荐

StephenZ_:我9月份找的第一段实习也是遇到这种骗子公司了,问他后端有多少人和我说7个正职,进去一看只有一个后端剩下的都是产品前端算法(没错甚至还有算法)。还是某制造业中大厂,我离职的时候还阴阳怪气我
点赞 评论 收藏
分享
10-29 15:51
嘉应学院 Java
后端转测开第一人:你把简历的学历改成北京交通大学 去海投1000份发现基本还是没面试
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务