B. Hemose Shopping codeforces 1592 B
题意中
x<=n<=1e5;
#设想n非常大
那x就没啥用了,如果一个数a,理应和b换,但是a与b之间的距离小于x,我们可以借助一个和a,b的距离大于x的变量作为中介;
#但是n再小一点,比如n==x,就一点也动不了了,除非本来就是合法的。
#那么在无穷大和x之间,有一个比较尴尬的地带
取n==2x,那么可以留出第一位和最后一位作为中介,
对于位置<x的数,可以用最后一位为中介;
对于位置>x的数,可以用第一位为中介;
如果n>2x,选择就更充裕了。
#在n<=2x和n>=x之间
上面找中介的思路也可以拓展:
设想在第一位的需要中介,那么我们可以找到距离它刚好为x的数,从这个数开始到结尾都是合法的,
想象位数往右挪~合法的区间越来越小了
直到某个数它找不到中介了...
在找不到之前,都可以拿最后一位来当中介。
因为是左右对称的,所以右边也同理。右边可以拿第一位来当中介。
那么除了两头,能换的都换了。(第一可以和最后一位换)
对于中间无论+x还是-x都超过边界的,除非本来有序,否则无解。
需要的知识:脑补能力,分类讨论;
分类:
思维题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)