0
点赞
收藏
分享

微信扫一扫

AcWing 1934. 贝茜放慢脚步

清冷的蓝天天 2022-01-20 阅读 100

在这里插入图片描述

思路:将D化成T,然后排序进行二路归并,s为已走的路程,v为速度的倒数,t为已用的时间

代码:

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>

using namespace std;

const int N = 10010;

vector<int> a,b;

int main()
{
    int n;
    scanf("%d", &n);
    char op[2];
    for(int i=0;i<n;i++){
        int x;
        scanf("%s%d",op,&x);
        if(*op=='T') a.push_back(x);
        else b.push_back(x);
    }
    b.push_back(1000);
    sort(a.begin(),a.end());
    sort(b.begin(),b.end());
    int i=0,j=0;
    double v=1,t=0,s=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 条评论