首页 > 其他分享 >24/03/19 贪心(一)

24/03/19 贪心(一)

时间:2024-03-21 17:24:06浏览次数:30  
标签:24 03 19 sum dots 操作 代价 节点 pm

(1) CF1684D Traps

有 \(n\) 个数字 \(a_1 \sim a_n\) 排成一排,你需要从左到右依次越过所有数。

两种越过 \(i\) 的方式:

  1. 花费 \(a_i\) 的代价越过;
  2. 花费 \(0\) 的代价越过,后面的 \(a_i\) 都加 \(1\)。

现在你拥有最多 \(k\) 次操作二的机会,求最小的代价总和。


一定会使用 \(k\) 次操作二。否则可以在最后一个使用操作一的位置改用操作二,使答案更优。

假设这 \(k\) 次操作二的地方为 \(i_1, i_2, \dots, i_k\),我们考虑其中一个位置 \(i_j\) 的收益(收益指在 \(i_j\) 位置由操作一改为操作二后答案会变小多少):

  • 本身的代价 \(a_{i_j}\) 变成了 \(0\),收益增加 \(a_{i_j}\)。
  • 位置 \(i_j + 1 \sim n\) 中,除了位置 \(i_{j + 1}, i_{j + 2}, \dots, i_{k}\),代价都会加一(因为它们在跳跃时代价都是 \(0\)),收益减少 \(n - i_j - (k - j)\)。

综上,总收益为:

\[\sum_{j=1}^k (a_{i_j} - n + i_j + k - j) \]

整理得:

\[-nk + k^2 - \frac{k(k+1)}2 + \sum_{j=1}^k(a_{i_j} + i_j) \]

显然我们希望让收益越大越好,所以我们得目标是最大化这个式子的值。

其中 \(-nk + k^2 - \frac{k(k+1)}2\) 为定值,我们希望最大化 \(\sum_{j=1}^k(a_{i_j} + i_j)\)。所以我们将所有值按照 \(a_i + i\) 排序并取前 \(k\) 大即可。

(2) CF1029E Tree with Small Distances

给定一颗 \(n\) 个节点的树,以 \(1\) 为根。

求最少在树中加几条边,使得任意一点到 \(1\) 的距离均小于等于 \(2\)。


不难发现最优策略中,每条加的边都有端点 \(1\)。

第一步,最自然的想法就是将 \(1\) 和最深的叶节点连边。其实不然,最优的策略是连接 \(1\) 和叶子节点的父亲。这样能把这个叶子节点的所有兄弟和它父亲的父亲都管控到。

接下来上一步的点就不需要考虑了。我们要做的仍然是连接 \(1\) 和最深的点的父亲。如此迭代即可。

实现上,我们可以维护大根堆,以节点的深度从大到小排序。每次取出堆顶即可。

(3) CF1197C Array Splitting

给出一个长度为 \(n\) 的严格单调增的序列,将其分成 \(k\) 段,使得每一段的极差的和最小,求这个最小的和。


推式子。

若这 \(k\) 段分别为 \([i_1, i_2 - 1], [i_2, i_3 - 1], \dots, [i_k, i_{k + 1} - 1]\),其中 \(i_1 = 1, i_{k + 1} = n + 1\)。那么极差和为:

\[a_{i_2 - 1} - a_{i_1} + a_{i_3 - 1} - a_{i_2} + a_{i_4 - 1} - a_{i_3} + \dots + a_{i_{k + 1} - 1} - a_{i_k} \]

整理一下,把 \(+a_{i_j - 1}\) 和 \(-a_{i_j}\) 放在一起:

\[-a_{i_1} + a_{i_{k+1} - 1} + (a_{i_2 - 1} - a_{i_2}) + (a_{i_3 - 1} - a_{i_3}) + \dots + (a_{i_k - 1} - a_{i_k}) \]

其中 \(-a_{i_1} + a_{i_{k+1} - 1}\) 即 \(a_n - a_1\) 是一定的。我们希望让这个式子的值最小,就意味着我们要最小化 \((a_{i_2 - 1} - a_{i_2}) + (a_{i_3 - 1} - a_{i_3}) + \dots + (a_{i_k - 1} - a_{i_k})\)。因此求 \(d_i = a_{i - 1} - a_i\) 的前 \(k - 1\) 小即可。

(3) CF1038D Slime

给定 \(n\) 个数 \(a_i\)。每次可以选择两个相邻的 \(a_i, a_{i + 1}\) 将其合并为 \(a_i - a_{i + 1}\) 或 \(a_{i + 1} - a_i\)。求 \(n - 1\) 次操作后的数的最大值。


多手玩几组可以发现,最终的答案一定是对每个 \(a_i\) 乘上 \(\pm 1\) 的系数后求和。因为题目的操作为 \(a_i - a_{i + 1}\) 或 \(a_{i + 1} - a_i\),也就是将相邻两个数分别乘上 \(\pm 1\)。

所以我们可以对于每个负数乘 \(-1\) 变成正数,正数乘 \(1\) 保持正数,再求和即为答案。其实就是每个数的绝对值之和。

注意会有一个问题。将每个 \(a_i\) 乘 \(\pm 1\) 的过程中,不能做到将所有 \(a_i\) 全部乘相同的系数。所以在所有 \(a_i\) 同号时贪心选择某个数乘另外一个系数即可。

(4) CF804A Find Amir

有一张 \(n\) 个节点的完全图,其中连接 \(i, j\) 两点的边的边权为 \((i + j) \bmod (n + 1)\)。求走完所有城市所需的最小花费(起点任选)。


方案是 \(1 \to n \to 2 \to (n - 1) \to 3 \to \dots\),边权分别为 \(0, 1, 0, 1, \dots\)。

所以答案为边数的一半,即 \(\left \lfloor \dfrac {n-1}2 \right \rfloor\)。

标签:24,03,19,sum,dots,操作,代价,节点,pm
From: https://www.cnblogs.com/2huk/p/18087817

相关文章

  • 3.19
    今天上课开始开发自己个人大作业,学习记录APP,这从来做个具体规划,学习记录APP是包含多种功能的App,其中包括用户注册、设定每周学习目标、每日学习记录、能力达标分析、当天数据存储到本地数据库,其余数据存储到远程数据库、统计分析等功能。第二阶段的开发包括汇总统计、每日总结查......
  • 学术大咖云集!电子、通信与智能科学国际会议(ECIS 2024)与您相约“星城“长沙
    电子、通信与智能科学国际会议(ECIS2024)TheInternationalConferenceonElectronics,CommunicationsandIntelligentScience2024年5月24日~27日中国·长沙www.icecis.org【会议简介】电子、通信与智能科学国际会议旨在聚集领先的科学家、研究人员和学者,共同交流和......
  • 2024.2.29校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、校招|影石Insta3602024春季校园招聘启动(内推)校招|影石Insta3602024春季校园招聘启动(内推)2、校招|虹软科技2024届校招春招批通道开启(内推)校招|虹软科技2024届校招春招批通道开启(内推)3、校招|......
  • AI新工具(20240321) 又一个开源的Sora实现;高质量动漫风格图像的文本到图像模型;字节跳
    ✨1:Mora利用多智能体合作生成视频任务的多智能体框架Mora是一种多智能体框架,专为通用视频生成任务设计。它通过多个视觉智能体的协作,实现了在多种视频生成任务中的高质量输出,旨在复制并扩展OpenAISora的能力。以下是通俗语言总结的Mora功能以及可能的使用情景......
  • 【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (I
    【征稿进行时|见刊、检索快速稳定】2024年区块链、物联网与复合材料与国际学术会议 (ICBITC2024)大会主题:(主题包括但不限于,更多主题请咨询会务组苏老师)区块链:区块链技术和系统分布式一致性算法和协议块链性能信息储存系统区块链可扩展性区块链分散自治组织区......
  • 2024-3-20 模拟赛总结
    tip:01串表示集合(bitset)T3buy60pts:枚举最大的bi,O(nlogn)按ai排序后选择前k-1个即可。100pts:先按bi排序用priority_queue存储前k个,从bi最小开始,扫一遍序列,每次O(logn)更新前k个。T4flight大模拟tip:写模拟时,可以分模块调试。......
  • 美团2024年春招第一场笔试【技术】
    #include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=666;intarr[N][N];intsum[N][N];signedmain(){ intn; while(cin>>n){ strings; for(inti=0;i<n;i++){ cin>>s; for(intj=1;j<=n;j++){......
  • 【2024-03-20】带孩子累
    20:00古木阴中系短篷,杖藜扶我过桥东。沾衣欲湿杏花雨,吹面不寒杨柳风。                                                 ——《绝句·古木阴中系短篷》南宋·志南二宝......
  • P1960 郁闷的记者
    原题链接题解拓扑排序,层级标记,如果层级等于n,代表层次分明code#include<bits/stdc++.h>usingnamespacestd;vector<int>G[500005];intin[500005]={0};structnode{intid,layer;};intmain(){intn,m;cin>>n>>m;for(inti=1;i<=m;i++)......
  • [转帖]Evaluating Garnet's Performance Benefits
    EvaluatingGarnet'sPerformanceBenefitsEvaluatingGarnet'sPerformanceBenefits|Garnet(microsoft.github.io) Wehavetested Garnet thoroughlyinavarietyofdeploymentmodes:SamelocalmachineforclientandserverTwolocalmachines-......