题意:一个机器人在一个无穷大的网格图中,每秒能够上下左右走一步。它的行走方向序列是长度为l的循环。给你n个线索,包括ti:时间,xi,yi走到的坐标。让你构造出行走的方向序列?

标程:

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=;
ll t,x,y,nx,ny;
int n,l[N],r[N],len;
struct node{ll ty,tz,x;node(){} node(ll A,ll B,ll C){ty=A;tz=B;x=C;}}a[N],b[N];
bool operator < (const node &A,const node &B) {return A.ty<B.ty;}
ll ceil(ll x,ll y)
{
if (x<) x=-x,y=-y;
if (x==) return ;
if (y>) return (x-)/y+;
else return x/y;
}
ll floor(ll x,ll y)
{
if (x<) x=-x,y=-y;
if (x==) return ;
if (y>) return x/y;
else return (x-)/y-;
}
void solve(node *a,int *ans)
{
sort(a+,a+n+);
ll L=,R=len;
a[n+]=node(len,-,);//设置边界!!!
for (int i=;i<=n;i++)//要统计入最后一个限制S[len]=0-S*(-1)
{
ll d=a[i+].ty-a[i].ty,q=a[i+].x-a[i].x,p=a[i].tz-a[i+].tz;
if (p>)
{
L=max(L,ceil(-q,p));
R=min(R,floor(d-q,p));
}else if (p<) {
L=max(L,ceil(d-q,p));
R=min(R,floor(-q,p));
}
if (L>R||p==&&(q<||q>d)) {puts("NO");exit();}
}
ll s=L,si=;
for (int i=,j=;i<=n;i++)
{
si=(a[i+].x-s*a[i+].tz)-(a[i].x-s*a[i].tz);
while (si--) ans[j++]=;
j=a[i+].ty+;//a[i+1]而不是a[i]
}
}
int main()
{
scanf("%d%d",&n,&len);
for (int i=;i<=n;i++)
{
scanf("%lld%lld%lld",&t,&x,&y);
nx=x+y+t;ny=x-y+t;
if (nx&) return puts("NO"),;
nx/=;ny/=;
a[i]=node(t%len,t/len,nx);
b[i]=node(t%len,t/len,ny);
}
solve(a,l);
solve(b,r);
for (int i=;i<=len;i++)
printf("%c","LDUR"[l[i]<<|r[i]]);//此题的方向与常识相异!
return ;
}

易错点:1.注意设置l处的边界,要统计入最后一个限制S[len]=0-S*(-1),否则不等式不完整。

2.注意负数和0的上下取整。

题解:转换+不等式构造

这道题思路非常喵!

将x,y坐标分开考虑,每次x坐标+-1,或y坐标+-1。难以处理。

设置(x+y,x-y)为新的参数,这样每次两个参数都会有+-1的变化。

再进一步,((x+y+t)/2,(x-y+t)/2)设置,每次要么+1,要么+0。

——以上是坐标和时间结合题的某种套路。

之后就是构造合法解的事情了。

这样对于一系列的t,由于l是循环节长度,设Sl为单位循环加了多少个1,S[i]表示i时间内加了多少个1,可以列出等式S[t%l]=Xi-Sl*[t/l]。

以及由相邻依次递增的t%i列出一系列不等式:0<=Sb-Sa<=b-a。整体化成0<=p*Sl+q<=d的形式,可以解出Sl的取值范围,取范围中的任意值皆可。

这样可以解出所有S[t%l],直接按区间填上对应数量的1即可。

CF538G Berserk Robot的更多相关文章

  1. Codeforces 538G - Berserk Robot(乱搞)

    Codeforces 题目传送门 & 洛谷题目传送门 一道很神的乱搞题 %%% 首先注意到如果直接去做,横纵坐标有关联,不好搞.这里有一个非常套路的技巧--坐标轴旋转,我们不妨将整个坐标系旋转 ...

  2. Robot Framework用户手册 (版本:3.0)

    版权信息:诺基亚网络和解决中心 本翻译尊重原协议,仅用于个人学习使用 1.开始: 1.1 介绍: Robot Framework是一个基于Python的,为终端测试和验收驱动开发(ATDD)的可扩展的 ...

  3. selenium webdriver 右键另存为下载文件(结合robot and autoIt)

    首先感谢Lakshay Sharma 大神的指导 最近一直在研究selenium webdriver右键菜单,发现selenium webdriver 无法操作浏览器右键菜单,如图 如果我想右键另存为 ...

  4. RIDE -- Robot Framework setup

    RobotFramework 是一款基于python 的可以实现关键字驱动和数据驱动并能够生成比较漂亮的测试报告的一款测试框架 这里使用的环境是 python-2.7.10.amd64.msi RID ...

  5. [8.2] Robot in a Grid

    Imagine a robot sitting on the upper left corner of grid with r rows and c columns. The robot can on ...

  6. Robot Framework自动化测试 ---视频与教程免费分享

    当我第一次使用Robot Framework时,我是拒绝的.我跟老大说,我拒绝其实对于习惯了代码的自由,所以讨厌这种“填表格”式的脚本.老大说,Robot Framework使用简单,类库丰富,还可以 ...

  7. robot创建桌面图标(转载)

    桌面ride图标,安装之后会自动创建(偶尔也会创建失败),创建桌面图标方法如下: 1. 新建快捷方式 在桌面右击鼠标,弹出的菜单选择 新建-快捷方式 ,然后在"请键入对象"的位置输 ...

  8. Robot Framework 的安装和配置(转载)

    Robot Framework 的安装和配置 在使用 RF(Rebot framework)的时候需要 Python 或 Jython 环境,具体可根据自己的需求来确定.本文以在有 Python 的环 ...

  9. 解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题

    最新的jenkins打开jenkins robot framework报告会提示如下 Verify that you have JavaScript enabled in your browser.  ...

随机推荐

  1. nuxt header 设置

    1. nuxt.config.js 中配置全局 2. 在单页面设置单独

  2. 一键获取Android的appActvity和PackName

    大家平常写Appium自动化时,可能写脚本半小时,得有5分钟用来去看Activity,大部分都是通过adb命令的方式来获取.为了提高效率,可以把这个命令放到python里去执行,然后根据规则去筛选出自 ...

  3. JAVA里面的int类型 和Integer类型,有什么不一样

    JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...

  4. boost 大小端转换

    boost 中有一个edmian 里面有转换函数模板 native_to_little<T> 本地转换为小端 native_to_bit<T> 本地转换为大端

  5. Flink开发-IDEA scala开发环境搭建

    现在大数据相关服务,越来越倾向于使用scala语言,scala函数式编程的优势我不多赘述.最明显的一个优点,代码简洁.看个WordCount实现对比: Java版WordCount Execution ...

  6. AES加密php,java,.net三种语言同步实现加密、解密

    话不多数上代码: java::: /* * To change this license header, choose License Headers in Project Properties. * ...

  7. TS-接口

    接口 TS的核心原则之一是对值所具有的结构进行类型检测 接口初探 function printLabel(labelledObj: { label: string }) { console.log(l ...

  8. centos做免密登录

    CentOS 6.9 SSH配置用户免密码登录 1. 演示环境: 192.168.1.144:CentOS 6.9 x86_64 192.168.1.146:CentOS 7.4 x86_64 2.  ...

  9. 如何在Windows10操作系统下安装superset步骤分享

    superset是一个轻量级自助式BI框架,以优雅的界面和根据数据表动态生成数据为主要特点. 一. 环境 windows 10 64位 Python 3.7 二. 安装步骤 安装Python 建议安装 ...

  10. bzoj1053题解

    [题意分析] 本题中,x被称为反质数,当且仅当没有任意一个严格小于x的正整数的约数个数大于x的约数个数.求不超过N的最大反质数. [解题思路] 数据范围中最大的N=2*109. 首先可以证明,不超过N ...