一些灵感 pt.1

news/2025/3/10 21:48:46/文章来源:https://www.cnblogs.com/rizynvu/p/18763715

只是日常中冒出的一些灵感,仅作记录,可能背后有什么高深的思想,但我不太会。
原本想写在个本子上的,但是 whk 作业多回宿舍又摆烂了,就只能写在这里了。


处理决策单调性问题时,如果转移时是 \(f_i + \operatorname{cost}(i, j) \to f_j\),且 \(\operatorname{cost}(i, j)\) 不满足啥四边形不等式。
(虽然我也不知道不满足四边形不等式什么样的 \(\operatorname{cost}\) 才能决策单调,有点疑惑。)

先考虑如果转移是 \(f_i + \operatorname{cost}(i, j) \to g_j\) 时。
一个做法是考虑函数 \(\operatorname{solve}(li, ri, lj, rj)\) 表示对于 \(j\in [lj, rj]\),其最优的 \(i\) 一定在 \([li, ri]\) 中。
那么就可以先得到 \(mid = \frac{lj + rj}{2}\) 时最优的 \(i\),记为 \(p\)
那么按照决策单调性,对于 \(j < mid\),最优的 \(i\) 一定 \(\le p\);对于 \(j > mid\),最优的 \(i\) 一定 \(\ge p\)
所以可以递归下去 \(\operatorname{solve}(li, p, lj, mid - 1), \operatorname{solve}(p, ri, mid + 1, rj)\)

如果不熟悉这个

时间复杂度:只会递归 \(\log n\) 层,每一层的 \([lj, rj]\) 对应的 \(ri + li - 1\) 的和是 \(\mathcal{O}(n)\) 的,所以是 \(\mathcal{O}(n\log n)\) 的。

优势:可以类似莫队的指针移动 \((i, j)\)\(i\to i \pm 1, j\to j \pm 1\))来动态维护 \(\operatorname{cost}(i, j)\)
复杂度分析:

  • 对于 \(j\) 的移动,考虑强化到对于每个 \([lj, rj]\) 的移动都要走过 \(mid\to mid_{lj, mid - 1}\to mid_{mid + 1, rj}\to mid\),那么这个是关于 \(j\) 区间长度线性的,所以是 \(\mathcal{O}(n\log n)\) 的。
  • 对于 \(i\) 的移动,首先对于 \([li, ri]\) 的移动依然是 \(\mathcal{O}(n\log n)\) 的,对于递归两个儿子中间的 \(\operatorname{solve}\to \operatorname{solve}\) 的这个过程,最坏情况下是 \(li\to p\) 的移动,但这依然关于 \(i\) 区间长度线性,所以也是 \(\mathcal{O}(n\log n)\) 的。

于是同时可以借用 cdq 的思想,外层再套一个 \(\operatorname{solve2}(l, r)\)
\(mid = \frac{l + r}{2}\),先递归 \(\operatorname{solve2}(l, mid)\) 得到 \(f_{l\sim mid}\) 的信息,然后调用 \(\operatorname{solve}(l, mid, mid + 1, r)\),就可以处理出 \(f_{l\sim mid}\to f_{mid + 1 \sim r}\) 的转移,然后再递归下去 \(\operatorname{solve2}(mid + 1, r)\)

复杂度:\(\mathcal{O}(n\log^2 n)\),分析可以直接把每一个 \(\operatorname{solve}(l, mid, mid + 1, r)\) 的时间开销加起来。

可能的优势:依然可以使用莫队的思想维护 \(i, j\) 指针得到 \(\operatorname{cost}(i, j)\)
复杂度分析:

  • 对于 \(\operatorname{solve}(l, mid, mid + 1, r)\) 依然是一样的分析,此处略过。
  • 对于 \(\operatorname{solve2}\to \operatorname{solve2}\) 中间的指针变化,可以直接考虑把前面一个 \(\operatorname{solve2}\) 的贡献清空,这个的复杂度是关于区间长度线性的,所以只是 \(\mathcal{O}(n\log n)\) 的。

感觉可能是有点用的?


我在 NOIP 2024 考场上发现的东西,看起来网上还没有这些东西?

整体二分的核心思想其实是假设知道了 \(q\) 个询问各自的答案 \(ans_i\)
那么对于询问 \(i\),只需要 \(\operatorname{check}\) 在一个 \([1, ans_{\max}]\) 的线段树上从 \(ans_i\) 开始往上爬的结点。
于是就只需要 \(\operatorname{check}\) 一共 \(\mathcal{O}(q\log ans_{\max})\) 个位置了。

一般的写法其实是就类似的在这个线段树上递归,如果访问到一个无用节点(不存在询问的答案在这个区间中)就退出。

实际上可以抛弃这个递归的写法,一个更好看的写法是考虑逐层处理,一层一层从左到右扫过这一层的节点并 \(\operatorname{check}\)

因为有点摆所以我直接放核心代码吧
   bool flag;do {for (int i = 1; i <= mxans; i++) qmid[i].clear();for (int i = 1; i <= q; i++) {if (ansl[i] <= ansr[i]) {int mid = ansl[i] + ansr[i] >> 1;qmid[mid].push_back(i);}}init();for (int a = 1; a <= mxans; a++) {update(a);for (int i : qmid[a]) {if (check(i, a)) ans[i] = a, ansl[i] = a + 1;else ansr[i] = a - 1;}}flag = false;for (int i = 1; i <= q; i++) {flag |= ansl[i] <= ansr[i];}} while (fl);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/896998.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.1.1 线性回归的基本元素

看看批量梯度下降和小批量梯度下降的图形,与我们的理解是相符的注意到小批量梯度下降不是严格单减的,只是趋势是单调减少的(图中的纵轴Cost指的是对于整个训练数据的损失) 每次的批量的大小显然是一个超参数。当批量大小为\(1\)的时候叫做随机梯度下降,当批量大小为\(m\)的…

报错

SSM整合报org.springframework.beans.factory.NoSuchBeanDefinitionException 显示没有找到serviceImpl对应的bean,但@autowired显示正常原因:web.xml文件中没有配置监听器ContextLoaderListener,导致web服务器启动后,没有读取Spring的配置文件,使得bean没有注入到Spring的…

ssh登录ubuntu后终端不显示颜色

1、在 ~/.bashrc 文件找到 “#force_color_prompt=yes”,去掉前面的注释; 2、在 ~/.bash_profile文件种添加以下脚本,并执行 “source ~/.bash_profile”# if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$…

Echarts圆环图实现进度条末尾带一个方块的效果

效果这样 直接上代码吧 <template><div ref="chartDom" style="width: 260px; height: 460px; background-color: white"></div> </template><script setup lang="ts"> // import { useI18n } from vue-i18n // i…

CF2068E. Porto Vs. Benfica

Porto Vs. Benfica 翻译自官方题解。我们首先做一些定义,这将帮助我们: 定义。 用 \(f(v)\) 表示支持者俱乐部从顶点 \(v\) 出发,想要到达顶点 \(n\) 所需的最少道路数,且警察仍然可以封锁恰好一条道路。 因此,\(f(1)\) 是问题的答案,且 \(f(n) = 0\)。 定义。 用 \(g(v,…

使用 Power Automate发送图文并茂的Teams消息

前言最近,有朋友使用Automate发送Teams消息,发现如果图片在SharePoint中,发送的时候因为认证的问题图片没办法显示。其实,我们可以将图片转换成Base64流进行引用,就能正常的显示了。正文1.我们新建一个Automate Flow,如下图:2.然后,添加Teams操作,如下图:3.消息我们需…

006TypeScript开发实战

一、全家桶-状态管理 状态管理的选择 vuex:目前依然使用较多的状态管理库 pinia:强烈推荐,未来趋势的状态管理库(用这个)1、 安装:npm install pinia 安装完成 2、新建文件夹 这里这样写 这里引入pinia 新建文件 这样写 这里引用一下 可以看到页面上 点击之后变成

《Python极客项目编程(第2版)》 | PDF免费下载 | epub free download

本书并不介绍Python语言的基础知识,而是通过一系列有趣的项目,展示如何用Python解决各种实际问题,以及如何使用一些流行的Python库。点击下载书籍信息 作者: [美] 马赫什文基塔查拉姆(Mahesh Venkitachalam) 出版社: 人民邮电出版社 原作名: Python Playground: Geeky Pro…

课堂教学质量评价分析系统 AI+教育

课堂教学质量评价分析系统的核心技术基于YOLOv11和CNN算法,课堂教学质量评价分析系统检测到的行为数据(如玩手机、举手、睡觉、交头接耳、趴桌子、行走运动)和表情数据(如开心、厌恶、愤怒、悲伤、沮丧、恐惧、无表情)会被传递到情感模型进行进一步分析。同时,系统还会结…

04. 串口通信

一、串口通信简介串口通信是一种设备间常用的串行通信方式,串口按位(bit)发送和接收字节。串口通信的数据包由发送设备的 TXD 接口传输到接收设备的 RXD 接口。在串口通信的协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式…

【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享

问题描述 当在AKS中遇见复杂的网络问题,想要进入到特定的POD中来抓取网络文件包进行分析。特分享抓取网络包的方法!操作步骤 第一步:使用kubectl get pods命令确认问题Pod所在的Node 第二步:使用node shell登录到相应node上 kubectl node-shell <node name> 第三步:…

App虚拟机环境搭建

App虚拟机环境搭建 在uniapp的开发环境中,我想要搭建一个平台完成对于app的开发,所以要配置app的基本环境和安装虚拟机 虚拟机安装 这里使用Mumu虚拟机.直接从官网下载然后傻瓜式安装https://mumu.163.com/搭建环境 主要是给虚拟机的接口和abd.exe文件的地址找到,配置到HBuilde…