C. Building a Fence(范围判定)

news2024/11/20 1:37:28

Problem - 1469C - Codeforces

你想建造一个由n个相等部分组成的栅栏。所有部分的宽度都等于1,高度都等于k。

不幸的是,篱笆下面的地面并不平坦。为了简单起见,你可以认为第i节下面的地面等于hi。

你应该遵循几个规则来建造围栏。

连续的部分应该有一个共同的边,长度至少为1。
第一节和最后一节应该站在相应的地面上。
中间的部分可以在地面上,也可以更高,但不能高于地面上的k-1(高度应该是整数)。
第一个测试案例中可能的栅栏之一(蓝色)。
是否有可能建造一个符合所有规则的围栏?

输入
第一行包含一个整数t(1≤t≤104)--测试案例的数量。

每个测试用例的第一行包含两个整数n和k(2≤n≤2⋅105;2≤k≤108)--栅栏的段数和每个段的高度。

每个测试案例的第二行包含n个整数h1,h2,...,hn(0≤hi≤108),其中hi是第i段下面的地面高度。

保证测试案例的n之和不超过2⋅105。

输出
对于每个测试案例,如果有可能建立符合所有规则的围栏,则打印YES。否则,打印NO。

你可以在任何情况下打印每个字母(例如,YES,Yes,yes,yEs都将被识别为肯定答案)。

例子
输入复制
3
6 3
0 0 2 5 1 1
2 3
0 2
3 2
3 0 2
输出拷贝

是的

注意
在第一个测试案例中,可能的围栏之一在图片中显示。

在第二个测试案例中,根据第二条规则,你应该在相应的地面上建造两个部分,由于k=3,h1=0,h2=2,所以第一条规则也得到了满足。

在第三个测试案例中,根据第二条规则,你应该把第一部分建在高度3上,第三部分建在高度2上。根据第一条规则,第二节应该至少在高度为2的地方(与第一节有一个共同的边),但是根据第三条规则,第二节最多可以建在高度为h2+k-1=1的地方。

题解:

我们维护一个范围l ~ r

l = max(l - k + 1,a[i])代表l可以是当前l往下k - 1格,但是肯定要大于等于地面

r = min(r + k -1,a[i] + k - 1),代表r可以是当前r往上k - 1格,但是肯定要小于等于当前地面往上k-1格

如果途中l > r说明肯定不成立,或者最后,a[i]不在l~r内也不成立

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<cstring>
#include<cmath>
#include<set>
using namespace std;
#define int long long
int h[200050];
void solve()
{
	int n,k;
	cin >> n >> k;
	for(int i = 1;i <= n;i++)
	cin >> h[i];
	int l = h[1],r = h[1];
	int f = 1;
	for(int i = 2;i <= n;i++)
	{
		l = max(l - k + 1,h[i]);
		r = min(r + k -1,h[i]+k - 1);
		if(l > r)
		{
			f = 0;
			break;
		}
	}
	if(h[n] < l||h[n] > r)
	f= 0;
	if(f)
	cout <<"YES\n";
	else
	cout <<"NO\n";
}
//5 2
//
signed main()
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);
//	cout.tie(0);
	int t = 1;
	cin >> t;
    while(t--)
	{

		solve();
	} 
}

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

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

相关文章

C++知识总结

1.C面向对象三大特征&#xff1a;继承、封装、多态。其中多态分为静态多态和动态多态。静态多态&#xff1a;重载&#xff0c;参数模板 动态多态&#xff1a;虚函数&#xff0c;强制转换。 2.static类型的变量存在静态存储区&#xff0c;初始值为0或者null 3.char *p“PCGAME”…

kubekey初期尝试安装 KubeSphere单机和多机避坑指南

kubekey初期尝试安装 KubeSphere单机和多机避坑指南 准备工作 请注意开始前工作确定各个软件版本情况&#xff0c;本文章要想阅读比较舒服请还得有些Go开发经验 CentOS 7.9 KubeKey v1.21 KubeSphere v3.2.1 Docker 和 Kubernetes 根据支持进行选择&#xff1a; 获取支持可以通…

【复盘】2022年度复盘

年度总结 今年的年度总结比之前写早了一点&#xff0c;主要在因为居家办公时间太久&#xff0c;正好有空就找点时间提前写一下总结复盘计划&#xff0c;说实话要是每月都写一次&#xff0c;我自己也做不到。今年这一年如果用两个字来形容的话&#xff0c;应该是坚定 工作篇 …

用树莓派4B安装gitlab,亲测可用~

最近成功在CentOS7上安装了gitlab&#xff0c;忽然想到是不是可以把吃灰的树莓派4B也装上gitlab&#xff0c;于是研究了一下&#xff0c;做个分享。 树莓派是4B 8G版本。本身装的是官方的64位系统。之前可能还装过一些乱七八糟的东西&#xff0c;这里就不提了。 上gitlab官网…

m基于GRNN广义回归神经网络的飞机发动机剩余寿命预测matlab仿真,训练集采用C-MAPSS数据集

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 GRNN建立在非参数核回归基础上&#xff0c;以样本数据为后验条件&#xff0c;通过执行诸如Parzen非参数估计&#xff0c;从观测样本里求得自变量和因变量之间的联结概率密度函数之后&#xff0c;…

mysql查询某字符串是否在某字段中精确查找是否存在和case when语法规则使用说明

mysql中函数find_in_set可以对字符串在某个字段中是否存在&#xff0c;如果存在则返回含有该查询项的所有记录 SELECT count(1) FROM contingency_plan_team_role WHERE find_in_set( 36, preview_task_ids); 查询结果&#xff1a; case when 进行分组判断 cas…

【数据结构与算法基础】青岛大学王卓老师

【数据结构与算法基础】 1. 学习笔记参考 《数据结构与算法基础》教学视频目录87师兄-B站课程《数据结构与算法基础》脑图 2. 学习章节 【青岛大学王卓】第1章_前言【青岛大学王卓】第2章_线性表【青岛大学王卓】第3章_栈和队列【青岛大学王卓】第4章_串、数组和广义表【青岛…

Python爬虫入门——BeautifulSoup库

一、前言 这篇来演示如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据。 update on 2016-12-28&#xff1a;之前忘记给BeautifulSoup的官网了&#xff0c;今天补上&#xff0c;顺便再补点BeautifulSoup的用法。 update on 2017-08-16&#xff1a;很多网友留言说U…

搜索(5):迭代加深、双向dfs

活动 - AcWing 算法竞赛进阶指南 一、迭代加深概述 dfs每次选定一个分支&#xff0c;直到抵达递归边界才回溯&#xff0c;这种策略有一定缺陷。当搜索树的某个分支情况非常多&#xff0c;并且问题的答案在一个较浅的分支上时&#xff0c;如果一开始就选错了分支&#xff0…

在宜宾,看见未来中国的产融平台样本

在被验证的京东西南数字化产融协同平台背后&#xff0c;恰证明着在京东这样的新型实体企业支持下&#xff0c;中国的区域产业经济已经出现星星之火&#xff0c;而这些星星之火正在帮助成千上万的企业走出固有的销售渠道和销售模型&#xff0c;成为新时代数字经济和产业经济的一…

单芯片快速以太网MAC控制器DM9000介绍

DM9000简介 DM9000是一款完全集成的和符合成本效益单芯片快速以太网MAC控制器与一般处理接口&#xff0c;一个10/100M 自适应的PHY 和4K DWORD 值的SRAM。它的目的是在低功耗和高性能进程的3.3V与5V的支持宽容。 DM9000 还提供了介质无关的接口&#xff0c;来连接所有提供支持介…

javaee之spring2

基于注解的IOC配置 一、先来说一下放在对象上面的注解 Component: * 作用&#xff1a;用于把当前类对象存入spring容器中 * 属性&#xff1a; * value&#xff1a;用于指定bean的id。当我们不写时&#xff0c;它的默认值是当前类名&#xf…

RabbitMQ 第一天 基础 5 Spring 整合RabbitMQ 5.2 Spring 整合 RabbitMQ【消费者】 5.3 小结

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第一天 基础5 Spring 整合RabbitMQ5.2 Spring 整合 RabbitMQ【消费者】5.2.1 消费者5.3 小结第一天 基础 5 Spring 整合RabbitMQ 5.2 Spring 整合 RabbitMQ【消费者】 5.2.1…

白话说Java虚拟机原理系列【第五章】:内存结构之堆详解

文章目录堆(Heap)对象在堆中的存储结构垃圾收集器详解对象存活判断算法引用的种类对象最终判定死亡之两次标记规则方法区的垃圾回收原则垃圾收集算法分代收集模型垃圾收集器对象分配原则垃圾收集触发方式垃圾收集器的参数异常前导说明&#xff1a; 本文基于《深入理解Java虚拟机…

大数据分析案例-基于逻辑回归算法构建垃圾邮件分类器模型

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【Django】第二课 基于Django超市订单管理系统开发

概念 本文在上一文之上&#xff0c;针对管理员&#xff0c;经理&#xff0c;普通员工身份的用户操作用户管理模块功能。 功能实现 1.普通员工登录系统后&#xff0c;对于用户管理模块不具备操作其他用户信息的权限。因此当普通员工登录后&#xff0c;弹出对话框提示用户。 2…

【Linux】Linux编辑器---vim的使用

等老了就养只柴犬&#xff0c;相依为命。 文章目录一、命令模式1.光标定位操作2.文本复制、粘贴、剪切、撤销3.文本编辑二、插入模式三、底行模式四、vim配置原理五、解决普通用户无法使用sudo提权一、命令模式 刚打开vim时&#xff0c;默认就是命令模式&#xff0c;命令模式的…

C++STL之string的使用

对于C语言中的字符串&#xff0c;我们只能使用char类型数组保存&#xff0c;并且是以\0结尾的. 操作起来非常不方便而且底层空间需要用户自己访问&#xff0c;非常造成容易越界访问. 这个时候&#xff0c;C的STL中的string类就很好解决了这些. 目录 string的使用 1.string…

mqtt的使用与二次封装

前提&#xff1a;先安装Mosquitto并启动服务&#xff0c;可使用mqttx进行接收发送的测试。 Mosquitto以配置启动命令 mosquitto -c mosquitto.conf -v原文链接&#xff1a;mqtt的使用 本文为测试使用固无账号密码&#xff0c;可在原文查看 封装后实现效果&#xff0c;加入一个…

LeetCode题解 16(15,22) 三数之和,括号生成

文章目录三数之和(15)代码解答:括号生成(22)代码解答:三数之和(15) 该题是让从1个数组中找到和为0的不重复的三个数,这次我们使用排序和指针的方法来解决 先将该数组从小到大进行排序 Arrays.sort(nums);我们需要遍历一遍该数组,同时我们还要去重的操作(例如[-1,-1,-1,2],这里面…