FZU 1021 飞船赛
来源:互联网 发布:淘宝标题侵权工商管吗 编辑:程序博客网 时间:2024/04/27 15:07
点击打开链接
Problem 1021 飞船赛
Accept: 1523 Submit: 5741
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
有N个飞船进行比赛,它们的跑道为直线并互相平行。每个飞船的起跑位置均不相同。第i个飞船从起跑线右边Xi处开始向右行驶(Xi各不相同)。比赛开始后,它能在零时间内加速到最大速度Vi并永远保持此速度。比赛没有终点,即会永远进行下去。
你的任务是算出比赛过程中一共有多少次"超车"。
Input
输入数据由多组数据组成。每组数据格式如下:
第一行为一个整数N(1<=N<=250000)。
接下来的N行,每行两个整数Xi (0≤Xi≤10^6)和Vi(0<Vi<100),描述了一辆飞船的起跑位置和最大速度。
给出的飞船信息按照起跑位置Xi的升序排列,即X1<X2<X3<…<Xn。
最后一组数据N=0,标志输入结束,不需要处理。
第一行为一个整数N(1<=N<=250000)。
接下来的N行,每行两个整数Xi (0≤Xi≤10^6)和Vi(0<Vi<100),描述了一辆飞船的起跑位置和最大速度。
给出的飞船信息按照起跑位置Xi的升序排列,即X1<X2<X3<…<Xn。
最后一组数据N=0,标志输入结束,不需要处理。
Output
对于每组数据,输出仅一行包含一个整数,即"超车"的次数对1000000的模。
Sample Input
40 22 13 86 30
Sample Output
2
一开始直接枚举,tle,因为给的n太大250000,时间复杂度是O(n^2),,因为速度的范围在0到100之间,所以我们可以从速度下手,这样时间复杂度就降低了。
#include<stdio.h>#include<string.h>int s[107];int main(){ int n; while(scanf("%d",&n),n) { int a,b,count=0; memset(s,0,sizeof(s)); for(int i=0;i<n;i++) { scanf("%d%d",&a,&b); s[b]++; for(int j=b+1;j<101;j++) { count+=s[j]; count%=1000000; } } printf("%d\n",count); } return 0;}
- FZU 1021 飞船赛
- FZU 1021 飞船赛
- FZU 1021 飞船赛
- FOJ--1021--飞船赛
- FOJ 1021 飞船赛
- FOJ - 1021 - 飞船赛
- 飞船赛
- 飞船赛
- B_飞船赛
- FZU 1021
- 2013-2-22 ACM-第三次月赛 1005 BT飞船
- FOJ 飞船赛(抓住主要因素,谨防超时)
- 戴夫号飞船
- 飞船汇合
- fzu月赛--C(fzu 2177)
- FZU April 月赛
- FZU 10月月赛
- fzu月赛(2015.11)
- HDU 1873 看病要排队
- c语言产生一组随机数
- Real-Time Rendering (5) - 非真实性渲染(Non-Photorealistic Rendering)
- 前阵子也见到新西兰的教授用手机远程控制电脑 那是用传感器 这个也很牛x
- 成绩函数版
- FZU 1021 飞船赛
- 如何在excel中限定表格内容?
- Apache服务器配置文件httpd.conf 常用操作中文版介绍
- Ubuntu 安装HBase
- c语言中如何将字符串转换成float和double类型
- iOS文本字段属性和视图属性
- 10gR2 CRS case study: CRS would not start after reboot - stuck at /etc/init.d/init.cssd startcheck
- JavaScript this用法整理
- VMware workstation8中安装CentOS Linux无法上网的解决方法