洛谷 P2338 [USACO14JAN]失败的滑雪Bessie Slows Down
2017-03-24 15:58
351 查看
题目背景
奶牛题
题目描述
Bessie the cow is competing in a cross-country skiing event at the winter Moolympic games. She starts out at a speed of 1 meter per second. However, as she becomes more tired over time, she begins to slow down. Each time Bessie slows down, her speed decreases:she moves at 1/2 meter per second after slowing down once, then 1/3 meter per second after slowing down twice, and so on.
You are told when and where Bessie slows down, in terms of a series of events. An event like this:
T 17 means that Bessie slows down at a specific time -- here, 17 seconds into the race. An event like this:
D 10 means that Bessie slows down at a specific distance from the start -- in this case, 10 meters.
Given a list of N such events (1 <= N <= 10,000), please compute the amount of time, in seconds, for Bessie to travel an entire kilometer. Round your answer to the nearest integer second (0.5 rounds up to 1).
贝西正在参加一项滑雪比赛。她从起点出发的时候,速度恒定为每秒 1 米。然而,随着比赛进程的增加,她会犯很多错误,每次失误都会使她的速度下降。当她第一次失误后,速度会下降到每秒1/2 米,第二次失误后,速度会下降到每秒 1/3 米,第 k 次失误后,速度会下降到每秒 1/(k + 1) 米。
约翰记录了贝西的所有失误,一共有 N 个。有两种失误,一种发生在比赛开始后的某个时间点,另一种发生在赛道的某个位置上。有时,贝西可能在某个时间点到达某个位置,而恰好在这个时间点和位置上都有一次失误的记录,这两个记录要算作不同的失误,会对贝西的速度造成两次影响。比赛的终点距离起点有 1000 米,请问贝西需要多少时间才能滑过终点?
输入输出格式
输入格式:第一行:单个整数 N ,1 ≤ N ≤ 10000
第二行到第 N + 1 行:每行开头有个大写字母,代表贝西的一个失误类型:
– 如果是 T,接下来会有一个整数 S,表示在比赛开始后的第 S 秒钟整发生了一次失误,
1 ≤ S ≤ 10^7
– 如果是 D,接下来会有一个整数 X,表示在距离起点 X 米处发生了一次失误,1 ≤ X ≤
1000
输出格式:
单个整数:表示贝西需要多少秒才能滑到终点,如果精确的时间不是整数,则用四舍五入的方
法向最接近的整数取整
输入输出样例
输入样例#1:2 T 30 D 10
输出样例#1:
2970
说明
前 10 秒,贝西的速度是每秒 1 米,她滑了 10 米。然后她遭遇了第一次失误,在接下来的 20 秒内,她又滑了 10 米。之后她遭遇了第二次失误,还剩下 980 米,所以她共计花去
10 + 20 + 2940 = 2970 秒才完成比赛
这么水的模拟,居然难度等级划分到省选-、。。。。。
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; #define maxn 20005 double t[maxn],d[maxn],nowt; int curt,curd,n,speed=1,cpt=1; //speed 用于记录当前速度 int main(){ scanf("%d",&n); char ch;double x; for(int i=1;i<=n;i++){ cin>>ch;scanf("%lf",&x); if(ch=='T') t[++curt]=x; else d[++curd]=x; } d[++curd]=0;d[++curd]=1000; sort(d+1,d+curd+1); sort(t+1,t+curt+1); for(int i=1;i<curd;i++){//d的最后一个是1000 double nowdis=d[i];//当前距离 while(nowdis<d[i+1]&&cpt<=curt&&nowt+(d[i+1]-nowdis)*speed>t[cpt]) {// while 的判断条件表示 下一次速度的改变是因为时间 nowdis+=(t[cpt]-nowt)/speed;speed++; nowt=t[cpt++]; } nowt+=(d[i+1]-nowdis)*speed; speed++; } if(nowt-(int)nowt>0.5) nowt=(int)nowt+1;//四舍五入 else nowt=(int)nowt; printf("%.0lf\n",nowt); return 0; }
相关文章推荐
- bzoj3431 [Usaco2014 Jan]Bessie Slows Down
- 3431: [Usaco2014 Jan]Bessie Slows Down (模拟)
- bzoj3431【Usaco2014 Jan】Bessie Slows Down
- [USACO 2014 Jan Silver]Bessie Slows Down
- luogu P3101 [USACO14JAN]滑雪等级Ski Course Rating
- 洛谷P2982 [USACO10FEB]慢下来Slowing down [2017年四月计划 树状数组01]
- 洛谷P1344 [USACO4.4]追查坏牛奶Pollutant Control(网络流, 最大流最小割)
- 【枚举】洛谷 P1206 [USACO1.2]回文平方数 Palindromic Squares
- bzoj3407[Usaco2009 Oct]Bessie's Weight Problem 贝茜的体重问题
- 洛谷P1214 [USACO1.4]等差数列 Arithmetic Progressions
- 洛谷 P1434 滑雪
- 洛谷2915 usaco08nov 奶牛混合起来 Mixed Up Cows
- (洛谷P1894)USACO 4.2 The Perfect Stall 完美的牛栏
- 【洛谷P1434】滑雪
- 贪心——Luogu2255 [USACO14JAN]记录奥林比克
- [洛谷3047]USACO12FEB附近的牛
- BZOJ1744: [Usaco2005 oct]Skiing 奶牛滑雪
- bzoj1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
- 洛谷P14341 滑雪
- 洛谷P3128 [USACO15DEC]最大流Max Flow