liuli688
2024-01-08 14:28:30
其实本题难度(个人)不超过橙题。
由于题目要求方案长度不要求最短,只要长度不超过
PRL
(凑步数,因为不能连续两次塞钱),然后输出 PR
(不用回来了,如果 PLR
(不能越界),然后输出 P
。
#define MAIN signed main()
#define SPEEDUP ios::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#define USING using namespace std
#define END return 0
#define LL long long
#define ULL unsigned long long
#define LD long double
#define STR string
#define EL '\n'
#define BK break
#define CTN continue
#define INF INT_MAX
#define UINF INT_MIN
#define IN(n) cin >> n
#define OUT(n) cout << n
#define OUTL(n) cout << n << EL
#define FP(i,a,b) for(i = a;i < b;i++)
#define FM(i,a,b) for(i = a;i > b;i--)
#define FL(i,a,b) for(i = a;i <= b;i++)
#define FG(i,a,b) for(i = a;i >= b;i--)
//以上为缺省源
#include <bits/stdc++.h>
USING;
int n,a[300],i,j;
MAIN
{
SPEEDUP;
IN(n);
FP(i,0,n)
IN(a[i]);
FP(i,0,n-1)
{
if(a[i])//如果这个钱包需要放钱
{
FP(j,0,a[i]-1)//不断放钱
OUT("PRL");
OUT("PR");//放完后直接右移,不回来
}
else//直接右移跳过
OUT('R');
}
if(a[n-1])//同样判断最后一个钱包
{
FP(j,0,a[n-1]-1)//不断放钱
OUT("PLR");
OUT('P');//放最后一个钱
}
END;
}