Educational Codeforces Round 132 (Rated for Div. 2) D. Rorororobot
D. Rorororobot
题意
有一个n
行m
列的网格,每一列上 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相关推荐
- 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 ...
- Educational Codeforces Round 132 (Rated for Div. 2) C. Recover an RBS
翻译: 括号序列是只包含字符"("和")"的字符串.正则括号序列(或简称RBS)是一个可以通过在序列的原始字符之间插入字符"1"和" ...
- Educational Codeforces Round 132 (Rated for Div. 2) C,D+AC自动机
D. Rorororobot 题意:n*m的矩阵,从下到上是1到n行,从左到右是1到m列,每列从下到上有连续x个单元格损毁,如果给出起点和终点坐标,并且规定每次只能向同一个方向移动k次,是否能够从起点 ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- 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这个时候两 ...
- 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, ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
最新文章
- 吴恩达深度学习笔记(105)-人脸识别之面部验证与二分类
- linux下远程控制继电器,更智能的电脑远程开关机-基于继电器
- Docker知识4:如何在win10下安装 / 使用ubuntu ?应用WSL2
- mysql之ALTER COLUMN、CHANGE COLUMN、MODIFY COLUMN的区别
- Elasticsearch集群Red,分片无法恢复:cannot allocatebecause all found copies of the shard are either stale or c
- 梯度下降法优化目标函数_如何通过3个简单的步骤区分梯度下降目标函数
- 90.不用其它变量进行变量互换
- 广州驾考科目三电子考16日全面启动
- python 排列组合_Python计算生态jieba库和random库的综合运用之爬山篇
- 阶段3 3.SpringMVC·_01.SpringMVC概述及入门案例_03.入门程序之需求分析
- @JsonFormat和@DataFormat注解解决前后端日期格式一致性问题
- matlab光学原理仿真应用衍射,光学衍射仿真实验系统
- 推荐给DBA的Oracle书籍
- 通过S2B2C供应链电商平台网站解决方案,实现大宗商品万亿产业数字化转型
- Java中OutOfMemoryError(内存溢出)和Tomcat进程假死崩溃
- 软件漏洞及缓冲区溢出
- Linux编译命令 make -j8 的意义
- Windows上那些值得推荐的良心软件-整理
- java中关于递增和递减两种方式的差别
- 网页分享到微信、微博、QQ,QQ空间,豆瓣等等函数的封装