zoukankan      html  css  js  c++  java
  • CCC2020 Surmising a Sprinter's Speed

    转载请征求许可,禁止爬虫转载

    开始刷CCC(Canadian Computing Competition)的题了,纪念一下。

    A了道水题。


    这些题目的版权相关还不是很清楚,就不贴原题了。

    大意:给出 (2le N le 100,000) 组数据,每组包括 (0 le T le 1,000,000,000)(−1,000,000,000 le X le 1,000,000,000) ,表示 (T) 秒时物体位于 (X) 处。求在整个运动过程中物体的最大速度。没有奇奇怪怪的情况。

    样例:

    3
    0 100
    20 50
    10 120
    

    样例输出:

    7.0
    

    分析样例可知:

    样例分析

    显然需要按照时间顺序,依次分析每段移动的位移与时间差,求最大速度。

    使用结构体储存每次的记录:

    struct obs{
    	int ti;
    	int pos;
    }; 
    

    考虑使用优先队列存储所有记录,重载运算符来实现时间小的在前:

    priority_queue <obs> q;
    bool operator < (const obs &a, const obs &b){
    	return a.ti > b.ti;
    }
    

    输入完成后遍历一遍,打擂台取最大速度即可。

    double max_spd = -1;
    obs last = q.top(), curr;
    q.pop();
    for(int i=0; i<N-1; i++){
    	curr = q.top();
    	double curr_spd = abs((double)(curr.pos - last.pos) / (double)(curr.ti - last.ti)); 
    	//注意此处速度要取绝对值(准确地说,求速率)
    	max_spd = max(max_spd, curr_spd);
    	q.pop();
    	last = curr;
    }
    

    作为 CCC Senior 的 T1 还是挺友好的。顺便夸一下滑铁卢的评测,虽然界面老点,硬件性能以及宽容度很好。

  • 相关阅读:
    装饰器
    深浅拷贝
    dm-开发知识片段积累
    java开发-SDE配置
    一、数据库介绍
    oracle学习 知识点目录
    五、Java SE核心II
    三、面向对象
    四、Java SE核心I
    二、Java语言基础
  • 原文地址:https://www.cnblogs.com/miserweyte/p/14304310.html
Copyright © 2011-2022 走看看