【UNR #6 D】小火车(折半搜索)(二分)
小火车
题目链接:UNR #6 D
题目大意
给你一个序列,你要构造一个只有 0,1,-1 的序列,使得两个序列每一项乘起来的和为 p 的倍数。
其中保证 p 小于 2^n,n 为序列长度。
思路
首先由一个 的暴搜。
考虑 ,那我们会发现如果你就看 ,如果搜到两个结果,那我们就可以第一个结果减去第二个结果(那样就会有 ),那就可以构造出方案。
那如果没有答案,那 个全部都要不一样的,但是只有 个位置,所以是一定有答案的。
然后考虑通过这个来搞,那问题就是如何找到重复的位置 。
考虑 为 中有多少个是在 之间。
然后因为 ,所以 和 之间一定有一个成立,不然大的就不成立,那我们就可以通过这个二分出 的位置,然后就可以找到方案了。
然后考虑怎么求,直接 肯定不行,考虑到 是 ,于是可以折半搜索把两边的情况搜出来,然后双指针就可以找到结果了。(其实一个是走的指针,另一个维护的指针是一个区间)
(然后注意是模 ,所以你要看 和 的结果的和)
代码
__EOF__

本文作者:あおいSakura
本文链接:https://www.cnblogs.com/Sakura-TJH/p/UNR_6_D.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Sakura-TJH/p/UNR_6_D.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现