sdut 1446 超级玛丽

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1446

题意:你妹的,我妹的,他妹的,中文题啊,坑妹啊,中文题读错了。。。。。漏掉了条件了,返回的是如果浪子最终跳跃次数多于男爵的最终跳跃次数,只想骂自己,漏掉了个条件搞的自己无可奈何,一直比较的是距离,题目要求比较的是跳跃次数

刚开始循环是n循环+跳出的区间循环,造成超时,又来看了别人代码,醒悟过来,区间没必要循环,只要比大小就可以了。。。。。。

View Code
 1 #include<stdio.h>
 2 
 3 long long f(long long n,long long d,long long m,long long l)
 4 {
 5     long long left=0;
 6     long long right=0;
 7     long long dis,step;
 8     for(long long i=0; i<n; i++)
 9     {
10         left=(i+1)*m;
11         right=i*m+l;
12         step=(right+d)/d;
13         if(step*d<left) break;
14     }
15     return step;
16 }
17 
18 int main()
19 {
20     int T;
21     long long n1,n2,m1,m2,l1,l2;
22     long long ans1,ans2,d1,d2;
23     scanf("%d",&T);
24     while(T--)
25     {
26         scanf("%lld%lld%lld%lld",&n1,&d1,&m1,&l1);
27         scanf("%lld%lld%lld%lld",&n2,&d2,&m2,&l2);
28         ans1=f(n1,d1,m1,l1);
29         ans2=f(n2,d2,m2,l2);
30         //printf("%lld %lld\n",ans1,ans2);
31         if(ans1==ans2) printf("Az is Winner at %lld\n",d2*ans2);
32         else
33         {
34             if(ans1>ans2) printf("Lz is Winner at %lld\n",d1*ans1);
35             else printf("Lz is Winner at %lld\n",d2*ans2);
36         }
37     }
38     return 0;
39 }

 

 

posted @ 2013-01-27 11:47  calmound  阅读(238)  评论(0编辑  收藏  举报