上海市计算机学会竞赛平台2023年5月月赛丙组滑雪训练

题目描述

小爱最近迷上了滑雪,某滑雪场有 𝑛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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值