当前位置:网站首页>Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
2022-07-07 05:33:00 【Don't eat toast】
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
using namespace std;
#define X first
#define Y second
#define eps 1e-2
#define gcd __gcd
#define pb push_back
#define PI acos(-1.0)
#define lowbit(x) (x)&(-x)
#define bug printf("!!!!!\n");
#define mem(x,y) memset(x,y,sizeof(x))
typedef long long LL;
typedef long double LD;
typedef pair<int,int> pii;
typedef unsigned long long uLL;
const int N = 1e5+2;
const int INF = 1<<30;
const int mod = 1e9+7;
int n,m;
char ch[105][105],dr2[4]={
'D','U','R','L'};
int pre[105][105];
int dr[4][2]={
{
1,0},{
-1,0},{
0,1},{
0,-1}},vis[105][105];
pair<int,int> pre2[105][105];
int getd(int x,int y,int xx,int yy){
if(x-1==xx) return 1;
if(x+1==xx) return 0;
if(y-1==yy) return 3;
return 2;
}
bool check(int x,int y){
if(x>0&&x<=n&&y>0&&y<=m) return 1;
else return 0;
}
int edx,edy;
void sol1(){
for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(ch[i][j]=='F') edx=i,edy=j;
int sx=1,sy=1;
queue< pair<int,int> > q;
q.push({
sx,sy});
while(q.size()){
auto tp=q.front();q.pop();
vis[tp.first][tp.second]=1;
// cout<<tp.first<<" "<<tp.second<<endl;
for(int i=0;i<4;i++){
int x=tp.first+dr[i][0],y=tp.second+dr[i][1];
if(vis[x][y]==1||ch[x][y]=='*'||check(x,y)==0) continue;
q.push({
x,y});
vis[x][y]=1;
pre2[x][y]=tp;
}
}
// return ;
sx=edx,sy=edy;
// cout<<sx<<" "<<sy<<endl;
// cout<<pre2[sx][sy].first<<" "<<pre2[sx][sy].second<<endl;
while(sx!=1||sy!=1){
int px=sx,py=sy;
sx=pre2[px][py].first;
sy=pre2[px][py].second;
pre[sx][sy]=getd(sx,sy,px,py);
// cout<<sx<<" "<<sy<<endl;
// cout<<pre[sx][sy]<<" "<<dr2[pre[sx][sy]]<<endl;
}
}
map<int,int> mp;
void solve(){
for(int i=0;i<=3;i++) mp[i]=i;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%s",ch[i]+1);
sol1();
int sx=1,sy=1;
while(sx!=edx||sy!=edy){
int mpop=mp[pre[sx][sy]];
// cout<<mpop<<endl;
cout<<dr2[mpop]<<endl;
int tsx=sx+dr[mpop][0],tsy=sy+dr[mpop][1];
// cout<<tsx<<" "<<tsy<<endl;
int tx,ty;cin>>tx>>ty;
if(tsx!=tx||tsy!=ty){
if(pre[sx][sy]==1||pre[sx][sy]==0) mp[0]=1,mp[1]=0;
else mp[2]=3,mp[3]=2;
mpop=mp[pre[sx][sy]];
cout<<dr2[mpop]<<endl;
cin>>tx>>ty;
}
sx=tx;sy=ty;
}
return;
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
// ios::sync_with_stdio(false);
int t = 1;
//scanf("%d",&t);
while(t--){
// printf("Case %d: ",cas++);
solve();
}
return 0;
}
边栏推荐
猜你喜欢
[论文阅读] A Multi-branch Hybrid Transformer Network for Corneal Endothelial Cell Segmentation
利用OPNET进行网络仿真时网络层协议(以QoS为例)的使用、配置及注意点
JVM(二十) -- 性能监控与调优(一) -- 概述
利用OPNET进行网络指定源组播(SSM)仿真的设计、配置及注意点
Leetcode 1189 maximum number of "balloons" [map] the leetcode road of heroding
Jhok-zbl1 leakage relay
MySQL数据库学习(8) -- mysql 内容补充
论文阅读【MM21 Pre-training for Video Understanding Challenge:Video Captioning with Pretraining Techniqu】
论文阅读【Open-book Video Captioning with Retrieve-Copy-Generate Network】
基于NCF的多模块协同实例
随机推荐
1. AVL tree: left-right rotation -bite
Getting started with DES encryption
利用OPNET进行网络指定源组播(SSM)仿真的设计、配置及注意点
How Alibaba cloud's DPCA architecture works | popular science diagram
做自媒体视频剪辑,专业的人会怎么寻找背景音乐素材?
基于NCF的多模块协同实例
Aidl and service
Leakage relay llj-100fs
Preliminary practice of niuke.com (9)
LabVIEW is opening a new reference, indicating that the memory is full
【js组件】date日期显示。
Autowired注解用于List时的现象解析
什么是依赖注入(DI)
数字化如何影响工作流程自动化
【oracle】简单的日期时间的格式化与排序问题
Zhang Ping'an: accelerate cloud digital innovation and jointly build an industrial smart ecosystem
1.AVL树:左右旋-bite
Where is NPDP product manager certification sacred?
说一说MVCC多版本并发控制器?
Leakage relay jd1-100