NC24631. PJ的崛起
描述
由于PJ之前在一场决斗中败在对手的枪下,失去了自己的爱人。
PJ觉得自己不能就这么认输,于是和dd再次约定在一个n*m的街区决斗,只能横着或竖着移动和射击。
自信的dd让PJ先行动,每次行动开枪或移动1到d单位的距离,如果在移动的途中和另一个人同行或同列也会输掉这场决斗。
输入描述
第1行一个数t,表示t个样例
每个样例中,第一行三个数字n,m,d
第2行四个数字,x1,y1,x2,y2,表示dd和pj的坐标
1<=t<=10,1<=n<=500,1<=m<=500,1<=d<=100。
输出描述
如果pj能赢输出"win",否则输出"lose"
示例1
输入:
1 3 3 2 2 2 3 3
输出:
lose
说明:
第一步pj只能移动到(2,3),(1,3),(3,2),(3,1),移动到(3,2)和(2,3)时,下一步会被dd射击输掉决斗,移动到(1,3)和(3,1)时在途中和dd同行或同列从而输掉决斗。示例2
输入:
1 3 3 1 2 2 2 3
输出:
win
说明:
直接射击C++14(g++5.4) 解法, 执行用时: 5ms, 内存消耗: 376K, 提交时间: 2019-10-08 21:26:51
#include<iostream> #include<algorithm> using namespace std; int main() { int t; cin>>t; while(t--){ int n,m,d; cin>>n>>m>>d; int x1,x2,y1,y2,x,y; cin>>x1>>y1>>x2>>y2; x=abs(x1-x2); y=abs(y1-y2); if(abs(x-y)%(d+1)) cout<<"win"<<endl; else cout<<"lose"<<endl; } return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 488K, 提交时间: 2019-04-20 19:43:10
#include<bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--) { int n,m,q; int a,b,c,d; cin>>n>>m>>q; cin>>a>>b>>c>>d; if(abs(c-a)%(q+1)==abs(b-d)%(q+1)) printf("lose\n"); else printf("win\n"); } return 0; }