http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1446
我只想说,读题太重要了,一定一定将题目中的每个要求都弄清楚啊!!!为了这题用了一晚上的时间在那调,结果只是题意没理解到位,输出的地方有问题,要崩溃了!!!!
1)最终要求输出的是长度没错,但是要比较的是步数,也就是说,输的那一方跳跃的长度不一定就小于赢得那一方,还有每步的长度,而我是保存了跳跃的总长度,最后的时候比较找较小的。无语。。。。。
2)如果两人的步数相等,也就是ZA胜,这种情况下LZ选择的是第一种场景,所以输出的长度应该是第二种场景的步数*长度,而我愚昧的认为既然步数相等,输出哪一个都一样,笨啊!就没多想想!
代码:

#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 **************************************/