标签:pac space bsp 题解 span 赋权 out bfs false
这道题一开始打算给每个点赋权值,再用记录路径的bfs去找可能的结果,后来看了题解发现这样子做麻烦了。观察就可以发现,给出的点要能形成一条通路,必须满足任意两个点(xi,yi),(xj,yj),其中i!=j,并且xi<yj,yi<yj,不然就无法走到该点,故可以推断出所有点必然满足一定的升序排列,所以只需要按照排好序的点来找就行。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int t; 5 cin>>t; 6 for(int i = 0;i<t;i++){ 7 int n; 8 cin>>n; 9 vector<pair<int,int>>a(n); 10 for(int k = 0;k<n;k++){ 11 cin>>a[k].first>>a[k].second; 12 } 13 sort(a.begin(),a.end()); 14 pair<int,int> cur = make_pair(0,0); 15 string ans; 16 bool ok = true; 17 for(int j = 0;j<n;j++){ 18 int r = a[j].first - cur.first; 19 int u = a[j].second - cur.second; 20 if(r<0||u<0){ 21 cout<<"NO\n"; 22 ok = false; 23 break; 24 } 25 ans+=string(r,‘R‘); 26 ans+=string(u,‘U‘); 27 cur = a[j]; 28 } 29 if(ok){ 30 cout<<"YES\n"; 31 cout<<ans<<endl; 32 } 33 } 34 }
标签:pac space bsp 题解 span 赋权 out bfs false
原文地址:https://www.cnblogs.com/mlcn-2000/p/12247336.html