1934. 贝茜放慢脚步

1934. 贝茜放慢脚步

奶牛贝茜正在参加冬季哞林匹克运动会的越野滑雪比赛。

她以每秒 1 米的速度出发。

但是,随着时间的推移,她变得越来越疲倦,她开始放慢脚步。

每次放慢脚步,贝茜的速度都会降低:减速一次后,她以每秒 1/2 米的速度移动,减速两次后,则以每秒 1/3 米的速度移动,依此类推。

你将被告知何时何地贝茜会减速。

当减速信息格式为:

T 17

意味着,贝茜在某个时间点减速,本例表示比赛开始第 17 秒贝茜减速。

当减速信息格式为:

D 10

意味着,贝茜在某个地点减速,本例表示在行进 10 米处减速。

给定 N 个减速信息,请计算贝茜滑完一千米需要多少秒。

将你的答案四舍五入到最接近的整数( 0.5 向上舍入为 1)。

输入格式

第一行包含整数 N。

接下来 N 行,每行描述一个减速信息,格式为 T x 或 D x。

无论哪种情况,x 都是一个整数,保证所有减速都在贝茜滑完一千米前发生。

可能同时发生多次减速,那么这会使得贝茜的速度一下子变慢很多。

所有减速信息不一定按顺序给出。

输出格式

输出贝茜滑完一千米所需的总时间。

数据范围

1≤N≤10000

输入样例:
2
T 30
D 10
输出样例:
2970
样例解释

贝茜以每秒 1 米的速度跑完前 10 米,耗时 10 秒。

然后她减速到每秒 1/2 米,接下来的 10 米要花 20 秒。

然后她在第 30 秒时,再次减速到每秒 1/3 米。

滑完剩下的 980 米需要 980×3=2940 秒。

因此,总时间是 10+20+2940=2970 秒。

代码:
// 二路归并
#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10;

int n;
vector<int> a, b;

int main()
{
    cin >> n;

    while (n--)
    {
        string op;
        int temp;
        cin >> op >> temp;
        if (op == "T")
            a.push_back(temp);
        else
            b.push_back(temp);
    }
    b.push_back(1000);

    sort(a.begin(), a.end()); //时间
    sort(b.begin(), b.end()); //位置

    double s = 0, t = 0, v = 1;
    int i = 0, j = 0;
    while (i < a.size() || j < b.size())
    { //判断位置先到达 还是时间先到达
        if (j == b.size() || i < a.size() && a[i] - t < (b[j] - s) * v)
        {
            s += (a[i] - t) / v;
            t = a[i];
            v++;
            i++;
        }
        else
        {
            t += (b[j] - s) * v;
            s = b[j];
            v++;
            j++;
        }
    }
    printf("%.0lf\n", t);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追寻远方的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值