代码拉取完成,页面将自动刷新
#include<bits/stdc++.h>
using namespace std;
int a[10010], b[10010], ap, bp;
int main()
{
int n; cin >> n;
for(int i = 0; i < n; i++)
{
char c; int x;
cin >> c >> x;
if(c == 'T') a[ap++] = x;//a 存减速时间
else b[bp++] = x;//b 存减速位置
}
sort(a, a + ap);
sort(b, b + bp);
int ai = 0, bi = 0, v = 1;//因为分母是整数,分子一直是1,所以这里的v速度代表分母
double len = 0, t = 0;
while(ai < ap && bi < bp)
{
double t1 = a[ai] - t; //到达下一个减速时间 所需的时间
double t2 = (b[bi] - len) * v; //到达下一个减速位置 所需的时间
if(t1 == t2)
{//如果时间一样,一起减速
t = a[ai];
len = b[bi];
v += 2, ai++, bi++;
}
else if(t1 < t2)
{//先到达减速时间
len += (a[ai] - t) / v;
t = a[ai];
v++, ai++;
}
else
{//先到达减速位置
t += (b[bi] - len) * v;
len = b[bi];
v++, bi++;
}
}
while(ai < ap)
{
len += (a[ai] - t) / v;
t = a[ai];
v++, ai++;
}
while(bi < bp)
{
t += (b[bi] - len) * v;
len = b[bi];
v++, bi++;
}
cout << (int)(t + (1000 - len) * v + 0.500001);//加上最后一段
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。