1. 程式人生 > 其它 >B. Books(水題)

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; }