D. Rorororobot(线段树寻找区间最大值)

news2025/1/10 23:47:19

Problem - 1709D - Codeforces

 

有一个网格,由n行和m列组成。行的编号是从1到n,从下到上。列从左至右编号为1至m。第i列的底部ai单元被封锁(第1,2,...,ai行的单元),其余n-ai单元没有被封锁。

一个机器人正在穿越这个网格。你可以向它发出指令--向上、向右、向下或向左移动。如果机器人试图移动到被封锁的单元或网格外,它就会爆炸。

然而,机器人是坏的--它对每个收到的命令都要执行K次。因此,如果你告诉它向上移动,例如,它将向上移动k次(k个单元)。在机器人执行当前的命令时,你不能向它发送命令。

你会被问到关于机器人的q个问题。你能给机器人发送任意数量的命令(可能是零),使它从起始单元到达终点单元,并考虑到它执行了每条命令的k次?

机器人必须在终点单元停下来。如果它在执行命令时访问了终点单元,则不算数。

输入
第一行包含两个整数n和m(1≤n≤109;1≤m≤2⋅105)--网格的行数和列数。

第二行包含m个整数a1,a2,...,am(0≤ai≤n)--第i列底部被封锁的单元格的数量。

第三行包含一个整数q(1≤q≤2⋅105)--查询的数量。

接下来的q行各包含五个整数xs,ys,xf,yf和k(a[ys]<xs≤n;1≤ys≤m;a[yf]<xf≤n;1≤yf≤m;1≤k≤109)--开始单元的行和列,结束单元的行和列以及每个你命令被执行的次数。每个查询的开始和结束单元格都没有被屏蔽。

输出
对于每个查询,如果你能向机器人发送任意数量的命令(可能是零),使其从起始单元到达终点单元,给定它执行每个命令的次数为k,则打印 "YES"。否则,打印 "NO"。

例子
输入复制
11 10
9 0 0 10 3 4 8 11 10 8
6
1 2 1 3 1
1 2 1 3 2
4 3 4 5 2
5 3 11 5 3
5 3 11 5 2
11 9 9 10 1
输出拷贝

拒绝

没有

题解:

如果想要起点可以到终点,首先肯定要保证,横坐标差值与纵坐标差值都是k的倍数,

其次我们知道,有些点我们是去不了的,所以我们应该找到起点与终点之间,最大的封锁单元是多少,看看起点最多可以往上走到哪,如果小于最大封锁单元说明也走不到终点

#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stack>
#include<string>
#include<map>
#define int long long
using namespace std;
typedef pair<int,int> PII;
int n,m;
struct node
{
	int l,r,mx;
}tre[1000060];
int a[200050];
void pushup(int root)
{
	tre[root].mx = max(tre[2*root].mx,tre[2*root+1].mx);
}
void build(int root,int l,int r)
{
	tre[root] = {l,r,0};
	if(l == r)
	{
		tre[root].mx = a[l];
		return ;
	}
	int mid = (l+r)/2;
	build(root*2,l,mid);
	build(root*2+1,mid+1,r);
	pushup(root);
}
int query(int rt,int l,int r)
{
	if(tre[rt].l >= l&&tre[rt].r <= r)
	return tre[rt].mx;
	int mid = (tre[rt].l + tre[rt].r)/2;
	int s = 0;
	if(mid >= l)
	{
		s = query(2*rt,l,r);
	}
	if(mid < r)
	s = max(s,query(2*rt+1,l,r));
	return s;
}

void solve()
{
	cin >> n >> m;
	for(int i = 1;i <= m;i++)
	cin >> a[i];
	build(1,1,m);
	int q;
	cin >> q;
	while(q--)
	{
		int x1,y1,x2,y2,k;
		cin >> x1 >> y1 >>x2 >>y2 >>k;
		int f = 1;
		if(abs(y1-y2)%k)
		f = 0;
		if(abs(x1-x2)%k)
		f = 0;
		int mx = query(1,min(y1,y2),max(y1,y2));
		int u = (n-x1)/k*k + x1;
		if(mx >= u)
		f = 0;
		if(f)
		cout<<"YES\n";
		else
		cout<<"NO\n";
	}
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
    int t = 1;
//    cin >> t;
    while(t--)
    {
        solve();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/160443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制冷设备远程监控解决方案

大中型工业制冷设备方面在国内发展还是处在一个发展期&#xff0c;前景广阔&#xff0c;在船舶行业&#xff0c;大型化&#xff0c;个性化&#xff0c;大冷量化是趋势&#xff0c;在石油石化领域&#xff0c;工艺分离、结晶浓缩、提纯催化需求低温&#xff0c;而在建筑领域&…

Vue+element 实现影响榜功能

目录 一、英雄榜实现 1、引入element Lib 和VUE 2、设置滚动条动态显示 1&#xff09;设置对应的VUE参数名&#xff1a;scrollHiddenVar 2&#xff09;VUE data定义 3&#xff09;mounted 设置鼠标监听事件 4&#xff09;监听方法 3、设置element Table 4、table 数组…

CentOS 7 升级 GCC/G++ 版本

CentOS 7官方源的 GCC 最新版本是 4.8.5&#xff0c;该版本发布于2015年&#xff0c;年代久远且不支持高版本的 C 编译了&#xff0c;因此有必要安装高版本的 GCC。   红帽&#xff08;RedHat&#xff09;中拥有多个已经编译好了的高版本 GCC&#xff0c;但未更新到 base 和 …

再说多线程(四)——Semaphore类

Semaphore提供了更精细化的多线程控制&#xff0c;如果你看过上一节的Mutex介绍&#xff0c;那么你应该很容易理解Semaphore类。我们直接先以例子开头&#xff0c;然后在介绍这个类。1.Semaphore实例看下面的代码&#xff1a;using System; using System.Threading;namespace S…

【爪洼岛冒险记】第3站:任务1:学会int和String之间的转换;任务2:将Java运算符全部收入囊中~ 任务3:拿下Java中的类型提升

&#x1f331;博主简介&#xff1a;是瑶瑶子啦&#xff0c;一名大一计科生&#xff0c;目前在努力学习C进阶,JavaSE。热爱写博客~正在努力成为一个厉害的开发程序媛&#xff01; &#x1f4dc;所属专栏&#xff1a;爪洼岛冒险记 ✈往期博文回顾:【爪洼岛冒险记】第2站&#xff…

Allegro172版本如何快速打开和关闭层面操作指导

Allegro172版本如何快速打开和关闭层面操作指导 在做PCB设计的时候,打开和关闭某个层面是非常频繁的操作,尤其是丝印等等层面。 Allgeo升级到了172版本的时候,可以将常用的层面添加到Visibility菜单里,就不需要频繁打开颜色管理器打卡和关闭层面了,如下图 具体操作如下 打…

常见锁策略,CAS,synchronized原理

1.常见锁策略锁策略不仅仅局限于java,任何与"锁"相关的话题(操作系统,数据库...),都会涉及到锁策略,这些策略是给锁的实现者用来参考的1.1乐观锁vs悲观锁这个不是两把具体的锁.而是两类锁,是在锁冲突的概率上进行区分的乐观锁指的是预测锁竞争不是很激烈(做的工作相对…

Ambari2.7.5安装Flink1.14

文章目录下载Flink配置安装源下载ambari-flink-service服务修改配置文件创建用户和组重启Ambari登录Ambari安装Flink提交Flink任务Flink 直接单独提交到 On Yarn指定Flink在Yarn跑的容器运行Flink异常异常1异常2异常3下载Flink配置安装源 wget https://archive.apache.org/dis…

Goby+AWVS 联动

系列文章 AWVS安装与激活 AWVS扫描Web应用程序 AWVS扫描报告分析 GobyAWVS 联动 1.Goby简介 Goby是针对目标企业梳理最全面的工具&#xff0c;同构goby可以清晰的扫描出ip地址开放的端口&#xff0c;以及端口对应的服务&#xff0c;于此同事会根据开放的端口及应用进行实战…

分享116个ASP源码,总有一款适合您

ASP源码 分享116个ASP源码&#xff0c;总有一款适合您 116个ASP源码下载链接&#xff1a;https://pan.baidu.com/s/1LEs24-feWjvhac6vzyVecg?pwdnosx 提取码&#xff1a;nosx 下面是文件的名字&#xff0c;我放了一些图片&#xff0c;文章里不是所有的图主要是放不下...&am…

2.线性表

##线性结构 基本特点&#xff1a;结构中各元素之间满足线性关系。 线性关系&#xff1a;数据元素之间存在一对一的关系 1.存在唯一的开始元素 2.存在唯一的终止元素 3.除了开始元素和终止元素&#xff0c;其他元素均有且仅有一个直接前驱元素和一个直接后驱元素。 所有元素可排…

Sass进阶指南 -- 写出更优雅的样式表

我以为已经会了&#xff0c;之前在公司写项目基本都是用sass写样式&#xff0c;十分顺手。直到有段时间&#xff0c;我准备参考Element Plus来设计自己组件库的工程结构&#xff0c;看到Element Plus那些优雅的sass用法时&#xff0c;我开始为我的浅薄和无知感到羞愧。这便开始…

Python学习笔记——集合

集合&#xff08;set&#xff09;是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合&#xff0c;注意&#xff1a;创建一个空集合必须用 set() 而不是 { }&#xff0c;因为 { } 是用来创建一个空字典。创建格式&#xff1a;parame {value01,value02,..…

LeetCode[313]超级丑数

难度&#xff1a;中等题目&#xff1a;超级丑数 是一个正整数&#xff0c;并满足其所有质因数都出现在质数数组 primes中。给你一个整数 n和一个整数数组 primes&#xff0c;返回第 n个 超级丑数 。题目数据保证第 n个 超级丑数 在 32-bit 带符号整数范围内。示例 1&#xff1a…

C++ 类和对象(三)

类和对象&#xff08;一&#xff09; 类和对象&#xff08;二&#xff09; 日期类 目录 一. 再谈构造函数 1.构造函数体赋值 2.初始化列表 3.隐式类型转换与explicit关键字 4.C11优化 二. static成员 1.概念 2.特性 三. 友元 1.友元函数 2.友元类 四. 内部…

Java 如何设计一款小游戏详细讲解(二)

继续上面(一)&#xff0c;Java 如何设计一款小游戏详细讲解(一)步骤步骤一接下来我们主要完成GameJFrame&#xff0c;就是拼图游戏的界面及代码。这里接下来完成菜单的设置&#xff0c;将主界面的代码放到一个方法中&#xff0c;像下面这样&#xff0c;接下来我们书写菜单的代码…

基于Python实现种差值方法(完整代码详细教程)

三种插值方法都是使用Python自己实现的。1.1 最近邻插值寻找每个中心点周围的八个点中有无未丢失的点&#xff0c;如果有的话就赋值为第一个找到的点&#xff0c;如果没有就扩大范围再次寻找&#xff0c;在最大范围内都找不到的话就跳过。1.2 双线性插值使用解方程的方法求解&a…

(十八)Threads异步和多线程(Thread、Threadpool、Task)-语言进阶2

Threads异步和多线程-语言进阶2一、Thread1. 线程启动2. 线程等待3.前台线程/后台线程4.扩展thread封装回调二、Threadpool1.线程池2.线程池使用3.ManualResetEvent 线程池等待三、Task1. Task启动方式2.waitall 、waitany1.waitall2.waitany3.WaitAll、waitany场景4. 应用&…

Spring为什么这么火 之 Spring的创建及存储、获取Bean对象

目录 1、创建Spring项目 1.1、创建一个Maven项目 1.2、添加Spring框架支持 1.3、添加启动类 2、存储Bean对象 2.1、创建Bean对象 2.2、将Bean对象注册到Spring容器中 3、获取、使用Bean对象 3.1、得到Spring上下文对象 使用ApplicationContext作为Spring的上下文 【更…

服务器相关命令(docker相关)

一:安装docker 之前安装过旧版本&#xff0c;使用以下命令可以卸载(整个copy过去): yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-e…