首页 > 其他分享 > [ABC111D] Robot Arms

[ABC111D] Robot Arms

时间:2023-02-22 09:22:07浏览次数:70  
标签:ab return ABC111D int ll GetC Robot Arms sgn

\(\mathcal Link\)

先判断无解情况。

显然,每一步无论怎么走都会使奇偶性发生相同的改变,因此当 \(\exists i,j\) 使得 \(x_i+y_i\not\equiv x_j+y_j\pmod 2\) 时无解。

考虑构造 \(c_i\),容易想到倍增构造 \(1,2,4,8,\cdots ,2^k\)。

接下来证明该序列能构造所有 \(|x|+|y|\leq 2^{k+1}-1\) 且 \(x+y\equiv 1\pmod 2\) 的坐标。

当 \(k=0\) 时显然成立。
当 \(k>0\) 时,考虑令 \(|x|\geq |y|\),则将 \(2^k\) 放入 \(x\)方向,此时 \(|x'|+|y|=|y|+||x|-2^k|\)。

  • \(|x|<2^k\) 时结果为 \(|y|+2^k-|x|\leq 2^k\),由于 \(|x|\not=|y|\),所以 \(|x'|+|y|<2^k\)
  • \(|x|>2^k\) 时结果为 \(|x|+|y|-2^k\leq 2^k-1\)

对于偶数,再加上 \(1\) 的偏移量。

#include <cstdio>
#include <cctype>
#include <algorithm>
using namespace std;

using ll=long long;

char buf[1<<14], *p1=buf, *p2=buf;
#define GetC() ((p1==p2)&&(p2=(p1=buf)+fread(buf,1,1<<14,stdin),p1==p2)?EOF:*p1++)

struct Ios{}io;
template <typename _tp>
Ios &operator >>(Ios &in, _tp &x){
    x=0; int w=0; char c=GetC();
    for(;!isdigit(c);w|=c=='-', c=GetC());
    for(;isdigit(c);x=x*10+(c^'0'), c=GetC());
    if(w) x=-x;
    return in;
}
const int N=1005;

ll x[N], y[N];

auto ab=[](ll x)->ll{ return x>=0?x:-x; };
auto sgn=[](ll x)->ll{ return  x>=0?0:1; };

const char *s="RLUD";

int main(){
    int n; io>>n;
    int r=0;
    for(int i=1;i<=n;++i){
        io>>x[i]>>y[i];
        if(i==1) r=ab(x[i]+y[i])%2;
        else if(r!=ab(x[i]+y[i])%2) {
            puts("-1");
            return 0;
        }
    }
    printf("%d\n", 33+(!r));
    for(int i=32;~i;--i)
        printf("%lld ",1ll<<i);
    if(!r) printf("1 ");
    puts("");
    for(int i=1;i<=n;++i){
        for(int k=32;~k;--k){
            if(ab(x[i])>ab(y[i])){
                putchar(s[sgn(x[i])]);
                x[i]=x[i]+(sgn(x[i])*2-1)*(1ll<<k);
            }
            else{
                putchar(s[2+sgn(y[i])]);
                y[i]=y[i]+(sgn(y[i])*2-1)*(1ll<<k);
            }
        }
        if(!r){
            if(ab(x[i])>ab(y[i]))
                putchar(s[sgn(x[i])]);
            else
                putchar(s[2+sgn(y[i])]);
        }
        puts("");
    }
    return 0;
}

标签:ab,return,ABC111D,int,ll,GetC,Robot,Arms,sgn
From: https://www.cnblogs.com/pref-ctrl27/p/17143173.html

相关文章

  • 【K哥爬虫普法】百度、360八年恩怨情仇,robots 协议之战终落幕
    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K哥特设了“K哥爬虫普法”专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的......
  • robotframework接口请求常用关键字:RequestsLibrary
    ------------摘抄自51Testing软件测试网站------------一、版本对比RequestsLibrary最新版本为2021.4.22号发布的0.91版本,适配python2.x和python3.x,只需一句pipinstall......
  • robot异常处理
    1、异常处理函数: RunKeywordAndReturnStatus 2、只关心关键字,关键字运行成功返回True,运行报错返回Falsestatus关键字Evaluate运行成功,返回Truestatus1关......
  • robot笔记
    robotframework -----自动化测试框架  -----直接写自动化用例关键字驱动思想  -----做任何事情,都是先找关键字,然后调用关键字功能 ---函数测试套......
  • eclipse中robot项目界面配置
    1、调整为robot视图 2、运行时报编码错误,调整编码配置 3、查看打印结果,点击后添加输出栏 ......
  • eclipse创建1个robotframework
    1、eclipse打开,新建1个robot项目2、输入项目名称自定义,完成 3、项目名称右键->新建->测试套件 4、输入测试套件名称,自定义->完成 5、完成测试用例编写 6......
  • RobotFramework+Eclipse环境安装之:Eclipse下载RED下载
    1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 ......
  • RobotFramework+Eclipse环境安装之:Eclipse中安装RED插件
    步骤如下:1、eclipse包解压后打开,双击eclipse.exe2、Help->installNewSoftware3、选择本地RED包4、勾选5、安装6、同意7、安装进度8、勾选9、重启 ......
  • robots.txt详解[通俗易懂]
    大家好,又见面了,我是你们的朋友全栈君。怎样查看robots文件?浏览器输入主域名/robots.txtrobots.txt的作用robots.txt文件规定了搜索引擎抓取工具可以访问网站上的哪些......
  • [ABC289D] Step Up Robot 题解
    Problem有一机器人初始在\(0\)级阶梯,对于每一级阶梯,机器人可以从\(1\simN\)种任选一个\(i\)走\(A_i\)步,同时有\(M\)个障碍在\(B_i\)级阶梯,若走到障碍则将无......