失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > T31901 狂热粉丝

T31901 狂热粉丝

时间:2023-11-14 19:41:49

相关推荐

T31901 狂热粉丝

点击打开链接

总所周知,qwf是计算机学院最帅的人,他的粉丝很多,

而qwf对他的粉丝并不热情,甚至有时躲着粉丝们,

但他很腼腆,不会拒绝狂热的粉丝们。

现在qwf遇到了危机,n名粉丝在他身后追赶他,而他却和chj约好回寝室玩游戏,

只要qwf被其中一个狂热的粉丝追上,粉丝就会索要签名,并瞬间召唤来更多狂热的qwf爱好者,

也就是说,只要被粉丝追上,qwf就会被粉丝所掩埋,不能回寝室找chj了。

现在qwf在S点 寝室在E点 以速度V直线飞奔至寝室

粉丝i(1-n)在Si点 以速度Vi追赶qwf

qwfz在抵达寝室的瞬间被追上是没关系的,因为chj会把粉丝抵挡在门外

有些粉丝可能太激动,站在原地速度为0

如果qwf可以顺利回到寝室就输出“winner winner chicken dinner!!”

否则输出“haojie help me!!”

输入输出格式

输入格式:

第一行:N 表示接下来有N组数据

每组数据

第一行:n S E V接下来n行:Si Vi 表示第i个粉丝的初始位置和速度N<150;n<=1000;(-2^30)<Si<S<E<(2^30)(-2^30)<V,Vi<(2^30)

输出格式:

对于每组数据,如果qwf可以顺利回到寝室就输出“winner winner chicken dinner!!”

否则输出“haojie help me!!”

输入输出样例

输入样例#1: 复制

22 0 8 2-8 4-16 52 0 8 2-8 5-16 5

输出样例#1: 复制

winner winner chicken dinner!!haojie help me!!

本题实际上就是一个很普通的追及问题,只需要算出qwf到寝室的时间和粉丝到寝室的时间,如果qwf的时间t小于等于所有粉丝到达他寝室的时间,他就不会被淹没了。(解题思路)

代码实现如下:

#include<iostream>using namespace std;int main(){int N;cin>>N;while (N--){long long n,S,E,coun=0,V;double t1,len;cin>>n>>S>>E>>V;len=E-S;t1=len*1.000000/V;for(int i=0;i<n;i++){long long int s,v;double t,len1;cin>>s>>v;len1=E-s;if(v==0)continue;t=len1*1.000000/v;if(t<t1) coun=1;}if(coun==0)cout<<"winner winner chicken dinner!!"<<endl;else cout<<"haojie help me!!"<<endl;}}

但是在此处发现一个问题,在比赛的时候,代码的长度应当尽量精简。像上面代码中,qwf和粉丝与寝室的距离和速度完全可以用len,v两个变量所代替,而我所写的用了4个,增加了代码的长度,但相比于考试时给出的ac代码,却少了程序的运行时间,这是我很奇怪的,现将ac代码贴于下,希望有大神能够给答疑解惑。

//ac代码#include <iostream>using namespace std;int main() {int N;long long n,s,e,v;cin>>N;while(N--) {cin>>n>>s>>e>>v;double joo=e-s,t;joo/=v;int f=1;for(int i=0;i<n;i++){cin>>s>>v;t=e-s;if(v==0)continue;t/=v;if(t<joo){f=0;} }if(f==1)cout<<"winner winner chicken dinner!!"<<endl;else cout<<"haojie help me!!"<<endl;}}

(ac代码的用时和内存)

76ms/2121KB(自己的代码的用时和内存)

如果觉得《T31901 狂热粉丝》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。