鹊桥相会

来源:互联网 发布:qq for mac版什么意思 编辑:程序博客网 时间:2024/04/30 11:20

题目描述

一年一度的七夕又要到了,可歌可泣的牛郎织女又可以在鹊桥相会了。不知道大家有没有雅兴陪redraiment坐在葡萄藤下倾听他们的对话。
我们知道,牛郎要与织女相见,必须要有喜鹊搭桥。所以,牛郎必须在天河岸上等待,直到有喜鹊经过,于是牛郎可以搭乘这只喜鹊往河对岸走。当然,牛郎急着去见织女,所有在途中,如果有速度更快的喜鹊赶上了他,他就会换乘那只速度更快的喜鹊。
我们可以假定喜鹊的速度是恒定不变的,并且喜鹊一直是沿直线飞行的(不转弯,更不回头),牛郎坐上喜鹊所花的时间忽略不计。
现给出天河的宽度、每只喜鹊的初始位置(我们设牛郎所在位置为0,天河方向为正方向)以及它们的速度(有可能是负数,代表喜鹊往反方向飞行),这些数据都是整数。请你来帮忙计算一下牛郎到达对岸与织女相会最少需要多少时间,让他们早些有情人终成眷属。^_^
当然,如果没有喜鹊来搭载牛郎,我们可怜的牛郎就到不了对岸与织女相会了,那我们只好很遗憾的跟牛郎说:“Can't Solve”,我们祈祷不要发生这样的事情。

输入

第一行有两个数据w、n,分别代表天河的宽度(单位:km)和喜鹊的只数(1≤w≤1000, 1≤n≤10000)。
接下来从第二行到第n+1行每行都有两个数据t、v,分别代表1只喜鹊的初始位置(单位:m)和它的飞行速度(单位:m/s)(-1000≤t≤1000, -100≤v≤100)。  所有的数据范围都不会超过32位整数的表示范围(用int型数据不会溢出)。
输入以0 0结束。

输出

如果牛郎能到达对岸输出他到达对岸所花的总时间(结果精确到秒即可,小数部分舍去);否则输出“Can't Solve”。

示例输入

1 10 10 0

示例输出

1000

 

  1. #include <iostream>  
  2. #include <algorithm>  
  3. using namespace std;  
  4. int main()  
  5. {  
  6.     int n,m,j,k,i,w,coun=0,minn,t,v;  
  7.     cin>>w>>n;  
  8.     for(i=1;i<=n;i++)  
  9.     {  
  10.         cin>>t>>v;  
  11.         if(t<=0&&v>0)  
  12.         {  
  13.             coun++;  
  14.             if(coun==1) minn=(w-t)*1000/v;  
  15.             else  
  16.             {  
  17.                 if((w-t)*1000/v<minn)  
  18.                     minn=(w-t)*1000/v;  
  19.             }  
  20.         }  
  21.     }  
  22.     if(coun!=0) cout<<minn<<endl;  
  23.     else cout<<"Can't Solve"<<endl;  
  24.   
  25. }   

 

这题一开始总想不明白。。感觉情况太多,而且复杂,后来发现只要找位置<0的最大速度就OK。
0 0