算法
文章平均质量分 81
算法相关博客以及解题报告
朱华小机智
这个作者很懒,什么都没留下…
展开
-
【挑战程序设计竞赛】- 3.1二分搜索
3.1 二分搜索文章目录3.1 二分搜索3.1.1 有序数组查值3.1.2 判断可行解3.1.3 最大化最小值3.1.4 最大化平均值3.1.1 有序数组查值例1:lower_bound给定长度为n的单调不下降数列a0,...,an−1a_0,...,a_{n-1}a0,...,an−1和一个数k,求满足ai≥ka_i \ge kai≥k的最小i。不存在时输出n。int n,k;int a[NMAX];void solve(){ int l=0, r=n-1, ans=n;原创 2022-02-15 00:21:18 · 770 阅读 · 2 评论 -
【挑战程序设计竞赛】- 2.6 数论基础 (扩展欧几里得、素数筛法、快速幂)
2.6 数论基础 (扩展欧几里得、素数筛法、快速幂)文章目录2.6 数论基础 (扩展欧几里得、素数筛法、快速幂)2.6.1辗转相除法1. 求最大公约数2. 扩展欧几里得2.6.2 素数1. 素数判定2. 埃氏筛法3. 区间筛法(埃氏筛法+素数判定)2.6.3 取模2.6.4 快速幂计算2.6.1辗转相除法1. 求最大公约数例题1:给定平面上两个格点P1(x1,y1), P2(x2,y2)。线段P1P2上,(除了P1 P2)有几个格点?(格点即整数点)-1e9<=x1,x2,y1,y2<原创 2022-02-14 17:48:33 · 256 阅读 · 0 评论 -
【挑战程序设计】- 2.5 图论(最短路、最小生成树)
2.5 图论(最短路、最小生成树)文章目录2.5 图论(最短路、最小生成树)2.5.1 定义们2.5.2 图的表示2.5.3 图的搜索2.5.4 最短路问题单源1:bellman-ford单源2:dijkstra算法(单源3:spfa)任意两点:floyd-warshall路径还原2.5.5 最小生成树Prim算法Kruskal算法2.5.6 应用解题2.5.1 定义们图:点和边组成。V为顶点集,E为边集,图记为G(V,E),连接两点u和v的边用e=(u,v)表示。分为有向图和无向图。边上有权值的原创 2022-02-14 13:40:12 · 258 阅读 · 0 评论 -
【挑战程序设计竞赛】- 2.4 数据结构(二叉树、堆、优先队列、并查集)
2.4 数据结构(二叉树、堆、优先队列、并查集)文章目录2.4 数据结构(二叉树、堆、优先队列、并查集)2.4.1 树和二叉树2.4.2 优先队列和堆2.4.3 二叉搜索树2.4.4 并查集2.4.1 树和二叉树树:根、边、节点、叶子 - 父亲、兄弟、儿子二叉树:树中所有节点的儿子个数都不超过22.4.2 优先队列和堆优先队列:能完成【插入一个数值】、【获得最小值,并且删除】两个操作的数据结构#include <queue>priority_queue <int> p原创 2022-02-13 14:16:55 · 363 阅读 · 0 评论 -
【挑战程序设计竞赛】- 2.3动态规划(01背包+LCS+完全背包+多重部分和+LIS+划分数+多重划分数)
2.3动态规划文章目录2.3动态规划2.3.1记忆化搜索(01背包+LCS)2.3.2 递推关系(完全背包/01背包加强/多重部分和/LIS)2.3.2 计数DP(划分数, 多重划分数)DP dynamic programming2.3.1记忆化搜索(01背包+LCS)例1 01背包问题:有n个重量和价值分别为wiw_iwi、viv_ivi的物品。选出总重量不超过W的物品。求挑选方案的价值总和最大值。1<=n<=100, 1<=wi,viw_i,v_iwi,vi<原创 2022-02-13 00:30:06 · 464 阅读 · 1 评论 -
【挑战程序设计竞赛】- 2.2贪心法(硬币最少、区间覆盖、字典序最小、标记最少、木板切割)
四年前犯的错再做一遍还是会犯。四年前不看presentation要求,四年后依然PE。四年前忘记longlong,四年后还是会忘。2.2 贪心法核心思想:不断选取最优策略。例题1-硬币:有1、5、10、50、100、500面值的硬币各c1c_1c1、c5c_5c5、c10c_{10}c10、c50c_{50}c50、c100c_{100}c100、c500c_{500}c500枚。需要支付A元,问最少需要硬币几枚。解决思路:尽可能从多到少的使用硬币。const int V[6]={原创 2022-02-12 13:55:26 · 749 阅读 · 0 评论 -
【挑战程序设计竞赛】- 2.1搜索(递归、栈、队列、dfs、bfs、剪枝)
(POJ不好用万能头文件)文章目录2.1搜索递归搜索栈队列深度优先搜索宽度优先搜索剪枝2.1搜索递归搜索求阶乘/斐波那契,优化使用记忆化存储数组int memo[MAXN];int fib(int n){ if(n<=1) return n; if(memo[n] != 0) return memo[n]; return memo[n] = fib(n-1)+fib(n-2);}栈后进先出,Last In First Out。有底的桶,只能在上边取上边放。原创 2022-02-11 23:54:04 · 599 阅读 · 0 评论 -
【算法和数据结构】排序和堆
一个菜鸡从新开始复习算法和数据结构。(以前的自己真实好聪明啥都会)文章目录排序冒泡排序和选择排序O(n^2)插入排序O(n^2)希尔排序归并排序O(nlogn), O(n)快排O(nlogn), O(logn)取数组中第 n 大的元素堆排序O(nlogn), O(1)堆排序冒泡排序和选择排序O(n^2)冒泡排序:从前往后依次比较,每次把最大的数排到后面。稳定int i,j,tmp;for(i=n-1; i>=0; i--){//长度 for( j=0;j<i; j++){ i原创 2022-01-02 21:26:03 · 359 阅读 · 0 评论