AtCoder Regular Contest 103 Problem D Robot Arms (构造)
题目链接 Problem D
给定$n$个坐标,然后让你构造一个长度为$m$的序列,
然后给每个坐标规定一个长度为$m$的序列,ULRD中的一个,意思是走的方向,
每次从原点出发按照这个序列方向,每次走的距离是对应位置的那个值,
最后要走到那个坐标。
直接构造,无解的条件是$x$和$y$的和奇偶性不全相等。
我当时想不出来是因为感觉两个方向不好控制,结果其实可以用二进制统一操作。
如果和是偶数那么加一个往右走一个的单位的操作转化为奇数就行。
然后按照二进制的方法从小到大一个个转换,就像转二进制那样。
接下来输出就好了。
#include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i(a); i <= (b); ++i)
#define dec(i, a, b) for (int i(a); i >= (b); --i)
#define MP make_pair
#define fi first
#define se second typedef long long LL; const int N = 1e3 + 5; int a[N], b[N];
int n, m, c, fg;
char s[45]; int main(){ scanf("%d", &n);
c = 0; rep(i, 1, n){
scanf("%d%d", a + i, b + i);
if ((a[i] + b[i]) & 1) ++c;
else --c;
} if (abs(c) != n) return 0 * puts("-1"); m = 31 + (c < 0); printf("%d\n", m);
rep(i, 0, 30) printf("%d ", 1 << i);
if (c < 0) putchar(49);
putchar(10); rep(i, 1, n){
int x = a[i], y = b[i];
if (c < 0) s[31] = 'R', --x;
fg = 0;
dec(j, 30, 0){
if (abs(x) < abs(y)) swap(x, y), fg ^= 1;
if (x > 0) x -= 1 << j, s[j] = fg ? 'U' : 'R';
else x += 1 << j, s[j] = fg ? 'D' : 'L';
} puts(s);
} return 0;
}
AtCoder Regular Contest 103 Problem D Robot Arms (构造)的更多相关文章
- AtCoder Regular Contest 103
传送门 C - /\/\/\/ 题意: 给出一个序列\(\{a_i\}\),先要求其满足以下条件: \(a_i=a_{i+2}\) 共有两个不同的数 你现在可以修改任意个数,现问最少修改个数为多少. ...
- AtCoder Regular Contest 103 题解
C-/\/\/\ #include<algorithm> #include<iostream> #include<cstdlib> #include<ioma ...
- AtCoder Regular Contest 103 E Tr/ee
Tr/ee 思路:按照下图所示连接 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #inclu ...
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
随机推荐
- JSP动态合并单元格
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <table ...
- WCF使用注意事项
执行如下 批处理:"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\svcutil.exe" http://127.0.0.1: ...
- 20155335《java程序设计》第一周学习总结
18个章节的问题 (1)为什么需要JVM让java跨平台? (2)JVM与JDK,与JRE的关系? (3)为什么 -0/3 结果是 0,而 -0.0/3.0 结果是 -0.0?(注意后边的结果0带负号 ...
- nodewebkitV0.21.6版本的学习
1.下载 https://nwjs.io/ 建议下载sdk版本,有调试功能,正式发布时,使用normal版本 下载以后解压,得到的文件目录如下 点击nw.exe,显示如下 2.hello world ...
- C语言分割字符串函数strtok
在编程过程中,有时需要对字符串进行分割.而有效使用这些字符串分隔函数将会给我们带来很多的便利. 下面我将在MSDN中学到的strtok函数做如下翻译. strtok :在一个字符串查找下一个符号 ch ...
- imx6设备树pinctrl解析【转】
转自:http://blog.csdn.net/michaelcao1980/article/details/50730421 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在移植linu ...
- python基础===Character string
本文转自:python之Character string 1.python字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串,l Python不支持单 ...
- 如何使用vux创建vue项目
1.安装vue-cli,通过vue-v可以查明 安装vue-cli步骤 vue init airyland/vux2 projectPath(项目名字) 2.安装依赖模块 方法1:npm instal ...
- docker数据管理--数据卷的备份
/* 先在宿主机创建一个备份的文 件夹, 然后将其以另外一个名字的目录挂载到容器里, 此时不管容器里,或宿主机里做什么操作, 数据都会及时更新,并得到备份. */ [root@localhost ~] ...
- leetcode 之Copy List with Random Pointer(23)
深拷贝一个链表,不同的是这个链表有个额外的随机指针.参考:http://blog.csdn.net/ljiabin/article/details/39054999 做法非常的巧妙,分成三步,一是新建 ...