ZOJ 4115
908 ワード
C:問題大意:T個のテストケース、各ケースのn、k中のnは1文字の操作(D U L Rの4種類の操作を含む)を表して、それからk回繰り返します.k回聞いた後、原点からの最も遠い距離はいくらですか. d = |x1-x2| + |y1-y2| . コード:
#include
using namespace std;
typedef long long ll;
const int N = 1e5+10;
char s[N];
int main(){
int t;
cin>>t;
while(t--){
ll x = 0,y = 0,n,k,ans = 0;
cin>>n>>k;
cin>>s;
for(int i = 0; i < n; i++){
if(s[i] == 'R') x++;
else if(s[i] == 'L') x--;
else if(s[i] == 'U') y++;
else if(s[i] == 'D')y--;
ans = max(ans,abs(x)+abs(y));//
}
x = (k-1)*x;//k-1
y = (k-1)*y;//k-1
for(int i = 0; i < n; i++){//
if(s[i] == 'R') x++;
else if(s[i] == 'L') x--;
else if(s[i] == 'U') y++;
else if(s[i] == 'D')y--;
ans = max(ans,abs(x)+abs(y));
}
cout<