B. Books(水題)
阿新 • • 發佈:2021-07-30
題意:
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; }