![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
挑战程序设计竞赛读书笔记
Sorakun.
这个作者很懒,什么都没留下…
展开
-
【挑战程序设计竞赛读书笔记】并查集
例题1分析: 并查集内,同一组表示对应的情况同时发生或者同时不发生。原创 2021-02-21 21:34:49 · 71 阅读 · 0 评论 -
【挑战程序设计竞赛读书笔记】优先队列与堆
例题1 :分析: 如果完全按照题目要求来模拟的话,会比较复杂。可以认为,在通过加油站后,之后的任何时间都有加油的权力,那么,如果要加油的次数最少,就要在每次油用光的时候选择前面经过的加油量最大的加油站。可以利用优先队列来实现。1.每经过一个加油站,就将其扔入优先队列中2.当油耗尽时选用优先队列中最大的那个,当优先队列为空时,无法到达。代码:int L,P,N;int A[MAX_N+1],B[MAX_N+1];void solve(){ priority_queue<int>原创 2021-02-21 18:11:29 · 69 阅读 · 0 评论 -
【挑战程序设计竞赛读书笔记】动态规划
动态规划: 基本思想:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。使用条件:可分为多个相关子问题,子问题的解被重复使用例题1:01背包问题分析: 如果用搜索的办法,每个物品有两种状态,放入与不放入。搜索的代码:#include<bits/stdc++.h>typedef long long ll;using namespace std;int n,W原创 2021-02-07 16:16:44 · 74 阅读 · 0 评论 -
【挑战程序设计竞赛读书笔记】贪心算法
贪心算法: 贪心法就是遵循某种规则(这个规则可以有很多种,但是得出来的贪心算法不一定是对的),不断贪心地选取当前最优策略的算法设计方法。而DFS,BFS,动态规划是从某个状态不断的找,而贪心是按照一定规律去找。例题1:分析: 很典型的贪心算法问题,读完题后的第一感觉就是,若要让硬币用的最少,那么优先把面值大的硬币用完。代码:#include<bits/stdc++.h> using namespace std;const int v[6]={1,5,10,50,100,50原创 2021-01-31 21:36:32 · 112 阅读 · 0 评论 -
【挑战程序设计竞赛读书笔记】DFS与BFS
一、DFS 深度优先搜索,从某个状态开始,不断地转移状态直到无法转移,然后后退到前一步的状态,继续转移到其他状态。用递归函数实现比较简单。例题1:部分和问题分析: 对于每一个集合里的数都有两种状态,即加或者不加,从初始和为0,添加了0个数(指添加状态的数的个数)开始往下深度搜索,不断的状态转移(加或者不加),直到添加了n个,或者已经等于k,搜索结束。代码:#include<bits/stdc++.h> #include<vector> using nam原创 2021-01-30 21:34:07 · 115 阅读 · 0 评论