Robot Arms AtCoder - 4432 (构造)】的更多相关文章

大意: 给定平面上$n$个点$(x_i,y_i)$. 要求构造一个序列$d$, $d_i$表示每步走的距离, 再构造$n$个命令串, 要求从原点出发按照第$i$个命令走, 走完恰好到达$(x_i,y_i)$. 构造完全没思路, 看了题解才懂 首先若存在两个点的$x+y$的奇偶性不同, 那么显然无解. 其余情况假设$x+y$为奇数, 那么构造$d=1,2,4,8,16,...$, 然后命令可以贪心构造出来. 若$x+y$为偶数, $d$中添加一个$1$, 变为奇数的情况即可. #include <…
题目链接  Problem D 给定$n$个坐标,然后让你构造一个长度为$m$的序列, 然后给每个坐标规定一个长度为$m$的序列,ULRD中的一个,意思是走的方向, 每次从原点出发按照这个序列方向,每次走的距离是对应位置的那个值, 最后要走到那个坐标. 直接构造,无解的条件是$x$和$y$的和奇偶性不全相等. 我当时想不出来是因为感觉两个方向不好控制,结果其实可以用二进制统一操作. 如果和是偶数那么加一个往右走一个的单位的操作转化为奇数就行. 然后按照二进制的方法从小到大一个个转换,就像转二进制…
题目大意:平面上有$n$个点,要求你构造$m$条边(满足$m\leqslant40$),使得可以从原点到达给定的$n$个点(边必须平行于坐标轴).并要求输出每一条边的方向,每条边必须都使用,无解输出$-1$.$n\leqslant1000$,点的坐标的绝对值$\leqslant10^9$,边长度$\leqslant10^{12}$ 题解:因为所有的边必须使用,所以每一个点横纵坐标相加的奇偶性相同,不同就无解.发现若构造长度为$1,2,\cdots,2^n$的边,可以到达满足$|x|+|y|\le…
题意 给定\(n\)个点,你需要找到一个合适的\(m\)和\(d_1,d_2,...,d_m\),使得从原点出发每次向四个方向的某一个走\(d_i\)个单位,最终到达\((x_t, y_t)\).输出\(m\)和\(d\)数组:对于\(t=1\to n\)输出方向. \(n \leq 10^3\),坐标范围\(10^9\) 题解 如果这些点\((x_t, y_t)\),\(x_t + y_t\)的奇偶性不同那无解 如果\(x_t + y_t\)为偶数,我们先让\(d_1=1\),这样转换为\(x…
题意:给定长为n的机器人行走路线,每个字符代表上下左右走,可以更改将一些字符改成另外三个字符,定义花费为更改的下标max-min+1, 问从(0,0)走到(X,Y)的最小花费,无解输出-1 n<=2e5,abs(X),abs(Y)<=1e9 思路:第一反应是二分,但其实并没有这个取到等号的严格的性质 不过因为内部可以调整,我们还是可以二分长度,然后看内部调整能不能构造出一组可行解 #include<cstdio> #include<cstring> #include&l…
大意: 给定长$n$的字符串$s$, 要求构造一棵树, 满足若第$i$个字符为$1$, 那么可以删一条边, 得到一个大小为$i$的连通块. 若为$0$则表示不存在一条边删去后得到大小为$i$的连通块. 先特判掉显然不成立的情况, 然后构造一个毛毛虫即可 #include <iostream> #include <sstream> #include <algorithm> #include <cstdio> #include <cmath> #in…
合法的必要条件是每个点两维坐标和奇偶性相同,同时这也是充分条件 令$d_{i}=\{2^{0},2^{1},...,2^{m-1}\}$,归纳其可以走到任意满足$|x|+|y|<2^{m}$的$(x,y)$,考虑先确定其最后一步,即对于$|x|+|y|<2^{m+1}$,通过$d=2^{m}$使其走到$|x'|+|y'|<2^{m}$的位置 不妨假设$|x|<|y|$,则有$|x|<2^{m}$,然后令$y'=y-sign(y)\cdot 2^{m}$,对$|y|$分类讨论:…
C - //// 为了防止一些多余的判断,我选择直接记录每个数的个数,然后枚举第一个数,找第一个数之外第二个数改变最少的情况下应该选什么 代码 #include <bits/stdc++.h> #define fi first #define se second #define pii pair<int,int> #define mp make_pair #define pb push_back #define enter putchar('\n') #define space p…
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和\(A_{i+1}\)之间只会有一个括号:有多个括号的话只保留最外边那个,答案不变. 然后就可以定义状态:\(dp_{i,j}\)表示前\(i\)个数,还有\(j\)个未闭合的左括号,得到的最大答案. 由于只有减号右边有括号,所以只要知道左边有几个未闭合的左括号,就可以知道自己的贡献是\(1\)还是…
目录 ARC 103 A.//// B.Robot Arms C.Tr/ee D.Distance Sums ARC 103 窝是传送门QwQ A.//// 题意 : 给你\(n\)(\(n\)为偶数)个数 一次操作你可以修改任意一个数 问最少修改几次使得其满足以下条件 \(a_i=a_{i+2}\) \(a_1!=a_2\) 数据约束: \(2 \leq n \leq 10^5\) , \(1 \leq a_i \leq 10^5\) 题解: 对于下标为奇数的记下每个数出现的个数 在满足和偶数…