Codeforces 1294B Collecting Packages
作者:互联网
题意:
一个机器人要经过n个地方,他只能往右(R)和上(U)走,最开始在(0,0)位置,问这n个点能否全部经过,如果不能输出NO,如果能输出YES,并输出路径字符串(只含RU)
思路:
先把n个点的坐标排序,然后判断有没有在当前位置不能到达的点,如果有输出NO,如果没有,输出YES,
代码:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <string.h>
#include <vector>
#include <math.h>
#include <map>
#include <queue>
#include <set>
using namespace std;
typedef long long ll;
const int mod=998244353;
const int MAXN=2e5+50;
const double pi=3.1415926536;
int t,n;
struct sa{
int x;
int y;
}p[1050];
int cmp(sa a,sa b){
if(a.x!=b.x)
return a.x<b.x;
else
return a.y<b.y;
}
int main()
{
//freopen("in.txt","r",stdin);
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&p[i].x,&p[i].y);
sort(p+1,p+n+1,cmp);
int flag=1;
for(int i=2;i<=n;i++){
if(p[i].x<p[i-1].x||p[i].y<p[i-1].y){
flag=0;
break;
}
}
if(flag==0){
printf("NO\n");
continue;
}
printf("YES\n");
int x=0,y=0;
for(int i=1;i<=n;i++){
int dx=p[i].x-x;
int dy=p[i].y-y;
while(dx--)printf("R");
while(dy--)printf("U");
x=p[i].x;
y=p[i].y;
}
printf("\n");
}
return 0;
}
标签:Collecting,输出,include,const,int,1294B,long,sa,Packages 来源: https://www.cnblogs.com/zzl_Alexander/p/12250590.html