LOJ 一本通例题 题解

本文是作者在 LOJ 刷题的综合题解,主要涵盖基础算法中的贪心算法和二分法。通过实例解析了包括活动安排、种树、喷水装置、生产调度、智力冲浪等多个问题的解题思路和代码实现,强调了贪心算法基于人类常识的决策方式和二分法在求解问题中的应用。
摘要由CSDN通过智能技术生成

这里是本人在 LOJ 上刷的一本通题目的综合题解,不定时更新。具体更新策略 戳这儿.

如果题目较简单,则本人会 简略地阐述思路等,然后 根据具体需要,给出伪代码,贴链接全代码,或不给代码。 注释较少或没有。

如果题目较有思维难度,则本人会 详细地讲解解题过程,然后 给出伪代码 或 帖链接全代码。 注释较少。

如果题目较有码量,则本人会 粗略地讲解策略,但侧重于讲解实现方式,给出 帖链接全代码 或 直接贴全代码。 注释较多。

如果题目既有思维难度,又有码量,则本人会 详细讲解解题过程,并讲解实现方式,给出 贴链接全代码 或直接贴全代码。 注释较多。

以上内容,特此说明。但总会阐明简要题意,分析时间复杂度等。且如果内容实在过多,会考虑分支题解。

如果本人水平能解决数据加强的情况,会竭力讲数据加强。数据加强表示本人的程序可以实现的较大水平。

第一部分 基础算法

贪心算法

LOJ #10000. 「一本通 1.1 例 1」活动安排

简要题意:给定若干 左闭右开 的区间 [ s i , f i ) [s_i , f_i ) [si,fi),求最多的区间数使得它们两两没有交集。

显然,用 pair \text{pair} pair 数组将这些区间排序,然后用 last \texttt{last} last 记录上一次取的区间末尾(初始为 0 0 0).

从小到大取,如果能取,则 a n s ← a n s + 1 ans \gets ans+1 ansans+1,并更新 last \texttt{last} last.

时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn). 数据加强: n ≤ 1 0 6 n \leq 10^6 n106. 实际得分: 100 p t s 100pts 100pts.

Link 代码

LOJ #10001. 「一本通 1.1 例 2」种树

简要题意:有 h h h 个要求,每个要求即 [ l , r ] [l,r] [l,r] 区间中种上 e e e 棵树。求满足所有条件的最少种数棵树。

显然,结构体存储要求并按结尾排序。然后,尽量多的在区间末尾种树,因为这样可以对后面的区间造成较大贡献。

时间复杂度: O ( n × h ) O(n \times h) O(n×h). 实际得分: 100 p t s 100pts 100pts.

Link 代码

数据加强: n , h ≤ 1 0 6 n,h \leq 10^6 n,h106,用线段树维护种树过程,有诸多细节。

LOJ #10002. 「一本通 1.1 例 3」喷水装置

简要题意:

给定一个 l × w l \times w l×w 的草坪和 n n n 个喷头,每个喷头的圆心都在中线上,离左边 L L L 米,浇灌范围 W W W 米。求最少的喷头能浇灌整个草坪。

仍然,用 pair<double,double> \text{pair<double,double>} pair<double,double> 存储,计算当前喷头能浇灌到的 最左位置和最右位置

然后,按照 LOJ #10000. 「一本通 1.1 例 1」活动安排 的思路解决即可。

注意判断 − 1 -1 1 的情

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值