UVALive

来源:互联网 发布:淘宝客服岗位说明 编辑:程序博客网 时间:2024/06/11 18:31

尺取法
O(n)复杂度

#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<set>#include<stack>#include<algorithm>using namespace std;typedef long long ll;typedef pair<ll, ll> P;const int maxn = 100000 + 7, INF = 0x3f3f3f3f, mod = 1e9+7;int n, m, l, r;int a[maxn];void solve() {    l = r = -1;    int sum = 0, ans = INF;    //cout << ans << " === " << endl;    while(r < n) {        while(r < n && sum < m) {            r++;            sum += a[r];        }        if(r >= n) break;            //cout << l << "  ==  " << r << endl;        while(l < r && sum >= m) {            ans = min(ans, min(r, n) - l);            l++;            sum -= a[l];        }    }    if(ans == INF) ans = 0;    cout << ans << endl;}int main() {    //freopen("in.txt", "r", stdin);    //freopen("out.txt", "w", stdout);    while(scanf("%d%d", &n, &m) != EOF) {        for(int i = 0; i < n; ++i)            scanf("%d", &a[i]);        solve();    }    return 0;}
原创粉丝点击