1 条题解

  • 0
    @ 2026-2-7 15:59:37
    #include<bits/stdc++.h>
    using namespace std;
    const int N = 1e5 + 5;
    int a[N]; //每个景点需要消耗的时间
    int n,t; //有多少个景点,假期总时间
    int ans;//保存最终需要的 结果 最多景点个数
    int sum;//区间之内需要消耗多少天
    int l,r;
    int main(){	
    	//输入有多少个景点,输入一个自己有多少假期
        cin>>n>>t;
    	for(int i = 1 ; i <=n ; i ++)
    	{
    		cin>>a[i];//每一个景点需要消耗的时间
    	}
    
    	//左边指针+1
    	for(l = 1, r = 1 ; l<=n && r <= n;  l ++  )
    	{
    		//需要游玩的时间 + 该景点需要消耗的时间<= 总假期时间
    		while(r <=n && sum + a[r] <= t)
    		{
    			sum = sum + a[r];  //总时间加上去到r景点的时间
    			r++; //指针往右移动
    		}
    	    ans = max(ans, r - l); //打擂台求出 最长的区间
    		sum -= a[l];//减去左边界的经典
    	}
    	cout<<ans;
    	return 0;
    }
    
    • 1

    信息

    ID
    10036
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    1
    已通过
    1
    上传者