D. Rorororobot

题意

有一个nm列的网格,每一列上 1 1 1~ a i a_i ai​的位置上是障碍物,机器人可以连续走k步,给你一个起点和终点,问你能否在不路过障碍物和不超过格子的情况下从起点走到终点。

考点

数据结构,分类讨论

思路

首先,我们需要用数据结构维护出从起点列到终点列的最大值,我们设它为 x x x。
其次我们分情况讨论:

1.假如起和终点在同一列上,则只需要判断横坐标之差是不是k的倍数即可。

2.如果不在同一列,要保证两点横坐标的差和纵坐标的差的绝对值都是k的倍数

3.如果横坐标较大的那个点的高度比 x x x低,要保证能走到x上面但不越界的空白区域(如下图的棕色区域),在此区域走到另一个点的纵坐标那。

代码

const int N = 200010;
struct Node{int maxn;
}seg[N * 4];int a[N];
int n, m;
void pushup(int u){seg[u].maxn = max(seg[u << 1].maxn, seg[u << 1 | 1].maxn);
}
void build(int u, int l, int r){if(l == r){seg[u].maxn = a[l];return;}int mid = l + r >> 1;build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);pushup(u);
}
int query(int u, int l, int r, int ql, int qr){if(l == ql && r == qr) return seg[u].maxn;int mid = l + r >> 1;if(qr <= mid) return query(u << 1, l, mid, ql, qr);else if(ql > mid) return query(u << 1 | 1, mid + 1, r, ql, qr);else return max(query(u << 1, l, mid, ql, mid), query(u << 1 | 1,mid + 1, r, mid + 1, qr));
}
int main(){scanf("%d %d",&n, &m);for(int i = 1; i <= m; i ++ ){scanf("%d",&a[i]);}int q;scanf("%d",&q);build(1, 1, m);while(q -- ){int sx, sy, ex, ey, k;scanf("%d %d %d %d %d",&sx, &sy, &ex, &ey, &k);int miny = min(ey, sy), maxy = max(ey, sy);int minx = min(ex, sx), maxx = max(ex, sx);int a = abs(ex - sx), b = abs(ey - sy), x = query(1, 1, m, miny, maxy);//在同一列if(!b){if(a % k) puts("No");else puts("Yes");continue;}if(a % k || b % k){puts("No");continue;}if(x < maxx){puts("Yes");continue;}int mod = (x - maxx) % k;if(n - x + mod >= k) puts("Yes");else puts("No");}return 0;
}

Educational Codeforces Round 132 (Rated for Div. 2) D. Rorororobot相关推荐

  1. Educational Codeforces Round 132 (Rated for Div. 2) 题解(A~D)

    A题链接 题目大意: t t t 次询问,先给一扇门 n n n 的钥匙,开了 n n n 门后,会给当前数字 a i a_i ai​ 的门的钥匙. 比如样例一:给了第3个门的钥匙,第3个门打开后给2 ...

  2. Educational Codeforces Round 132 (Rated for Div. 2) C. Recover an RBS

    翻译: 括号序列是只包含字符"("和")"的字符串.正则括号序列(或简称RBS)是一个可以通过在序列的原始字符之间插入字符"1"和" ...

  3. Educational Codeforces Round 132 (Rated for Div. 2) C,D+AC自动机

    D. Rorororobot 题意:n*m的矩阵,从下到上是1到n行,从左到右是1到m列,每列从下到上有连续x个单元格损毁,如果给出起点和终点坐标,并且规定每次只能向同一个方向移动k次,是否能够从起点 ...

  4. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  5. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

  6. Educational Codeforces Round 37 (Rated for Div. 2) 1

    Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...

  7. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  8. Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)

    Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...

  9. Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs

    传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici​个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...

最新文章

  1. 吴恩达深度学习笔记(105)-人脸识别之面部验证与二分类
  2. linux下远程控制继电器,更智能的电脑远程开关机-基于继电器
  3. Docker知识4:如何在win10下安装 / 使用ubuntu ?应用WSL2
  4. mysql之ALTER COLUMN、CHANGE COLUMN、MODIFY COLUMN的区别
  5. Elasticsearch集群Red,分片无法恢复:cannot allocatebecause all found copies of the shard are either stale or c
  6. 梯度下降法优化目标函数_如何通过3个简单的步骤区分梯度下降目标函数
  7. 90.不用其它变量进行变量互换
  8. 广州驾考科目三电子考16日全面启动
  9. python 排列组合_Python计算生态jieba库和random库的综合运用之爬山篇
  10. 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_03.入门程序之需求分析
  11. @JsonFormat和@DataFormat注解解决前后端日期格式一致性问题
  12. matlab光学原理仿真应用衍射,光学衍射仿真实验系统
  13. 推荐给DBA的Oracle书籍
  14. 通过S2B2C供应链电商平台网站解决方案,实现大宗商品万亿产业数字化转型
  15. Java中OutOfMemoryError(内存溢出)和Tomcat进程假死崩溃
  16. 软件漏洞及缓冲区溢出
  17. Linux编译命令 make -j8 的意义
  18. Windows上那些值得推荐的良心软件-整理
  19. java中关于递增和递减两种方式的差别
  20. 网页分享到微信、微博、QQ,QQ空间,豆瓣等等函数的封装

热门文章

  1. yaf mysql_yaf集成medoo数据库操作
  2. Cocos2d-x开发网络游戏
  3. 某航某个大作业:十五数码A*算法,Python实现
  4. 需求决定供给(从网上看到的一个故事)
  5. 抖音直播运营团队需要哪些人?岗位职责怎么分配?
  6. double保留2位小数
  7. 【以压缩文件方式打开文件失败】解决办法
  8. 美国英语音标发音指南
  9. python找出3或者5的倍数求和_3和5的整数倍数求和溢出
  10. 28 - JavaScript 特效:scroll家族和缓动动画