sdut 超级玛丽

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

我只想说,读题太重要了,一定一定将题目中的每个要求都弄清楚啊!!!为了这题用了一晚上的时间在那调,结果只是题意没理解到位,输出的地方有问题,要崩溃了!!!!

1)最终要求输出的是长度没错,但是要比较的是步数,也就是说,输的那一方跳跃的长度不一定就小于赢得那一方,还有每步的长度,而我是保存了跳跃的总长度,最后的时候比较找较小的。无语。。。。。

2)如果两人的步数相等,也就是ZA胜,这种情况下LZ选择的是第一种场景,所以输出的长度应该是第二种场景的步数*长度,而我愚昧的认为既然步数相等,输出哪一个都一样,笨啊!就没多想想!

代码:

View Code
#include <iostream>
#include <algorithm>
using namespace std ;

typedef long long ll ;

int main()
{
    ll d[2][4] , s[2] ;
    ll l , r , k ;
    int cas , i , j ;

    cin>>cas ;
    while ( cas-- )
    {
        for( i = 0 ; i < 2 ; i++ )
        {
            for ( j = 0 ; j < 4 ; j++ )
            cin>>d[i][j] ;
        }

        for ( i = 0 ; i < 2 ; i++ )
        {
            k = 0 ;
            for ( j = 0 ; j < d[i][0] ; j++ )
            {
                l = j * d[i][2] + d[i][3] ;
                r = ( j + 1 ) * d[i][2] ;
                k = ( l + d[i][1] ) / d[i][1] ;
                if ( k * d[i][1] < r )
                break ;
            }
            s[i] = k ;
        }

        if ( s[0] == s[1] )
        {
            cout<<"Az is Winner at "<<s[1] * d[1][1] <<endl ;
        }
        else
        {
            if ( s[0] > s[1] )
            cout<<"Lz is Winner at "<<s[0] * d[0][1]<<endl ;
            else
            cout<<"Lz is Winner at "<<s[1] * d[1][1]<<endl ;
        }
    }
    return 0 ;
}
 



/**************************************
    Problem id    : SDUT OJ 1446 
    User name    : liangmengmeng 
    Result        : Accepted 
    Take Memory    : 1564K 
    Take Time    : 70MS 
    Submit Time    : 2013-01-26 21:02:10  
**************************************/
原文地址:https://www.cnblogs.com/misty1/p/2878484.html