「NOIP赛前冲刺」LG126T1 折线
1|0Solution
容易发现答案只有可能为 ,证明如下:
很明显答案不可能为 ,这里给出一种答案为 的满足条件的构造方案:
先找到一个点使得过这个点作一条平行 轴的线段,直线把所有点分成两部分(不包括直线上的点),两部分点的数量尽量平均分。
然后考虑把直线上的点分成两部分,容易发现两边点的数量之差最多为中间的点的数量,所以可以做出一条平行 轴的线段满足条件,再作一条平行 轴的线段,两条平行 轴的线段分开了两个部分,一条平行 轴的线段进行细微调整,可以看图理解:
:有的时候第一次竖着切时 次无法完成,但可以横着切,和上面同理。
所以题目转换成能判断否在 或 次内得到结果(否则就要四次)。
- 能否在 次得到结果
按照横坐标轴排序,求出对于某一时刻在这个点右侧的点的数量,若存在某一时刻使得答案为 代表可以,纵坐标的处理相同(既可能时横着切也可能是竖着切)。
- 能否在 次得到结果
注意到只有先向上再向右和先向右再向上两种情况符合条件(先向下或先向左的情况还有多拐一个弯,需要 次),先考虑第一种情况:
还是先按照横坐标排序,从右往左枚举横坐标,容易发现纵坐标的选择有单调性(往右的横线越往上,包含的区间内点更多),可以二分纵坐标,接着可以用树状数组求出这个区间内点的个数。
具体的,把当前横坐标的右边的点的纵坐标加到树状数组里(横坐标不断左移,故每个点只加了一次),然后查询小于等于二分的纵坐标的点的数量即可,若存在某一时刻使得答案为 代表可以,另一种情况同理,可以看图理解:
时间复杂度为 ,可以通过。
2|0Code
判断能否为 的一种情况:
判断能否为 的一种情况:
__EOF__

本文作者:Mr · Dog
本文链接:https://www.cnblogs.com/qinchenhao/p/16909235.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/qinchenhao/p/16909235.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类