题目描述
小爱最近迷上了滑雪,某滑雪场有 𝑛n 条不同难度的雪道,只有学习并滑了第 𝑖i 条雪道,才能去参加第 𝑖+1i+1 条雪道的学习与训练。
已知,第一次滑第 𝑖i 条雪道时,需要先进行 𝑎𝑖ai 分钟的学习,再花 𝑏𝑖bi分钟滑该雪道一次,才算学习完成。若之后再滑第 𝑖i 条雪道,则仅需 𝑏𝑖bi 分钟即可滑一次。
小爱共有 𝑇T 分钟时间,请问如何安排才能使他能滑的圈数最多?
输入格式
输入第一行,两个正整数 𝑛,𝑇n,T
接下来 𝑛n 行:每行两个正整数𝑎𝑖,𝑏𝑖ai,bi表示第𝑖i条雪道需要的学习时间和滑雪时间。
输出格式
输出一个正整数,表示小爱最多可以滑的圈数。
数据范围
- 对于30%30%的数据,1≤𝑛≤101≤n≤10
- 对于60%60%的数据,1≤𝑛≤1031≤n≤103
- 对于100%100%的数据,1≤𝑛≤1051≤n≤105,1≤𝑎𝑖,𝑏𝑖,𝑇≤10181≤ai,bi,T≤1018
样例数据
输入:
3 100
10 20
5 5
20 10
输出:
14
说明:
先花30分钟学习第一滑道,此时共计滑了一圈
在花10分钟学习第二滑道,此时共计滑了两圈
剩余60分钟,滑第二滑道,共计滑了14圈
详见代码:
#include<bits/stdc++.h>
using namespace std;
int n;
long long t;
long long xue[100005];
long long hua[100005];
long long ans=0;
int main()
{
cin>>n>>t;
for (int i=1;i<=n;i++)
{
cin>>xue[i]>>hua[i];
}
long long sumt=0;
long long mit;
for (int i=1;i<=n;i++)
{
if (i==1)
{
mit=hua[i];
}
else if (hua[i]<mit)
{
mit=hua[i];
}
sumt+=xue[i]+hua[i];
long long quan;
quan=i+(t-sumt)/mit;
if (quan>ans) ans=quan;
}
cout<<ans;
return 0;
}