【秘密 + 1 】读后感

 

这是一本让人读了感觉舒服的书,很多观点给人希望,很多场景令人神往。 值得反复读,反复读直到深刻领会其中之意。   其中有一些唯心的观点,谁说又不是客观的的呢?!

 

摘录一些好句子:

敞开心扉,拓宽格局;

感恩,泰然处之;

事出必然,谋定后动;

开放自己的身心和灵魂

承诺前谨慎,承诺必达成。   ~~~诚信

勿要哇哇大叫,少说话多做事。  ~~~思考

勿要拖泥带水,务要简单为美。  ~~~简单

勿做整日怨妇,拓宽人生格局。  ~~~格局

勿要魅上欺下,微笑面对众生。  ~~~每人有关系

感恩,现在就做,立即行动。

正面思维,正能力。

重复,专注,成功==习惯

希望和梦想具象化,潜意识心智。 因果律

惜缘续缘,勤思慎思    成功等于目标,其他一切都是注解。

自信

 

转载于:https://www.cnblogs.com/ymz202303/p/7576108.html

小鲤鱼历险记 题目背景 夏日的鲤鱼湖波光粼粼,小鲤鱼泡泡和海马阿酷正为即将到来的"湖底嘉年华"兴奋不已。然而,智慧宫的章鱼老师却给他们出了一道难题:"亲爱的同学们,要获得嘉年华的金色入场券,你们需要完成一项特别的读书挑战!图书馆里的每本书都藏着不同的秘密,只有用心阅读,才能收获真正的智慧。"泡泡吐着泡泡说:"可是老师,我们想快点去玩..."阿酷也挠挠头发:"对啊对啊!"章鱼老师推了推眼镜:"别担心,只要你们能聪明地选择书籍,很快就能完成任务!" 题目描述 智慧宫图书馆共有n本神奇书籍,每本书都有三个重要信息: 阅读时间t i ​ :读懂这本书需要的分钟数 泡泡的喜好a i ​ :1表示泡泡喜欢,0表示不感兴趣 阿酷的喜好b i ​ :1表示阿酷喜欢,0表示不感兴趣 挑战要求:你们需要共同制定一个读书计划: 泡泡至少要读k本自己喜欢的书 阿酷至少要读k本自己喜欢的书 总阅读时间要尽量短(这样才能早点去玩!) ❗ 特别注意: 你们要一起读同一组书 每本书只需要读一次 可以不用读完所有书 可以帮泡泡和阿酷找到最短的阅读时间吗? 输入格式 第一行:两个数字n 和k 接下来n行:每行三个数字t i ​ a i ​ b i ​ ,表示一本书的信息 输出格式 一个整数表示最短总阅读时长(保证数据一定有解) 样例 样例输入 #1 8 4 7 1 1 2 1 1 4 0 1 8 1 1 1 0 1 1 1 1 1 0 1 3 0 0 ​ 样例输出 #1 18 ​ 数据范围 对于10%的数据,a i ​ =b i ​ =1(所有书籍泡泡和阿酷都喜欢) 对于30%的数据,1≤k≤n≤20 对于100%的数据,1≤k≤n≤10 5 ,1≤t≤10 5
07-20
<think>根据用户的问题,我们需要解决“小鲤鱼历险记读书计划”问题,目标是寻找满足条件的最短阅读时间。由于用户没有提供具体的问题描述,我假设这是一个类似于“书籍阅读安排”的经典问题,通常涉及在限定时间内阅读完所有章节,或者多个读者并行阅读等。但根据用户提到的“最短阅读时间”,我推测可能是以下两类问题之一: 1. **单读者连续阅读问题**:读者需要按顺序阅读若干章节,每个章节有阅读时间和截止时间,要求找到一种安排使得总阅读时间最短(通常按顺序阅读即可,但可能有中断或跳过等条件?)。 2. **多读者并行阅读问题**:有多个读者(或处理器)同时阅读不同的章节(不要求顺序),要求将所有章节阅读完毕,且完成时间最短(即调度问题)。 然而,用户提到了“小鲤鱼历险记”和“读书计划”,并且要求“满足条件”,所以问题可能包含一些约束条件,如某些章节必须按顺序阅读,或者有依赖关系。 由于问题描述不明确,我将基于常见的“多处理器调度问题”(即:给定n个章节,每个章节的阅读时间为t_i,和m个读者,如何分配章节给读者使得总完成时间最短)来解答。因为这个问题通常要求最短完成时间,且是NP难问题,通常使用贪心算法(如最长处理时间优先LPT)来近似。 如果问题实际上是单读者且章节有截止时间,那么可能是贪心或动态规划解决。但用户提到“最短阅读时间”,所以更可能是多读者情况下的最小完成时间。 **问题假设**:有n个章节,每个章节的阅读时间为t_i,有m个读者(即m个处理器),每个读者可以同时阅读不同的章节,但一个章节只能由一个读者阅读。目标是将章节分配给读者,使得最大完成时间(即所有读者中完成时间的最大值)最小。 **经典算法**:使用贪心策略的最长处理时间优先(LPT)算法:将章节按阅读时间从大到小排序,然后依次将每个章节分配给当前总阅读时间最小的读者。 **算法步骤**: 1. 将章节按阅读时间降序排序。 2. 初始化m个读者的当前总阅读时间为0。 3. 遍历每个章节,将其分配给当前总阅读时间最小的读者(如果有多个,任选一个),并更新该读者的总阅读时间(加上当前章节的阅读时间)。 4. 所有章节分配完成后,最大的读者总阅读时间即为最短的完成时间。 **时间复杂度**:O(n log n)(排序)+ O(n log m)(使用优先队列维护m个读者的当前总时间)。 **注意**:该算法得到的是一个近似最优解,对于大多数实际应用足够好。 下面给出C++和Python的实现示例。 ### C++ 实现 ```cpp #include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; int main() { int m; // 读者数量 int n; // 章节数量 cin >> m >> n; vector<long long> times(n); for (int i = 0; i < n; ++i) { cin >> times[i]; } // 按阅读时间从大到小排序 sort(times.rbegin(), times.rend()); // 使用小顶堆(优先队列)来维护每个读者的当前总阅读时间 priority_queue<long long, vector<long long>, greater<long long>> pq; // 初始化m个读者 for (int i = 0; i < m; ++i) { pq.push(0); } // 分配每个章节 for (long long t : times) { long long minTime = pq.top(); pq.pop(); pq.push(minTime + t); } // 此时堆中的最大值就是整个完成时间 long long maxTime = 0; while (!pq.empty()) { maxTime = max(maxTime, pq.top()); pq.pop(); } cout << maxTime << endl; return 0; } ``` ### Python 实现 ```python import heapq def main(): import sys data = sys.stdin.read().split() m = int(data[0]) # 读者数量 n = int(data[1]) # 章节数量 times = list(map(int, data[2:2+n])) # 按阅读时间从大到小排序 times.sort(reverse=True) # 使用最小堆,初始化m个读者,当前时间都是0 heap = [0] * m heapq.heapify(heap) for t in times: # 取出当前总时间最小的读者 min_time = heapq.heappop(heap) min_time += t heapq.heappush(heap, min_time) # 堆中的最大值就是完成时间 max_time = max(heap) print(max_time) if __name__ == "__main__": main() ``` ### 示例输入与输出 **输入**:第一行两个整数m(读者数)和n(章节数),第二行n个整数表示每个章节的阅读时间。 ``` 2 4 3 4 5 6 ``` **输出**:一个整数,表示最短完成时间。 ``` 9 ``` 解释:两个读者,一个阅读6和3(总时间9),另一个阅读5和4(总时间9),所以完成时间为9。 ### 相关问题 1. 如果章节之间有依赖关系(例如某些章节必须在另一些章节之前阅读),如何调整算法? 2. 如果要求每个读者阅读的章节必须是连续的(即不能跳着读),如何解决? 3. 除了贪心算法,还有哪些方法可以求解多处理器调度问题? 4. 如何证明LPT算法的近似比? 5. 在章节阅读时间差异很大的情况下,LPT算法是否仍然有效? 如果用户的问题不是上述多处理器调度问题,请提供更详细的问题描述。</think>### 小鲤鱼历险记读书计划问题:寻找最短阅读时间 #### 问题描述 给定 $n$ 个章节的阅读时间 $t_1, t_2, \dots, t_n$ 和 $m$ 个读者,每个读者可以同时阅读不同章节。目标是找到一种章节分配方案,使得所有章节阅读完成的总时间最短(即最小化最大完成时间)。这是一个经典的多处理器调度问题(NP难问题),通常用贪心算法近似求解。 #### 算法思路:最长处理时间优先(LPT) 1. **排序章节**:将章节按阅读时间**降序排序** $$ t_1 \geq t_2 \geq \dots \geq t_n $$ 2. **分配章节**:依次将每个章节分配给**当前总阅读时间最小**的读者 3. **计算时间**:最终完成时间为所有读者中最大的总阅读时间 #### 时间复杂度 - 排序:$O(n \log n)$ - 分配:$O(n \log m)$(使用最小堆维护读者负载) #### Python 实现 ```python import heapq def min_reading_time(m, times): # 按阅读时间降序排序 times.sort(reverse=True) # 初始化读者堆(最小堆存储当前总时间) heap = [0] * m heapq.heapify(heap) # 分配章节 for t in times: min_time = heapq.heappop(heap) # 取出当前最闲的读者 heapq.heappush(heap, min_time + t) # 分配章节并更新 return max(heap) # 最大完成时间 # 示例输入:2个读者,4个章节[3,4,5,6] print(min_reading_time(2, [3,4,5,6])) # 输出:9 ``` #### C++ 实现 ```cpp #include <iostream> #include <vector> #include <queue> #include <algorithm> using namespace std; long long min_reading_time(int m, vector<long long>& times) { // 降序排序 sort(times.rbegin(), times.rend()); // 最小堆(读者当前总时间) priority_queue<long long, vector<long long>, greater<long long>> pq; // 初始化m个读者 for (int i = 0; i < m; ++i) pq.push(0); // 分配章节 for (long long t : times) { long long min_time = pq.top(); pq.pop(); pq.push(min_time + t); } // 找出最大完成时间 long long max_time = 0; while (!pq.empty()) { max_time = max(max_time, pq.top()); pq.pop(); } return max_time; } int main() { vector<long long> times = {3, 4, 5, 6}; cout << min_reading_time(2, times); // 输出:9 return 0; } ``` #### 示例分析 **输入**:读者数 $m=2$,章节时间 $[3,4,5,6]$ **最优分配**: - 读者1:章节6 + 章节3 → 总时间9 - 读者2:章节5 + 章节4 → 总时间9 **输出**:最短完成时间 $9$ #### 算法正确性证明 LPT算法可证明满足近似比: $$ \text{LPT完成时间} \leq \frac{4}{3} - \frac{1}{3m} \times \text{最优完成时间} $$ 当 $m=2$ 时,该算法总能给出最优解[^1]。 --- ### 相关问题 1. **如果章节有依赖关系**(如某些章节需按顺序阅读),如何修改算法? 2. **当读者能力不同**(处理速度不同)时,如何调整调度策略? 3. **如何用动态规划解决小规模问题**? 4. **是否存在多项式时间精确算法**?为什么这是NP难问题? 5. **如果允许中断阅读**,是否可能进一步优化完成时间?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值