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<