CF EDU 169

news/2024/9/19 3:43:34 标签: 算法

CF EDU 169

A

  • 题意:

    一条线上给定 n 个点,询问是否能新插入一个点,使得这个点是距离这 n 个点都是最近的

  • 题解:

    n > 2 n > 2 n>2 时,无解

    n = 2 n = 2 n=2 时,直接插入到这两个点中间即可

B

  • 题意:

    总共 n n n 个房间,第 i i i 个房间与第 i + 1 i+1 i+1 个房间中间有一扇门,假如 A A A 可能在 [ l , r ] [l, r] [l,r] 中任意一个房间, B B B [ L , R ] [L, R] [L,R] 中任意一个房间,最少需要关闭几扇门才能保证两人不可能见面

  • 题解:

    如果两人所在区间不相交的话,关闭 1 扇门即可

    如果两人可能所在区间相交的话,相交区间的所有门必须关闭,最后判断一下边界即可

C

  • 题意:

    AliceBob 取数字,Alice 先手,Alice 取到的数字和为 ABob 取到的数字和为 BAlice 想最大化 A-BBob 想最小化 A-B,在游戏开始前 Bob 可以增大任意数字,但是总增加量不能超过 k,求 A-B 的最小值

  • 题解:

    每个人都尽量取剩下的最大的数字

    将数组排序,模拟取数字的过程,将最后结果减去 k 即可

    当有偶数个数字的时候,A-B 的最小值不会小于 0,奇数个数字的时候,A-B 的最小值不会小于原先所有数字的最小值

D

  • 题意:
    总共有四种颜色的门,每个城市会有两扇不同颜色的门,其中城市 ij 如果具有相同颜色的门,他们之间是互相可以到达的,所花费的价值是 ∣ i − j ∣ |i-j| ij,每次询问城市 x x x y y y 所花费的最小花费是多少

  • 题解:

    x x x y y y 具有相同颜色的门,最小花费就是 ∣ x − y ∣ |x-y| xy

    否则枚举所有与 x x x y y y 不一样的情况,找到 x x x 右边第一个满足条件的门和 y y y 左边第一个满足条件的门,直接处理即可

  • code

E

  • 题意:

    取石子游戏,若一堆石子有 x 个,只能从中取出 y 个,其中 gcd(x, y) 必须等于 1。给定多堆石子,第 i 堆有 a i a_i ai 个石子,问先手和后手谁能赢

  • 题解:

    SG函数

    考虑处理出来每个 a i a_i ai S G \rm SG SG 值。

    考虑 S G i \rm SG_i SGi,若 i i i 是质数,可以取任意 [ 1 , i − 1 ] [1, i-1] [1,i1] 个石子,所以 S G i = m a x { S G j } + 1 SG_i=max\{SG_j\}+1 SGi=max{SGj}+1

    i i i 不是质数,对于 i i i 的最小质因数 p p p p p p 的所有倍数都取不到,因此 S G i = S G p + 1 SG_i = SG_p + 1 SGi=SGp+1

    之后直接用 S G \rm SG SG 定理即可

F

  • 题意:

    给定一个数组 A,每次可以进行一下两种操作

    1. A i + A i + 1 A_i+A_{i+1} Ai+Ai+1 替换 A i A_i Ai A i + 1 A_{i+1} Ai+1
    2. A i A_i Ai 拆成两个数字的和并替换掉 A i A_i Ai

    f ( A ) f(A) f(A) 表示让 A A A 数组变成回文数组的最小次数,求 ∑ 1 ≤ l ≤ r ≤ n ( A [ l : r ] ) \sum\limits_{1\le l \le r \le n}(A[l:r]) 1lrn(A[l:r])

  • 题解:

    对于一个长度为 n n n 的数组,最坏情况是用 n − 1 n-1 n1 次操作将其变成回文

    但是对于某一个数组 A A A,取其一个前缀和一个后缀,若这两个子段和相等,可以减少一次操作

    f l , r f_{l, r} fl,r 表示 A [ l : r ] A[l:r] A[l:r] 的最少操作次数,考虑 dp,最优情况一定是:

    f l , r = min ⁡ { f L , R + ( L − l ) + ( r − R ) } f_{l,r}=\min\{f_{L,R}+(L-l)+(r-R)\} fl,r=min{fL,R+(Ll)+(rR)}

    也就是 f l , r + l − r = min ⁡ { f L , R + L − R } f_{l,r}+l-r=\min\{f_{L,R}+L-R\} fl,r+lr=min{fL,R+LR}

    其中 ∑ i = L l A i = ∑ i = R r A i \sum\limits_{i=L}^l A_i = \sum\limits_{i=R}^r A_i i=LlAi=i=RrAi

    A A A 做前缀和 s u m sum sum,转移条件变为:

    s u m l − s u m L − 1 = s u m r − s u m R − 1 sum_l-sum_{L-1}=sum_r-sum_{R-1} sumlsumL1=sumrsumR1

    也就是 s u m r − s u m l = s u m R − 1 − s u m L − 1 sum_r-sum_l=sum_{R-1}-sum_{L-1} sumrsuml=sumR1sumL1

    开一个桶 D D D,有 f l , r + l − r = D [ s u m r − s u m l ] f_{l,r}+l-r=D[sum_r-sum_l] fl,r+lr=D[sumrsuml],每次转移完 f l , r f_{l,r} fl,r 后,更新 D [ s u m r − 1 − s u m l − 1 ] D[sum_{r-1}-sum_{l-1}] D[sumr1suml1] 即可

  • code

G

  • 题意:

    给定一个又数字组成的字符串 s s s,可以将其划分乘偶数个非空子串 s i s_i si,会以一下规则构成新字符串 t t t

    • 依次对于每个 j ≤ i 2 j\le \frac{i}{2} j2i,将 s 2 × j s_{2\times j} s2×j s 2 × j − 1 s_{2\times j - 1} s2×j1 拼接到 t t t 后面( s i s_i si 下标从 1 1 1 开始)

    给定 n n n k k k,对于 s s s 中每个长度为 k k k 的字串,求出其以上述方法生成的 t t t 的最小长度

  • 题解:

    单独考虑一个字串 s s s,发现划分后所有的 s 2 × j − 1 s_{2\times j-1} s2×j1 的长度一定为 1 1 1

    f i , j f_{i,j} fi,j 表示考虑到第 i i i 位,现在所填写的子串要重复 j j j 次,这种情况的最小长度,有

    f i , j = f i − 1 , j + j f_{i,j}=f_{i-1,j}+j fi,j=fi1,j+j

    f i , s i − 1 = min ⁡ { f i , s i − 1 , f i − 2 , k + s i − 1 } f_{i, s_{i-1}} = \min\{f_{i,s_{i-1}},f_{i-2,k}+s_{i-1}\} fi,si1=min{fi,si1,fi2,k+si1}

    考虑广义矩阵乘法,令 f i , 10 f_{i,10} fi,10 表示考虑到第 i i i 位,并且要更新 j j j 的值(也就是上面转移的第二种情况)

    因为要求多个子数组的答案,直接双指针就行

  • code


http://www.niftyadmin.cn/n/5664926.html

相关文章

Spring 源码解读:手动实现Spring的资源管理机制

引言 在企业级应用开发中,资源管理是一个不可避免的问题。我们经常需要加载各种资源文件,比如配置文件、图片、XML 等。而 Spring 通过其强大的 Resource 抽象层为我们解决了这一问题,它能够支持多种资源加载方式,如文件系统资源…

computed计算属性与watch侦听器

1.computed计算属性的写法有两种,一种是只读的,只负责展示,另一种可以进行修改,利用get来获取值,利用set来进行修改 2.watch侦听器的写法也有两种,可以直接写成函数,也可以写成对象,…

接口自动化测试框架实战(Pytest+Allure+Excel)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1. Allure 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具,它不仅以 Web 的方式展示了简介的测试结果,而且允许参与开…

语言的枚举

不同语言的枚举 C/C枚举本质是整型,在Java中是对象,而非基本类型,可通过instanceof Object判断是否是对象类型。C#与Java不同,枚举是值类型。C语言更纯粹,枚举绝对当成整数,可以对枚举变量用整数赋值&…

springboot实训学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发。springboot实战学习笔记(3)(Lombok插件、postman测试工具、MD5加密算法、post请求、接口文档、注解、如何在IDEA中设置层级显示包结构、显示接口中的方法)-CSDN博客本篇博客主要是关…

排序----数据结构

Comparable Integer Double 默认情况下都是按照升序排列的 string 按照字母再ASCII码表中对应的数字升序进行排列 冒泡排序 时间复杂度O(x^2) 选择排序 时间复杂度O(x^2) 插入排序 时间复杂度O(x^2) 希尔排序 时间复杂度O(x) 归并排序 时间复杂度O(nlogn) 快速排序

智能化大数据平台引领企业迈向精准决策时代

随着科技的飞速发展,大数据平台正逐步迈向更加智能化和自动化的未来趋势。未来的数据平台不仅仅是一个简单的存储和处理数据的工具,而是一个能够自主学习、优化和做出决策的智能系统。这一转变将极大地改变企业处理数据的方式,提高决策的速度…

Statement 和 Experssion的关系

背景:在第8张,引入的Statement,引入时候两者关系如下: 思考:我以为这两者会是向下递归的关系。 类似这样: 但实际上不是, Statement 看似在语法树上,但是他已经不是Expression。 …