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亚洲区域赛(南京)相关推荐

  1. 2019ICPC亚洲区域赛南京网络赛

    Problem F Greedy Sequence 题目链接:https://nanti.jisuanke.com/t/41303 题意: 给出n个整数,构造s1,s2,s3-sns1,s2,s3-s ...

  2. 第44届ICPC国际大学生程序设计亚洲区域赛(南京站)心得体会

    2019年10月27日在南京航天航空大学举行第44届ICPC国际大学生程序设计亚洲区域赛(南京站).我有幸能与袁应师兄.胡富云一起去参赛.这一次比赛深感愧疚,我们队没能做出一个题,还有自身实力太弱. ...

  3. 2018 ACM-ICPC亚洲区域赛 北京赛区

    2018 ACM-ICPC亚洲区域赛 北京赛区 A - Jin Yong's Wukong Ranking List HihoCoder - 1870 题意 给N对关系,每对关系表示为A 比B 厉害, ...

  4. 2018 焦作站亚洲区域赛校内选拔赛题解

    SUST_2018 焦作站亚洲区域赛校内选拔赛 A.高速        by yoyo tag:图论.最短路 //最短路 #include<bits/stdc++.h> using nam ...

  5. SUST_2018 焦作站亚洲区域赛校内选拔赛题解

    SUST_2018 焦作站亚洲区域赛校内选拔赛 A.高速        by yoyo tag:图论.最短路 //最短路 #include<bits/stdc++.h> using nam ...

  6. 第43期ACM_ICPC亚洲区域赛(焦作站)感想

    2018年11月25日在焦作河南理工大学举办了第43期ACM_ICPC亚洲区域赛,本次比赛我很荣幸的代表了学校参加了比赛,但是很可惜只是去打了个铁(嘤嘤嘤~~).不过虽然没有拿到牌,但是这也是一场不错 ...

  7. 2018年ACM-ICPC亚洲区域赛(焦作)赛后总结

    昨天刚参加完人生中的第一场ACM-ICPC亚洲区域赛焦作站,对于这次比赛两个字"自闭". 正式赛前一天早上七点起床,从西安坐高铁去郑州,然后坐城际高铁去焦作,因为热身赛马上就要开始 ...

  8. 2014 acm亚洲区域赛(北京)总结

    2014 acm/icpc 亚洲区域赛北京站    第一次到外面去比赛,周五下午做高铁到北京,报到注册后就去找在北京的同学玩了.    周六,上午,随便拉了个cf,我们随便看了下,没有写代码.下午的开 ...

  9. 2017年第42届ACM-ICPC亚洲区域赛青岛赛区(现场赛)

    比赛:第42届ACM-ICPC 亚洲区域赛青岛站 比赛地点:中国石油大学体育馆一楼 时间:2017-11-4 到 2017-11-5 正式比赛时间:2017-11-5 上午九点到下午两点 AC题目: ...

最新文章

  1. msf反弹shell
  2. .net core 17
  3. 理解js中this的指向
  4. IE6下position:absolute的定位BUG(转载)
  5. Vue项目目录结构注解附assets与static目录的区别
  6. 如何清理 Linux 系统开机启动项?
  7. 修改常见服务器的banner
  8. Linux下一次数据仓库进行迁移记录
  9. 零知识证明在匿名投票中的应用
  10. linux驱动系列之挂载(转)
  11. 浅谈URI和URL的区别
  12. 净初级生产力(NPP)空间分布数据汇总整理
  13. wps怎么插入目录,快速插入目录的操作步骤
  14. adb使用-详细教程(Awesome Adb)
  15. 如何把直播嵌入微信公众账号
  16. jboot websocket的使用
  17. 金大侠的亲属与剑桥大学最厉害的三个学院
  18. [APIO2010] 特别行动队
  19. 【MAC M1芯片】PS已解决在M1苹果电脑上出现“闪退”“液化”和WEB等黑屏问题
  20. 这么骚的SQL进阶技巧,不怕被揍么?

热门文章

  1. photoshop制作艺术字视频教学
  2. android wifi热点广播,Android WiFi热点开发的示例代码
  3. android平板怎么换字体大小,安卓手机设置字体大小全部教程
  4. 写出来会理顺思路,自己在做什么
  5. openjdk jol 工具打印 Java 对象内存布局
  6. 计算机虚拟筛选公司,虚拟筛选服务
  7. 数据深陷孤岛惊魂 企业应用集成助脱困
  8. 【解决objection框架对于多进程app卡死的情况】
  9. 秒杀服务-----功能实现逻辑
  10. js 数组操作 以固定位数 为一组 循环数组