Educational Codeforces Round 167 (Rated for Div. 2) CF 1989 题解

Substring and Subsequence -每天一把CF - 20201110 2020-11-10 dp 163A 1800 题目 原题链接:https://codeforces.com/problemset/problem/163/A 思路 题目大意:两个字符串,从第一个字符串中取子串(元素连续),从第二个字符串中取子序列(元素不要求连续),若子串和子序列一模一样就算一个有效对,问总共有多少有效对(只要有本来的索引不一致就可以认为是不同的有效对)。 思路:和最长公共子序列有点关系又有点不同,毕竟第一个序列要求的是子串。 先给出状态定义和状转公式 dp[i][j]表示以a[i]. 阅读详情

点我看题
代码在这里 → \to →链接

A. Catch the Coin

令一个硬币与原点的x轴方向距离为d。那我们的最优思路肯定是在开局的d秒内走到与硬币x坐标相同、y坐标为-d的位置。如果此时硬币已经掉到这个位置下方那就没救了,否则就肯定可以接到。

时间复杂度 O ( n ) O(n) O(n)。


B. Substring and Subsequence

为了让构造出的串最短,我们要找出b中的最长子串,满足它是a中的一个子序列。令这个子串为 [ l , r ] [l,r] [l,r],则我们构造出的最优串为 b [ 0 , l − 1 ] + a + b [ r + 1 , ∣ b ∣ − 1 ] b_{[0,l-1]}+a+b_{[r+1,|b|-1]} b[0,l−1]​+a+b[r+1,∣b∣−1]​。这个最长子串也很容易求,令 f i , j f_{i,j} fi,j​表示已经匹配到了a的第i个位置、b的第j个位置,且b的第j个位置在当前匹配的子串中的最长匹配长度。转移有两种,分别是 f i , j → f i + 1 , j f_{i,j}\to f_{i+1,j} fi,j​→fi+1,j​(不再匹配一位)和 f i , j → f i + 1 , j + 1 f_{i,j}\to f_{i+1,j+1} fi,j​→fi+1,j+1​(再匹配一位,需满足 a i + 1 = b j + 1 a_{i+1}=b_{j+1} ai+1​=bj+1​)。

时间复杂度 O ( n 2 ) O(n^2) O(n2)。


C. Two Movies

首先如果一个人对两部电影的评价不同,比如一个是1一个是0,那毫无疑问地肯定是选大的那个去评价比较好,我们先把这类人的评价全处理完加到当前评分里,比如令当前两部电影的评分分别为 t 1 , t 2 t1,t2 t1,t2。

然后处理对两部电影评分相同的人。两部都打零分的人没啥用,直接不考虑。令两部都打1/-1分的人数分别为 p o s , n e g pos,neg pos,neg。直接把这些人的评分贪心地均等分给两部电影(因为要让较小值尽量大),比如分配正评分时就先给较小的评分一直加,加到两部电影评分相同为止;相同了之后就你加一次我加一次,尽量保持均等。加负评分时同理。处理时可以先加完所有正评分再加所有负评分,当然反过来也是可以的。

时间复杂度 O ( n ) O(n) O(n)。


D. Smithing Skill

我们肯定是要对每种金属求出最多能获得的经验数,然后全加起来;并且一种装备锻造了之后一定会熔掉,因为熔掉不仅加材料还加经验。注意到 a i − b i a_i-b_i ai​−bi​最小的装备是性价比最高的,因为消耗得最少。在所有性价比最高的装备里面我们可以随便拿一种出来针对同一种金属不停地锻造再熔掉,直到因为剩余金属量 < a i <a_i <ai​而不能锻造为止。再看一眼数据范围发现 a i ≤ 1 0 6 a_i\leq10^6 ai​≤106,而我们知道,当某种金属剩余量为x时,我们的最优方案是在所有 a i ≤ x a_i\leq x ai​≤x的装备中选性价比最高的锻造。因此我们可以对所有 ≤ 1 0 6 \leq 10^6 ≤106的金属剩余量用一个简单的dp预处理出这个剩余量所能挣到的经验。处理一个很大的剩余量 c i ( i ∈ [ 1 , m ] ) c_i(i\in[1,m]) ci​(i∈[1,m])时,直接先用性价比最高的装备把剩余量砍到 1 0 6 10^6 106以下,然后调用预处理的值即可。

时间复杂度 O ( n + m + m a x a ) O(n+m+max_a) O(n+m+maxa​)。


E. Distance to Different

首先注意到只要我们确定了a数组的"分段"(也就是把a分成若干段,每一段中填相同的数且相邻两段的数不同),那b就唯一确定了。那么题目中k的限制有什么用呢?唯一的用处就是要你保证分段数 ≥ k \geq k ≥k。

但是,一个可能出现的b数组并不对应着唯一的a。发现问题出在a中长度为2的段。如果a中有一个长度为2的段,且它不在a数组的首尾,那我们把他砍成两个长度为1的段,发现b数组不变。因此我们给合法的a数组定下一个限制:长度为2的段只能出现在a的首尾。思考一下,这样不仅合法的a数组和b数组一一对应了,而且可以让a中的段数尽量多,尽可能满足k的限制。

令 f i , j f_{i,j} fi,j​表示已经把a的前i个位置分段,且分段数与k取min为j的方案数。转移时用前缀和优化到 O ( 1 ) O(1) O(1)。

时间复杂度 O ( n k ) O(nk) O(nk)。


F. Simultaneous Coloring

研究中,待更

深入了解torch框架 大国的游戏,政府支持到位,是未来;AI : Artificial Intelligence,旨在研究、开发能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统,是一种拥有自主学习和推理能力的技术。它模仿人类大脑某些功能,包括感知、学习、理解、决策和问题解决。AI本质​ NLP(说话,听)、CV(眼睛)、自动驾驶、机器人(肢体动作)、大模型三要素:数据、网络、算力① 神经网络:找到合适的数学公式;② 训练:用已有数据训练网络,目标是求最优解;③ 推理:用模型预测新样本;PyTorch,简称Torch 阅读详情

相关推荐

[VisionPro] CogPMAlignTool 工具详解

[VisionPro] [CogPMAlignTool] [模板匹配]

weixin_43163656的博客 1万+

Educational Codeforces Round 167 (Rated for Div. 2) 部分题解A~D

Educational Codeforces Round 167 (Rated for Div. 2)部分题解 A. Catch the Coin B. Substring and Subsequence C. Two Movies D. Smithing Skill

_Djhhh` blog 1927

内存|内存的概念、内存的作用、内存的物理结构及内存使用

内存是硬件,是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。内存是与CPU沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大。本文简单介绍了内存的概念、作用、物理结构以及使用,内存远不止如此,后续文章会逐步深入讲解。

qq_59938293的博客 2万+

Educational Codeforces Round 167 (Rated for Div. 2)

check:记录均为1的数量,以及均为-1的数量,均为0的不用管,没有1的不用管,只有一个1的就只选1。首先a肯定是要的且是完整连续的,然后其它的只能在a的前面插入或者在b的后面插入。暴力枚举b的子段,然后判断是否为a的子序列,记录最长长度maxn。所以只要求出b的最长连续子段为a中子序列的长度,然后前后再插入。如果y小于等于0,则只要y小于等于-1则YES。答案即为len(b)-maxn+len(a)如果可以做到两部电影均大于等于x,则true。所以只要y大于等于-1则YES,否则NO。

m0_74087709的博客 710

Claude Code 学习笔记之一:理解 Agentic Loop 与内置工具

本文介绍了Claude Code这一终端智能助手的工作原理与使用方式。作者从ABAP开发经验出发,指出学习Claude Code的高级用法具有长期价值。文章详细解析了Claude Code的Agentic Loop机制:通过大语言模型进行推理,借助各类工具执行任务,并循环收集上下文、执行操作、验证结果三个步骤。系统阐述了Claude Code支持的五大类工具及其扩展方式,说明了其访问本地资源的范围和自治处理能力,同时介绍了权限模式等安全机制。最后提供了从小任务开始、充分探索、及时引导、使用CLAUDE.md

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 547

实测可复现|2026 Cloudflare盾v4.0反反爬全实战:从JS/WASM逆向到JA3指纹伪装,手把手突破拦截(附完整逆向代码+避坑手册)

本文以2026年Cloudflare盾v4.0(集成Shield Synapse v2.0)为核心,全程以实战复盘为视角,拆解了从JS/WASM混合逆向、全维度指纹伪装(JA3+浏览器指纹)、人类行为模拟,到代理池搭建的全流程,整合了完整可复现的代码,所有步骤和踩坑点均为实测所得,无任何AI套话,新手也能跟着复现,最终实现爬取成功率从12%提升至95%+。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1689

【cf】Edu Codeforces Round 167(Div.2)题解 A - E

如果直接这么求也不对,因为我们发现两个相同的颜色组成的一段,处在中间位置时,和两个不同的颜色组成的两段贡献一样,举个例子:1221和1231得到的 b 数组都是 1111,但是这样的相同两个颜色组成的一段处在两段时,贡献就和不同颜色组成的两段不一样,举个例子:112和312得到的 b 数组分别是 211 和 111,所以每次需要减去不处在两端的 由两个相同颜色组成的一段。首先需要考虑到,每次锻造会让我们的原料减少,那我们选择锻造方式的时候,一定会在原料数量满足条件的情况下,选择原料减少数量最小的。

Texcavator的博客 1384

【HOJ系列】HOJ判题机部署

【HOJ系列】HOJ判题机部署

随风浪仔的专栏 904

【补题】Educational Codeforces Round 167 (Rated for Div. 2) E. Distance to Different

怎么发现的呢,例如bi=3怎么来,假设是左右端,a数组一定是【1,1,1,2】,这个情况才能出现3,也就是bi的增大必须由其他相同的数拉大与不同数的差距。那么初步的想法就是dp[i][k],k表示分的组,很经典的dp方式,很容易发现n大了k也随之可以大,最坏情况k==n嘛,这个我们稍后再说。,也就是恰好分配出k组之后,无论分出了多少组,都叫k+1组,因此也就是在原本的基础上,改为自己递归自己,且不会出现重复贡献的问题。1.首先很容易发现,其实有一个隐含的c数组,表示的是连续相同的数在数组中的情况。

2401_87294509的博客 444

64、5G 侧链通信技术详解

本文详细解析了5G侧链通信的关键技术,包括资源感知与选择、UE间协调、混合ARQ、功率控制、信道探测与CSI报告以及侧链同步。资源感知与选择通过周期性或随机方式实现资源分配,UE间协调通过主动或被动方式避免资源冲突。混合ARQ机制确保数据传输可靠性,功率控制和信道探测优化传输质量并减少干扰。侧链同步则通过多种方式确保设备间时间一致性。这些技术相互配合,构建了高效稳定的5G侧链通信体系,适用于智能交通、物联网、应急通信等多个领域,为未来无线通信发展提供强大支撑。

oil88的博客 102

Palantir如何利用Ontology构建企业级数据地图

Palantir通过"本体论"(Ontology)技术构建动态数据地图,将多源异构数据转化为可操作的业务知识网络。该技术突破传统ETL模式,建立覆盖全组织的语义层,将原始数据映射为"客户""订单"等业务对象及其关联关系,形成可推理的语义网络。核心Foundry平台提供本体管理工具(OMA)和开发套件(OSDK),支持从数据连接到应用开发的全流程。虽然采用专有实现而非标准本体语言,但该架构成功解决了数据孤岛问题,赋能复杂决策分析

Learning 1802

【补题】Educational Codeforces Round 167 (Rated for Div. 2) D. Smithing Skill

1.贪心就不用说了,明眼人都能发现,因为能融回去,所以越能混越好,也就是a[i]-b[i]越小越好,其中注意a[i]要求你至少有a[i]以上的金属,满足这个,那么操作次数一定是最优的,至于真的很想知道正确性,就移步其他题解吧,这边就不在做证明了。3.观察到数据,发现最多也就1e6就能解决了(ai<1e6),并且由于在抵达最优操作前都会使用一种模式解决,因此dp预处理就成为了一种选择,如果到了这个思路,那么接下来就很简单了。同时有些金属数量是没法操作的,代码中条件或者use[i]==0判都可以。

2401_87294509的博客 347

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7018

Educational Codeforces Round 167 (Rated for Div. 2)题解

Educational Codeforces Round 167 (Rated for Div. 2)C和D的题解

2301_78429186的博客 927

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Educational Codeforces Round 167 (Rated for Div. 2) -----E - Distance to Different ---- 题解

我们思考一个事,如果 x x y y就等于 2 1 1 2,如果x x y y前面和后面都有元素那么就会变成 1 1 1 1,能实现此形式的有很多,那么如果中间元素连续块长度都等于2,对于答案是没有意义的。因为等于2的情况可以使用块长度为1的来实现,这样可以省下更多数字来得到更多的答案,所有中间长度块一定大于2或者为1,因为x x y y可以用x y x y来实现。

weixin_73936404的博客 717

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Educational Codeforces Round 167 (Rated for Div. 2) ---- D. Smithing Skill --- 题解

可以发现最好的策略,一定是先利用锻造并融化后损失最小的来获取经验。这个贪心是可以证明的。那我们发现a的范围是1e6,那么如果C大于最大的ai,那我们可以选择一个最小损失的方案一直执行让他小于最大的ai,小于ai后,这个数据范围可以发现,我们可以利用dp来得到1e6范围的所有答案,那么这道题就完成了。

weixin_73936404的博客 761

Educational Codeforces Round 167 (Rated for Div. 2)A~D题解

可以发现最好的策略,一定是先利用锻造并融化后损失最小的来获取经验。那我们发现a的范围是1e6,那么如果C大于最大的ai,那我们可以选择一个最小损失的方案一直执行让他小于最大的ai,小于ai后,这个数据范围可以发现,我们可以利用dp来得到1e6范围的所有答案,那么这道题就完成了。1.若coin坐标y>=0时,角色让横坐标等于硬币横坐标的过程中,一定能把纵坐标的差变为0。那么a就应该是不变的出现在res中,求出b中最大子串在a中为子序列的长度ll。(3)若ai=-1,则第i个人把评分给当前分高的。

lyccnm的博客 857

Educational Codeforces Round 166 个人题解(A~D)

Educational Codeforces Round 166 (Rated for Div. 2)个人题解 题解火车头 #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <vector> #include <algorithm> #include <set> #include <unordered_map> #include <cstring> #incl

Lazy_ChessPlayer的博客 952

D. Smithing Skill

预处理

2301_79513570的博客 349

Educational Codeforces Round 167 (Rated for Div. 2)解题报告(A-C)

题目:解题思路:显然只需要y >= -1 即可收集到硬币。

2301_79876716的博客 288

Distance to Different

然而,这种情况只有可能在中间发生,于是我们DP计数的时候排除这种特殊情况就好了。了有一点点曙光,但是发现还是太难计数,这个时候就要重新去观察。都相同,但是前者分了三段,后者分了四段,这会导致重复计数。(也就是说这是单射),然后就可以DP计数了。开始增加,然后到达一个峰值之后再减小到。不难知道这是正确的,但是太难计数了。分段(相同的数放一段),那么对应的。搞出来,然后就不难发现如果我们将。来说,不同的分段对应不同的。分段,于是可以发现,对于。,由于统计的是不同的。的数量,所以考虑一个。为一段)加上一不小于。

dingxingdi的博客 525

Educational Codeforces Round 167 , D Smithing Skill 题解

因为 c 在他的原数值操作一次就减了一个 dif. 由预处理的第 3 步知道, c 变小了, 下面一定是一个更优或相同的 dif.所以每个位置的dif 就用一次.表示 c 恰好为 i 时可以通过操作获得的利益. 转移方程就为。不能变成小于 0.且操作前要保证。操作一次, 贡献加 2.但是。

taulee01 的博客 986

Educational Codeforces Round 167(Div.2) A~D

Monocarp 参观了一家有街机柜的复古街机俱乐部。在那里,他对"抓硬币"游戏机产生了好奇。游戏非常简单。屏幕上的坐标网格是这样的XY00游戏开始时,角色位于中心位置,屏幕上出现了n枚硬币,其中第i枚硬币的坐标为xi​yi​。所有硬币的坐标都不相同,也不等于00。在一秒钟内,可以向八个方向之一移动角色。如果字符位于坐标xy,那么它可能最终到达坐标xy1x1y1x1yx1y−1xy−1x−1y−1x−1yx−1。

Code_Shark的博客 1267

Educational Codeforces Round 160 (Rated for Div. 2)题解

这里x这题实际上没什么写的,最大的坑点在于对于这个子集的理解,比如放入的元素为(1,1,2,2,3,3,3),子集并非是(1,2,2,3)这种形式,而是(1,2,3)这种就可以算作子集,所以每个元素与元素只要是相邻的,放入多少个并不是得全部用完。而且不够的后面还能补。按照这个思路就可以解出答案。题目大意:给定一个字符串s,我们可以进行两种操作,第一种操作是删除任意一个字符,花费为1,第二种操作是交换任意两个字符,花费为0,若干次操作后,得到一个字符串t,要求t与s每一位都不相同的情况下最小花费是多少。

m0_74120503的博客 649

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 267

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 324
LegendStane
博客等级 码龄5年 10粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值