【24.2】【24.3】

2024-05-05 19:04
文章标签 24.3 24.2

本文主要是介绍【24.2】【24.3】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

【题解】2024牛客寒假算法基础集训营2

【题解】2024牛客寒假算法基础集训营3


Tokitsukaze and Slash Draw

思路:同于最短路板子题。在这道题学习了一下新的方法,时间复杂度优化了一个 log 且代码不再使用最短路算法使其更短。时间复杂度 O ( n × m ) O(n\times m) O(n×m)

博客:同余最短路的转圈技巧

AC代码:https://www.luogu.com.cn/paste/20a8rsrz


Tokitsukaze and Power Battle (easy)

思路:我开始的思路是把序列左移一位然后维护 p r e i − a i + 1 pre_i-a_{i+1} preiai+1 p r e i pre_i prei ,但这样应该比较麻烦。题解的思路是直接查询 s u m ( l , r ) − 2 × a r sum(l, r) - 2\times a_r sum(l,r)2×ar 。用线段树维护 p r e i − 2 × a i pre_i - 2\times a_i prei2×ai ,用树状数组维护 p r e i pre_i prei 即可。

hard版本是区间最大子段和的类似版,但写起来很麻烦。

AC代码:https://www.luogu.com.cn/paste/qs6ymoe6


Tokitsukaze and Min-Max XOR

思路:这题思路和上一场的01背包比较像。先套路的排序,然后枚举序列右端点,查询前缀中有哪些元素异或起来小于等于 k。

接下来,考虑 ≤ k \leq k k 这个条件,可以将其拆分为若干个区间(类似上场01背包),比如 x = 100110 x=100110 x=100110 ,拆分为 [ 100110 → 100110 ] , [ 100101 → 100100 ] , [ 100011 → 100000 ] , [ 0111111 → 000000 ] [100110\rightarrow100110],[100101\rightarrow100100],[100011\rightarrow100000],[0111111\rightarrow000000] [100110100110],[100101100100],[100011100000],[0111111000000] 。那么每个区间都有连续若干长度的最低位是可以任意的,那么区间可以表示为 [ 100110 ] , [ 1001 ( 0 ) ? ] , [ 100 ( 0 ) ? ? ] , [ ( 0 ) ? ? ? ? ? ] [100110],[1001(0)?],[100(0)??],[(0)?????] [100110],[1001(0)?],[100(0)??],[(0)?????] ,括号表示枚举的是哪一位,然后用 01trie 查询即可。

AC代码:https://www.luogu.com.cn/paste/jw2uul96




智乃的“黑红树”

思路:分层 bfs。之前也做过类似的题。

AC代码:https://www.luogu.com.cn/paste/nfg4lnll


智乃的相亲活动

思路:期望的线性性: E ( x + y ) = E ( x ) + E ( y ) E(x+y)=E(x)+E(y) E(x+y)=E(x)+E(y) ,与独立性无关。

另: E ( x y ) = E ( x ) × E ( y ) E(xy)=E(x)\times E(y) E(xy)=E(x)×E(y) ,当且仅当两者独立。

AC代码:https://www.luogu.com.cn/paste/vll4areq


chino’s bubble sort and maximum subarray sum(hard version)

思路:考虑获得最大子段和的过程:若干个元素右移,若干个元素左移,且两者之间是前者在左后者在右,有分界点。然后这样的话,可以考虑维护每一个前缀和后缀的相关值。

定义 d p ( i , j , k ) dp(i, j, k) dp(i,j,k) 表示前缀 i i i 中,最终参与到最大子段和的长度为 j j j ,且交换次数恰好为 k k k 。如果 a i a_i ai 参与到最大子段,那么不需要交换出 ( i − j , i ] (i-j,i] (ij,i] 这个区间,即从 d p ( i − 1 , j − 1 , k ) dp(i-1,j-1,k) dp(i1,j1,k) 转移。否则,需要交换出去,交换次数为 j j j ,且将 ( i − 1 − j , i − 1 ] (i-1-j,i-1] (i1j,i1] 这个区间交换到了 ( i − j , i − 1 ] (i-j,i-1] (ij,i1] ,即从 d p ( i − 1 , j , k − j ) dp(i-1,j,k-j) dp(i1,j,kj) 转移。

最后统计答案的步骤比较麻烦,没写出来。

未AC代码:https://www.luogu.com.cn/paste/4wiq21n8

这篇关于【24.2】【24.3】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/962440

相关文章

2024 全新版本 Altium Designer 24.3.1 安装注册汉化教程

前言 大家好,我是梁国庆。 本篇带大家安装 AD 的全新版本——Altium Designer 24.3.1,以下简称 AD24。 时间:2024年4月5日。 获取 AD24 安装包 我已将本篇所使用的安装包打包上传至百度云,扫描下方二维码关注「main工作室」,后台回复【0012】即可免费获取分享链接。 安装 AD24 1.找到并选择已下载好的“ AD24 安装包 ”的压缩包,

算法导论——24.3 Dijkstra最短路径算法java实现

介绍 迪杰斯特拉算法是由荷兰计算机科学家 狄克斯特拉于1959 年提出的,因此又叫 狄克斯特拉算法。是从一个顶点到其余各顶点的 最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 Dijkstra算法是典型的 算法。 Dijkstra算法是很有代表性的 算法。Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一

算法导论——24.2 DAG最短路径算法java实现

介绍 Bellman-Ford算法能在更普遍的情况下(存在负权边)解决单源点 最短路径问题,但是对于DAG,可以有更加简化的算法去计算,使得时间复杂度更低。 针对DAG的特点,以拓扑排序为基础,提出了解决DAG的最短路径问题的简单算法。通过理论分析,表明该算法具有理想的运算效率,其中,解决单源点问题的运算时间与E成正比,解决所有点对问题的运算时间与VE成正比。拓扑排序策略对于此类最短路径问题

24.3 分布式综合应用

24.3 分布式综合应用 1. 分布式事务1.1 分布式事务1.2 分布式事务方案1. 2pc2. 其他方案 1.3 Seata分布式事务框架:基于2pc1. 简介2. 启动seata服务 1.4 微服务事务案例分析1. 代码分析2. 基于Seata改造 2. 分布式锁2.1 简介 3. RabbitMQ应用

前端知识学习24.3.19

如何反转一个链表 三个指针,一个指向头节点,另外两个用来指向头节点前后两个节点的位置 // 定义链表节点类class ListNode {constructor(val) {this.val = val;this.next = null;}}// 定义反转链表函数function reverseLinkedList(head) {let prev = null;let curren

前端面试练习24.3.16

为什么要在样式初始化的时候设置{margin,padding}为0 在样式初始化时设置 {margin, padding} 为0,是为了确保网页在不同浏览器和设备上的显示效果更加统一,并且减少浏览器默认样式对页面布局的影响。这样做的主要原因包括: 消除浏览器默认样式的影响:不同的浏览器对于 HTML 元素的默认样式可能存在差异,如 <body>、<ul>、<li> 等元素在不同浏览器上的默认

抖音斑马观察室-1-24.3.9

新人学规矩少走弯路 登上顶峰,你才有改变规则的资格! 开会摆放席位,要注意领导级别高低。开会发言顺序同样道理。 领导开会说强调XX,这时要拿笔记录。关起门的话,就不用记录了。 会后要形成会议纪要,但注意不是领导说什么就记录什么,比如领导开会举了一个例子,他出去吃饭老板拿烟送他,这什么要记录什么?要记录的事言外之意,比如相关执法部分要加强廉政教育,强化服务意识,畅通监督渠道,构建清清白白的政

Rtos day3 24.3.8

作业:1.总结任务的调度算法,把实现代码再写一下,2.总结任务的状态以及是怎么样进行转换的   1. 假设优先级:task01<task02<task03void StartDefaultTask(void *argument){for(;;){myTask03Handle=osTHreadNew(StartTask03,NULL,&myTask03_attributes);myTask01

前端面试练习24.3.6

前言: 今天就是复习回顾一下websocket,之前有个AI项目使用到了这个,有点久远了,回顾一下大致过程和难点。 一些知识点: 1.单工,半双工,全双工 单工: 数据只能沿着一个方向传递,例如电视广播等。 优点:实现简单 缺点:传输效率低 半双工: 数据可以在双方之间进行传递,但是不能同时进行,必须有个 发送/接收 角色的转换,一方发送完成另一方才能发送。比如对讲机。 全双工: 数

前端面试练习24.3.5

webpack相关 项目使用webpack流程 进入一个初始化好的vue项目下载安装webpack相关依赖包/插件 npm install --save-dev webpack webpack-cli webpack-dev-server安装一些相关的loader,比如vue-loader,babel-loader,css-loader等创建webpack.config.js文件,进行相关配