Evil Coordinate亚洲区域赛(南京)
Evil Coordinate
亚洲区域赛(南京)
你好! 我是一个刚刚接触acm的小菜鸡,今天对南京站的E有一点想法,写在这里和大家分享一下。
由于自己的代码能力比较弱,所以写的比较繁琐。欢迎大家优化。
首先贴上原题:
链接:https://ac.nowcoder.com/acm/contest/10272/E
样例:
input:
5
1 1
RURULLD
0 5
UUU
0 3
UUU
0 2
UUU
0 0
UUU
output:
LDLRUUR
UUU
Impossible
Impossible
Impossible
根据上面的题意内容可以知道,题目的大概意思就是给你一个坐标点(代表洞的位置),然后给你一串字符串,然后让你改变字符串的顺序,让我们改变顺序后,该机器人不经过洞的的坐标点即可。如果怎么都必须经过这个坐标点,那么就输出Impossible。否则则输出一个修改后的顺序。
首先我们先根据字符串确定出终点的坐标,然后用一个数组记录一下 上,下,左,右各走了多少步。
情况一:
显然当这个洞的坐标如果在起始点和终点的话,那么一定就要输出“Impossible”
情况二:
假如说终点的坐标不在坐标轴上:
如果那个洞在第 1 条道路上(即先在y轴上运动,然后在水平运动),那么我们就让机器人走第二条线。
那么显然如果那个洞在 2 第条道路上,我们就让机器人走第一条道路喽。
如果两条路上都不在,那么就更简单啦,那么随便走哪一条路就都可以了。
情况三:
第三种情况就是如果这个点在x轴或者y轴,但是终点在这个洞的靠外的一侧。这样的话我们就需要判断一下
假设是在x轴上,那么我们就需要判断一下,是否又在y轴方向的运动了,如果没有的话,那么我们就直接输出“Impossible”如果有的话,那么我们就先向y的方向行走,然后再沿着水平方向行走完,然后再在竖直方向行走回来。
如果实在y轴上那么也是这样的一个道理。
情况四:
第四种情况就是如果终点在洞的内侧,那么我们就不用这么麻烦了,我们需要做的就是现在竖直方向上运动,然后再想洞的相反的方向运动,比如说上图我们就向左侧运动,然后回到终点就可以了。
如果在y轴上操作也是一样的。
接来下看一下弱弱的代码。
建议大家可以根据上面的思路,自己去写。(因为我写的不好)
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<cstdio>
#include<stack>
#include<set>
#include<cstdio>
#include<string>
#include<cstring>
#include<cstdlib>
#include<map>
#include<cmath>
#define ios std::ios::sync_with_stdio(0)
using namespace std;
typedef long long ll;
const int inf = 0x3f3f3f3f;
const int mod = 1e9+7;
const int N = 1e5+10;
char a[N];
int t;
int main(){cin >> t;while(t--){int fx,fy;cin >> fx >> fy;int cn[5];memset(a,0,sizeof(a));memset(cn,0,sizeof(cn));scanf("%s",a+1);int len = strlen(a+1);int sx = 0,sy = 0;for(int i = 1 ; i <= len ; i++){if(a[i] == 'L'){sx--;cn[1]++;}else if(a[i] == 'R'){sx++;cn[2]++;}else if(a[i] == 'U'){sy++;cn[3]++;}else if(a[i] == 'D'){sy--;cn[4]++;} }if( (sx == fx && sy == fy) || (fx == 0 && fy == 0)){cout << "Impossible" << endl; }else if(sx == fx && sy != fy){if(sx == 0 && cn[1] == 0 && cn[2] == 0){if(sy >= fy && sy >= 0 && fy >= 0){cout <<"Impossible" << endl; }else if(sy <= fy && sy <= 0 && fy <= 0){cout <<"Impossible" << endl;}else if(fy > 0){for(int i = 1 ; i <= cn[4] ; i++){cout << 'D';}for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';} cout << endl;}else if(fy < 0){for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}for(int i = 1 ; i <= cn[4] ; i++){cout << 'D';} cout << endl;}} else if(sx == 0){if(cn[1]){for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}for(int i = 1 ; i <= cn[4] ; i++){cout << 'D';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R'; }cout << endl;} }else{for(int i = 1 ; i <= cn[4] ; i++){cout << 'D'; }for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';}cout <<endl;} }else if(sx != fx && sy == fy){if(sy == 0 && cn[3] == 0 && cn[4] == 0){if(sx >= fx && sx >= 0 && fx >= 0)cout <<"Impossible" << endl;else if(sx <= fx && sx <= 0 && fx <= 0){cout <<"Impossible" << endl;}else if(fx > 0){for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';} cout << endl;}else if(fx < 0){for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';}for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';} cout << endl;}} else if(sy == 0){if(cn[3]){for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';}for(int i = 1 ; i <= cn[4] ; i++){cout << 'D'; }cout << endl;} }else{for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';}for(int i = 1 ; i <= cn[4] ; i++){cout << 'D'; }for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}cout << endl;} }else{if(fy == 0){for(int i = 1 ; i <= cn[4] ; i++){cout << 'D'; }for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';}cout <<endl; } else{for(int i = 1 ; i <= cn[1] ; i++){cout << 'L';}for(int i = 1 ; i <= cn[2] ; i++){cout << 'R';}for(int i = 1 ; i <= cn[4] ; i++){cout << 'D'; }for(int i = 1 ; i <= cn[3] ; i++){cout << 'U';}cout <<endl;}} }return 0;
}
最后谢谢大家的阅读。
Evil Coordinate亚洲区域赛(南京)相关推荐
- 2019ICPC亚洲区域赛南京网络赛
Problem F Greedy Sequence 题目链接:https://nanti.jisuanke.com/t/41303 题意: 给出n个整数,构造s1,s2,s3-sns1,s2,s3-s ...
- 第44届ICPC国际大学生程序设计亚洲区域赛(南京站)心得体会
2019年10月27日在南京航天航空大学举行第44届ICPC国际大学生程序设计亚洲区域赛(南京站).我有幸能与袁应师兄.胡富云一起去参赛.这一次比赛深感愧疚,我们队没能做出一个题,还有自身实力太弱. ...
- 2018 ACM-ICPC亚洲区域赛 北京赛区
2018 ACM-ICPC亚洲区域赛 北京赛区 A - Jin Yong's Wukong Ranking List HihoCoder - 1870 题意 给N对关系,每对关系表示为A 比B 厉害, ...
- 2018 焦作站亚洲区域赛校内选拔赛题解
SUST_2018 焦作站亚洲区域赛校内选拔赛 A.高速 by yoyo tag:图论.最短路 //最短路 #include<bits/stdc++.h> using nam ...
- SUST_2018 焦作站亚洲区域赛校内选拔赛题解
SUST_2018 焦作站亚洲区域赛校内选拔赛 A.高速 by yoyo tag:图论.最短路 //最短路 #include<bits/stdc++.h> using nam ...
- 第43期ACM_ICPC亚洲区域赛(焦作站)感想
2018年11月25日在焦作河南理工大学举办了第43期ACM_ICPC亚洲区域赛,本次比赛我很荣幸的代表了学校参加了比赛,但是很可惜只是去打了个铁(嘤嘤嘤~~).不过虽然没有拿到牌,但是这也是一场不错 ...
- 2018年ACM-ICPC亚洲区域赛(焦作)赛后总结
昨天刚参加完人生中的第一场ACM-ICPC亚洲区域赛焦作站,对于这次比赛两个字"自闭". 正式赛前一天早上七点起床,从西安坐高铁去郑州,然后坐城际高铁去焦作,因为热身赛马上就要开始 ...
- 2014 acm亚洲区域赛(北京)总结
2014 acm/icpc 亚洲区域赛北京站 第一次到外面去比赛,周五下午做高铁到北京,报到注册后就去找在北京的同学玩了. 周六,上午,随便拉了个cf,我们随便看了下,没有写代码.下午的开 ...
- 2017年第42届ACM-ICPC亚洲区域赛青岛赛区(现场赛)
比赛:第42届ACM-ICPC 亚洲区域赛青岛站 比赛地点:中国石油大学体育馆一楼 时间:2017-11-4 到 2017-11-5 正式比赛时间:2017-11-5 上午九点到下午两点 AC题目: ...
最新文章
- msf反弹shell
- .net core 17
- 理解js中this的指向
- IE6下position:absolute的定位BUG(转载)
- Vue项目目录结构注解附assets与static目录的区别
- 如何清理 Linux 系统开机启动项?
- 修改常见服务器的banner
- Linux下一次数据仓库进行迁移记录
- 零知识证明在匿名投票中的应用
- linux驱动系列之挂载(转)
- 浅谈URI和URL的区别
- 净初级生产力(NPP)空间分布数据汇总整理
- wps怎么插入目录,快速插入目录的操作步骤
- adb使用-详细教程(Awesome Adb)
- 如何把直播嵌入微信公众账号
- jboot websocket的使用
- 金大侠的亲属与剑桥大学最厉害的三个学院
- [APIO2010] 特别行动队
- 【MAC M1芯片】PS已解决在M1苹果电脑上出现“闪退”“液化”和WEB等黑屏问题
- 这么骚的SQL进阶技巧,不怕被揍么?