AT_agc017_b 题解

洛谷链接&Atcoder 链接

本篇题解为此题较简单做法,请放心阅读。

1|0题目简述

一共有 n 个格子,给定两个整数 A,B 分别位于第 1 和第 n 格,中间有 n2 个空格。询问是否存在一种填数方案满足任意相邻两个数之差的绝对值在 [C,D] 之间。

依次输入 n,a,b,c,d

若能,输出 YES;反之输出 NO

2|0思路

遇事不决先看数据范围,发现数据范围 3N5×105,那么时间复杂度在 O(N) 以内就可以接受,本篇题解就详细解释一下 O(N) 的算法。

首先可以想到 O(N) 的复杂度就是遍历 N,可以想到枚举在 A,B 之间填了 i 个数,从 0N2 遍历即可,遍历时进行判断,如果满足要求可直接输出 YES,否则遍历完后输出 NO

接着可以先把区间 [C,D] 转化为区间 [0,DC],那么判断条件就需要判断 C合法性及可行性

B(2×(i+1)N)×C

接着可写出判断条件的边界条件,首先是最大值即右区间,通过右区间 DC 很容易得出:

A+i×(DC)+D

以及左区间

A+(N2i)×(CD)+C

如果合法C 在此区间内则输出 YES,否则在遍历后输出 NO

注意:因为均为闭区间所以需是 而不是 <

经过以上分析及转化,很容易即可得出代码了。

提交记录

The End!


__EOF__

本文作者So_noSlack
本文链接https://www.cnblogs.com/So-noSlack/p/17582280.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   So_noSlack  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示