贪心做题记录

news/2025/2/22 11:35:14/文章来源:https://www.cnblogs.com/liuir/p/18718832

\(\text{I}\). P2949 [USACO09OPEN] Work Scheduling G

按截止时间依次考虑每一个工作。若能继续完成,就完成当前的工作;否则若目前已完成工作中价值最小的劣于当前工作,就将那一工作替换为当前工作。

至于维护价值最小的,可以将已完成工作丢进一个小根堆,即可维护最小值。

\(\text{II}\). P4053 [JSOI2007] 建筑抢修

类似上一道题,我们每次替换的一定是性价比最低的。

而在此题中,完成时间越长性价比越低。所以也用堆维护即可。

\(\text{III}\). CF865D Buy Low Sell High

若简单的思考,我们会卖出会选择之前价格最小的一天买入。但这样不一定最优,所以考虑改变贪心策略。

定义 \(a\) 为全局最优解中买入那天的价格,\(b\) 为全局最优解中卖出那天的价格,\(c\) 为其中任意一天的价格。那么有

\[b-a=(b-c)+(c-b) \]

所以我们可以先按上述策略贪心。每次买卖是都将卖出的价格再次放入堆中,若以后将其取出,贡献意味着换一天卖出股票。

所以我们可以凭此消去中间项。

\(\text{IV}\). [CQOI2012] 组装

先考虑已确定每种零件的生产车间的情况。

记组装车间为 \(x\),第 \(i\) 种零件选择的车间为 \(p_i\),那么有

\[\begin{aligned} ans&=\sum_{i=1}^n(x-p_i)^2\\ &=nx^2-\left(2\sum_{i=1}^np_i\right)x+\sum_{i=1}^np_i^2 \end{aligned} \]

因为 \(n>0\),开口向上,所以当 \(x=\frac{\sum_{i=1}^np_i}{n}\) 时取到最小。

现在只需求出一个最优的 \(p\)

先令 \(p\) 为所有零件最小的车间,考虑逐步更换数组 \(p\)。定义 \((i,a,b)(a<b)\) 表示将 \(p_i\)\(a\) 改为 \(b\),通过邻项交换法来决定更换顺序。

假设先执行 \((i,a,b)\) 后执行 \((j,a^\prime,b^\prime)\) 没有取到最优解,说明:

  • 因为 \(a\) 在最优解中二 \(b\) 不在,说明最优的 \(x<\frac{a+b}2\)。否则保持 \(x\) 不变,将 \(a\) 换成 \(b\) 会使答案更小。

  • 同理,得到最优的 \(x>\frac{a^\prime,b^\prime}2\)

综上,有 \(a+b>a^\prime+b^\prime\)。所以只要按 \(a+b\) 从小到大执行上述更换,就不会出现上述情况。

初步考虑认为这样的 \((i,a,b)\) 对可能有 \(n^2\) 种。但实际上对于同一个 \(a\),只有最小的 \(b\) 才会参与更换,所以只有 \(n\) 对。

具体来讲,只需要对同一个零件相邻的生产车间对考虑即可。

时间复杂度 \(O(n\log n)\)。瓶颈在排序。

\(\text{V}\). [AGC022D] Shopping

妙妙贪心题。

由于摆渡车往返一次花费 \(2L\) 的时间,所以答案一定是 \(2L\) 的倍数。最后再乘上 \(2L\) 即可。

对于一个 \(t_i\),若其 \(>2L\),那么一定会多等一次往返,所以可以先令 \(ans\) 加上 \(\lfloor\frac{t_i}{2L}\rfloor\),并令 \(t_i\) 模上 \(2L\)

先考虑证明答案上界为 \(2L(n+1)\)

考虑按编号逐个经过被一个商场,最后再走一次到达点 \(0\)。一共是 \(n+1\) 次往返。

考虑记 \(l_i=[2x_i\ge t_i],r_i=[2(L-x_i)\ge t_i]\)。说人话就是是否能在 \(0\) 处往返时顺路算上和是否能在 \(L\) 处往返时顺路算上。

若存在 \(i,j\) 满足 \(x_i<x_j\land l_i=l_j=r_i=r_j=1\),说明可以用一次往返同时满足 \(i,j\) 两点,所以答案可以减 \(1\).

再考虑 \((l_i,r_i)=(0,1),(1,0)\) 的情况。根据定义可以得出 \((l_i,r_i)=(0,1)\) 的点满足 \(x_i\le\frac{L}{2}\)\((l_i,r_i)=(1,0)\) 的点满足 \(x_i>\frac{L}{2}\)。所以这两类点之间不可能相互匹配。

于是只有 \((1,1),(0,1)\)\((1,0),(1,1)\) 之间的匹配,直接模拟即可。

最后再考虑 \((1,1)\) 内部的匹配。

若存在 \(t_i=0\) 的点,直接令 \(ans--\) 并舍去。

\(r_n=1\),说明最后一个回到点 \(0\) 的往返可以顺路带上 \(n\),直接令 \(ans--\)。否则就不可能被匹配,直接删掉。

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

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

相关文章

联网搜索接口!大模型API和私有化部署联网搜索接口:基于互联网搜索服务的 API 接口技术分享与应用实践

联网搜索接口!大模型API和私有化部署联网搜索接口:基于互联网搜索服务的 API 接口技术分享与应用实践关键词:API 接口、互联网搜索、大模型、私有化部署、数据采集、技术分享、微信小程序、数字续坚、竞品对比一、引言在大模型 API 开发与私有化部署日益普及的背景下,如何在…

687. 最长同值路径(中)

目录题目题解:后序遍历 题目给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。题解:后序遍历通过深度优先搜索后序遍历二叉树,计算并更新每个节点…

week 01 C语言基础

Week01 一.语言基础认知 1.1 C语言是什么? 通过一系列的语法和语义规则来描述计算机程序的行为和逻辑,可以将程序转化为二进制指令,并由CPU执行。 语言=语法+逻辑 1.2 C语言的特点简洁C语言的语法简单,简单明了,使得程序易于阅读和理解。高效C语言的执行效率高,可以用于开…

Qt布局之QSplitter

简述 QSplitter拆分器是一个布局控件。用户通过拖动它们之间的边界来控制子部件的大小。 在不确定子部件UI大小时,可以用此控件布局,让用户自行调整控件尺寸。 属性名称 类型 描述childrenCollapsible bool 用户是否可以将子部件的大小调整为0。默认情况下,子控件是可…

学习理论:预测器-拒绝器多分类弃权学习

弃权学习(learning with abstention)主要是为了使分类器在学习过程中可能出现的误导性或者不正确的信息时(这常被称为“幻觉”),能够对做出预测进行弃权。目前,弃权学习的方法主要可以分为以下几种:基于置信度的方法(confidence-based methods)。这种方法在预训练模型…

Cypher Chapter 6:DIGITAL CRYPTOGRAPHY

PUZZLE1 0110 0100 0110 0001 0111 0100 0110 0001SOLVE1 通过 ASCII 码表可知,明文为 data。 PUZZLE2 HELLO 0011 1111 0010 1010 0011 1110 0010 0000 0010 1011SOLVE2 容易猜出答案是 world,不过如何得到的呢? 考虑将 HELLO 换为 ASCII 码形式,即 0100 1000 0100 0101 0…

2246. 相邻字符不同的最长路径(难)

目录题目题解:dfs 题目给你一棵 树(即一个连通、无向、无环图),根节点是节点 0 ,这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树,其中 parent[i] 是节点 i 的父 节点,由于节点 0 是根节点,所以 parent[0] == -1 。…

普通人如何靠 AI 副业,1 个月实现月薪 3 万 +

在物价飞涨、经济低迷的今天,仅靠死工资,却有着不固定的开销?房贷、车贷、孩子的教育费用…… 望着日益增长的开销,你是否也在夜深人静时,为钱包的羞涩而发愁?无数次幻想过拥有一份高收入的副业,却始终在迷茫中徘徊,不知从何下手。 如今,AI 时代的浪潮汹涌而来,为我们…

C内存模型

分区 在C语言中,内存被分为以下几个部分 .text 代码段,存放程序的可执行代码,不可修改 .rodata(Read Only Data) 常量区,存放全局常量 .data 数据段,存放已初始化的全局变量和静态变量 .bss(Block Started By Symbol) 未初始化数据段,存放未初始化的全局变量或者初始化为…

探秘Transformer系列之(5)--- 训练推理

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(5)--- 训练&推理 0x00 概述 Transformer训练的目的是通过对输入…

124. 二叉树中的最大路径和(困难)

目录题目题解:后序遍历 题目二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root ,返回…

Windsurf AI编程工具

Windsurf AI编程工具实操指南目录一、环境搭建与核心功能安装与登录模型选择与配置中文环境配置二、开发全流程实操创建项目将api目录下的模型调用抽象为服务层三、避坑指南四、与Cursor对比结语安装包 一、环境搭建与核心功能 安装与登录 访问Windsurf官网下载适配版本,支持W…