当前位置:网站首页>Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
Codeforces Round #416 (Div. 2) D. Vladik and Favorite Game
2022-07-06 23:36:00 【不吃土司边】
#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;
}
边栏推荐
- Initial experience of annotation
- 10 distributed databases that take you to the galaxy
- 1.AVL树:左右旋-bite
- EGR-20USCM接地故障继电器
- [opencv] image morphological operation opencv marks the positions of different connected domains
- 局部变量的数组初始化问题
- Where is NPDP product manager certification sacred?
- SQL injection - secondary injection and multi statement injection
- 在米家、欧瑞博、苹果HomeKit趋势下,智汀如何从中脱颖而出?
- The founder has a debt of 1billion. Let's start the class. Is it about to "end the class"?
猜你喜欢

Two person game based on bevy game engine and FPGA

CentOS 7.9 installing Oracle 21C Adventures

QT simple layout box model with spring

最长回文子串(动态规划)

Safe landing practice of software supply chain under salesforce containerized ISV scenario

【js组件】自定义select

AOSP ~binder communication principle (I) - Overview

《5》 Table

DJ-ZBS2漏电继电器

DOM-节点对象+时间节点 综合案例
随机推荐
张平安:加快云上数字创新,共建产业智慧生态
设f(x)=∑x^n/n^2,证明f(x)+f(1-x)+lnxln(1-x)=∑1/n^2
[QT] custom control loading
DFS,BFS以及图的遍历搜索
MySQL数据库学习(7) -- pymysql简单介绍
Is it necessary to renew the PMP certificate?
A cool "ghost" console tool
漏电继电器JELR-250FG
pytest测试框架——数据驱动
1.AVL树:左右旋-bite
TabLayout修改自定义的Tab标题不生效问题
Initial experience of annotation
Design, configuration and points for attention of network unicast (one server, multiple clients) simulation using OPNET
什么是依赖注入(DI)
Array initialization of local variables
《4》 Form
[JS component] date display.
Tencent cloud database public cloud market ranks top 2!
Lombok插件
window定时计划任务