B. Books(水题)

题意:

Valera要在n本书中读连续的书,并且有时间限制t。每本书对应了时间a[i],求Valera最多能读多少本书。

题解:

用双指针? 当时间充足的情况下,从第1本开始计数(读),当时间耗尽时,从第1本开始放弃(不读),接着读后面的书。

存储最大值。

ACcode:

int main()
{
    int n, t;
    int sum = 0,minn=100000;
    int book[100010];
    int ans = 0, num = 0;
    int maxx = -inf;
    cin >> n >> t;
    for (int i = 0; i < n; i++)
    {
        cin >> book[i];
        sum += book[i];
        minn = min(minn, book[i]);
    }
//特判两种情况,时间可以读完所有书,时间不够读一本书。
if (sum <= t)cout << n << endl; else if (t < minn)cout << 0 << endl;//其实好像不用特判emmmmm else { int j = 0; for (int i = 0; i < n; i++) { ans += book[i];//时间充足时,读书。 while (ans > t) { ans -= book[j]; j++; }//当时间不足时,去掉前面的书(不读) //cout << i << " " << j << endl; maxx = max(maxx, i - j+1 ); } cout << maxx << endl; } return 0; }

 

posted @ 2021-07-30 09:39  Uiney  阅读(72)  评论(0编辑  收藏  举报