首页 > 其他分享 >一个经典的类欧问题

一个经典的类欧问题

时间:2022-12-04 12:55:27浏览次数:36  
标签:lfloor frac ai dfrac bmod rfloor 问题 类欧 经典

做胡策的时候遇到了这样的问题:

求:

\[\max_{i=0}^n \{(ai+b) \bmod c\} \]

一个简单的方法是:二分答案 \(mid\),然后转化为计算:

\[\sum_{i=0}^n [(ai+b)\bmod c\ge mid]=\sum_{i=0}^n \lfloor\dfrac{ai+b+(c-mid)}{c}\rfloor-\lfloor\dfrac{ai+b}{c}\rfloor \]

分别使用类欧计算,复杂度 \(O(\log^2 c)\)。

事实上可以做到 1log:

令 \(F(a,b,c,n)=\max\limits_{i=0}^n \{(ai+b) \bmod c\},G(a,b,c,n)=\min\limits_{i=0}^n \{(ai+b) \bmod c\}\),尝试类欧:

边界:\(F(a,b,c,0)=F(0,b,c,n)=G(a,b,c,0)=G(0,b,c,n)=b\bmod c\)。

考虑两种转移:当 \(a\) 较大时,有 \(F(a,b,c,n)=F(a\bmod c,b\bmod c,c,n)\),\(G\) 亦然。

当 \(c\) 较大时,我们尝试交换 \(a,c\) 的地位。

若 \(\dfrac{ai+b}{c}=j\cdots k\),则最大的 \(i\) 满足 \(i=\lfloor\dfrac{c(j+1)-b-1}{a}\rfloor\)

\[F(a,b,c,n)=\max_{i=0}^n \{(ai+b) \bmod c\}\\ =\max_{j=0}^{\lfloor\frac{an+b}{c}\rfloor} (a\lfloor\dfrac{c(j+1)-b-1}{a}\rfloor+b-cj)\\ =c-1-\min_{j=0}^{\lfloor\frac{an+b}{c}\rfloor}(c-1-a\lfloor\dfrac{cj+c-b-1}{a}\rfloor-b+cj)\\ =c-1-G(c,c-b-1,a,\lfloor\frac{an+b}{c}\rfloor) \]

注意到当 \(j\) 为 \(\lfloor\frac{an+b}{c}\rfloor\) 时对应的 \(i\) 不一定在 \([1,n]\) 内。因此正确的转移式是:

\[F(a,b,c,n)=\max((an+b) \bmod c,c-1-G(c,c-b-1,a,\lfloor\frac{an+b}{c}\rfloor-1)) \]

同样有 \(G(a,b,c,n)=\min(b,a-1-F(c,c-b-1,a,\lfloor\dfrac{an+b}{c}\rfloor-1))\)。

标签:lfloor,frac,ai,dfrac,bmod,rfloor,问题,类欧,经典
From: https://www.cnblogs.com/havzriu/p/16947180.html

相关文章

  • .NET点滴:说说Middleware构造中获取不到Scoped服务的问题
    “为什么中间件的构造函数里不能使用scope的生命周期类型啊?”,那就用实例来得到答案吧,先看小桂说的情况,是报错的:varbuilder=WebApplication.CreateBuilder(args);......
  • .NET点滴:说说Middleware构造中获取不到Scoped服务的问题
    “为什么中间件的构造函数里不能使用scope的生命周期类型啊?”,那就用实例来得到答案吧,先看小桂说的情况,是报错的:varbuilder=WebApplication.CreateBuilder(ar......
  • .NET点滴:说说Middleware构造中获取不到Scoped服务的问题
    “为什么中间件的构造函数里不能使用scope的生命周期类型啊?”,那就用实例来得到答案吧,先看小桂说的情况,是报错的:varbuilder=WebApplication.CreateBuilder(ar......
  • Spring循环依赖问题
    说明:  1.本文基于Spring-Framework5.1.x版本讲解  2.建议读者对创建对象部分源码有一定了解 概述这篇讲讲Spring循环依赖的问题,网上讲循环依赖的帖子太多太......
  • 记录一下markdown上传到博客图片不显示问题
    如标题所示解决方案:1.图片保存之本地,then一一上传2.直接去提交页面-->图片标题栏ctrl+shitf+a插眼:二者效率不太高,后期如碰到方法会补充......
  • maven项目中css无法渲染问题
    一.解决1.在spring-mvc.xml中配置(控制层)<!--视图解析器--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"><propert......
  • 关于i3-8100安装黑群晖无核显问题
    本人引导是1.04bds918+ 群晖版本6.2.31.操作方法https://www.zxbblog.com/?id=138(需要diskgeniuspro版本,去网上随便下一个)2.补丁下载地址:点我下载 提取码:kox4(DS......
  • 使用MapStruct 解决对象之间转换、深拷贝问题
    在日常开发中,我们会定义多种不同的Javabean,比如DTO(DataTransferObject:数据传输对象),DO(DataObject:数据库映射对象,与数据库一一映射),VO(ViewObject:显示层对象,通常是Web向模......
  • mysql字符集utf8和utf8mb4的使用问题
    一、MySQL中length()、char_length()的区别和用法char_length(str)计算单位:字符不管汉字还是数字或者是字母都算是一个字符length(str)计算单位:字节utf8编码:一个汉字三个字......
  • git合入代码过程中问题记录
    问题一、对远端仓库没有操作权限ERROR:Repositorynotfound.fatal:Couldnotreadfromremoterepository.定位思路1.检查git代码仓的公钥是否存在在github上仓......