题面链接
https://ac.nowcoder.com/acm/contest/23106/L
题面
四个字母分别表示的四个方向,我们只需要按照需求模拟这个字符串即可,然后在每一步过程中更新一下最远的距离即可,最后输出
代码#include using namespace std; //----------------�Զ��岿��---------------- #define ll long long #define mod 1000000007 #define endl "\n" #define PII pair<int,int> int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0}; ll ksm(ll a,ll b) { ll ans = 1; for(;b;b>>=1LL) { if(b & 1) ans = ans * a % mod; a = a * a % mod; } return ans; } ll lowbit(ll x){return -x & x;} const int N = 2e6+10; //----------------�Զ��岿��---------------- int n,m,q,a[N]; int x,y; int main() { // std::ios::sync_with_stdio(false); // std::cin.tie(nullptr); // std::cout.tie(nullptr); string s; int t; cin>>t; while(t--){ int len; cin>>len>>s; x = y = 0; double ans = 0; for(int i = 0;i < len; ++i) { if(s[i] == 'U'){ y++; } else if(s[i] == 'D'){ y--; } else if(s[i] == 'L'){ x--; } else if(s[i] == 'R'){ x++; } ans = max(ans,sqrt(x * x * 1.0 + y * y * 1.0)); } printf("%lf\n",ans); } return 0; }