![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
hbnu_lmj
这个作者很懒,什么都没留下…
展开
-
HDOJ 1053 Entropy
链接:Problem - 1053 (hdu.edu.cn)问题描述:问题分析:运用哈夫曼树的概念进行解题.代码实现:#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <queue>#include <vector>#include <functional>#inc.原创 2021-09-19 11:10:02 · 106 阅读 · 2 评论 -
HDOJ 1108 最小公倍数
链接:Problem - 1108 (hdu.edu.cn)Problem Description给定两个正整数,计算这两个数的最小公倍数。Input输入包含多组测试数据,每组只有一行,包括两个不大于1000的正整数.Output对于每个测试用例,给出这两个数的最小公倍数,每个实例输出一行。Sample Input10 14Sample Output70题目大意:求解最小公倍数解题思路:先用辗转相除求求最大公约数gcd,再根据公式求最小公倍数lcm(a原创 2021-08-25 10:21:06 · 99 阅读 · 0 评论 -
贪心算法笔记
总是作出在当前看来是最好的选择!!!不从整体上加以考虑,所作出的仅仅是在某种意义上的局部最优解。例一:田忌赛马经典例子:事件序列问题反证法证明贪心思路的正确性可图性判定!两个概念:1.度序列:若把图G所有顶点的度数排成一个序列S,则称S为图的度序列...原创 2021-08-24 21:19:44 · 226 阅读 · 0 评论 -
递堆求解笔记
引导问题:1、f(n)=10+(n-1)*22、递归f(1)=10; f(n)=f(n-1)+2;为动态规划做铺垫。例题:HDOJ 2050 折线分割平面_m0_55756918的博客-CSDN博客HDOJ 2046骨牌铺方格_m0_55756918的博客-CSDN博客卡特兰数:Catalan number,卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。卡特兰数的前几原创 2021-08-26 15:57:21 · 111 阅读 · 0 评论 -
HDOJ 2050 折线分割平面
链接:Problem - 2050 (hdu.edu.cn)题目大意:折线相交得到的最大平面数解题思路:1、如果都是直线则规律为f(1)=2f(2)=4f(3)=7....f(n)=f(n-1)+n2、如果折线f(1)=2f(2)=7f(3)=16....f(n)=f(n-1)+4*(n-1)+1=f(1)+4+4*2+...+4*(n-1)+n-1=2n^2+1-n代码实现:1、递归#include <iostream原创 2021-08-26 11:26:20 · 92 阅读 · 0 评论 -
HDOJ1009 FatMouse‘ Trade
链接:Problem - 1009 (hdu.edu.cn)Problem DescriptionFatMouse prepared M pounds of cat food, ready to trade with the cats guarding the warehouse containing his favorite food, JavaBean.The warehouse has N rooms. The i-th room contains J[i] pounds of JavaBe原创 2021-08-25 09:52:01 · 91 阅读 · 0 评论 -
HDOJ 2046骨牌铺方格
链接:Problem - 2046 (hdu.edu.cn)解题思路:1、寻找规律,类似与斐波那契数列。代码实现:#include <iostream>using namespace std;int main(){ __int64 num[60]; int n; num[1]=1; num[2]=2; for(int i=3;i<52;i++) num[i]=num[i-2]+num[i-1];原创 2021-08-26 11:59:53 · 72 阅读 · 0 评论 -
HDOJ 1978 How many ways
链接:Problem - 1978 (hdu.edu.cn)问题描述:问题分析:这也是dp+搜索的题目,可以使用dfs记忆化。代码实现:#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>using namespace std;int dp[105][105];int ans[105][105];int t,n,.原创 2021-09-19 09:59:57 · 98 阅读 · 0 评论 -
HDOJ 1078 FatMouse and Cheese
链接:Problem - 1078 (hdu.edu.cn)问题描述:问题分析:这是一个DP+搜索的题目,可以用记忆DFS来写。代码实现:#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;int init[102][102];int ans[102][102];int dx[]={-1原创 2021-09-19 09:33:12 · 96 阅读 · 0 评论 -
二分匹配算法笔记
什么是二分图?如果一个图的顶点可以分为两个集合X和Y,图的所有边一定是有一个顶点属于集合X,另一个顶点属于集合Y,则称该图为“二分图”或“二部图”( Bipartite Graph )二分匹配算法题目:HDOJ 1150 Machine Schedule_m0_55756918的博客-CSDN博客...原创 2021-09-15 19:55:55 · 84 阅读 · 0 评论 -
HDOJ 1150 Machine Schedule
链接:Problem - 1150 (hdu.edu.cn)问题描述:问题分析:这个题可转化成求二分图的最大匹配数,最小覆盖数=最大匹配。用匈牙利算法。代码实现:#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int MAX=110;bool g[MAX][MAX];in原创 2021-09-15 18:21:07 · 78 阅读 · 0 评论 -
DFS 算法笔记
预备知识:二叉树的遍历1、先根遍历(根左右)2、中根遍历(左根右)3、后根遍历(左右根)1、给定先根和中根遍历结果,是否可以唯一确定这棵二叉树? YES2、给定中根和后根遍历呢? YES3、给定先根和后根遍历呢? NO(反例?)深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜...原创 2021-09-14 21:37:44 · 98 阅读 · 0 评论 -
HDOJ1495 非常可乐
链接:Problem - 1495 (hdu.edu.cn)问题描述:解题思路:这也是典型得BFS求解得问题,由于没有刻度,所以杯子只有倒满或者不倒,最后得到两杯分量一样的可乐即可,另外党课了为奇数时,一定是不可能均分的,可以写出条件直接判断。代码实现:#include <iostream>#include <algorithm>#include <cstdio>#include <queue>using namespace原创 2021-09-07 20:59:53 · 89 阅读 · 0 评论 -
HDOJ 1548 A strange lift
链接:Problem - 1548 (hdu.edu.cn)问题描述:题目大意:一开始在某一层,然后根据某一层的ki上升或下降电梯,如果能到达目标层,则输出用的次数,如果不能到达则输出 -1.解题思路:运用bfs,将此问题编程图的问题。代码实现:#include <iostream>#include <algorithm>#include <queue>using namespace std;int n,start,targe..原创 2021-09-06 20:38:16 · 97 阅读 · 0 评论 -
BFS入门算法笔记
队列特点:1、先进先出(FIFO)2、从队头删除元素3、在队尾加入元素队列的创建对象:queue<元素类型> 队列名;队列添加元素:队列名. push(元素名);去掉队首元素:队列名.pop();访问队首元素:队列名.front() ;访问队尾元素:队列名. back();判断是否为空:队列名.empty();返回队列大小:队列名.size();BFS基本思想:从初始状态S开始,利用规则,生成所有可能的状态,构成树的下一层节点检查是否出现原创 2021-09-05 22:00:30 · 127 阅读 · 0 评论 -
HDOJ 1874 畅通工程续
链接:Problem - 1874 (hdu.edu.cn)问题描述:解题思路:先设置输入数据,由于是无向图,所以建立堆成矩阵(二维数组)原创 2021-09-05 18:51:20 · 68 阅读 · 0 评论 -
图的算法笔记
图的存贮:有向图: 0 1 2 3 4 0 30 100 1 62 2 3 30 90 4 根据起点和终点可以建立一个二维数组。如果是无向图,则可以建立对称的二位矩阵。最短路径问题:...原创 2021-09-05 18:51:31 · 68 阅读 · 0 评论 -
背包问题笔记
背包的基本模型:给你一个容量为V的背包和若干种物品,在一定的限制条件下(每种物品都占用一定容量),问最多能放进多少价值的物品?背包是很典型、最基本的DP问题背包的每个容量都是“状态”背包问题的分类01背包完全背包 多重背包二维费用背包 混合三种背包 分组背包 有依赖的背包01背包问题:有 N件物品和一个容量为V的背包。第件物品的费用是,价值是。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。代码模板:#...原创 2021-09-01 19:35:10 · 118 阅读 · 0 评论 -
HDOJ1232 畅通工程
链接:Problem - 1232 (hdu.edu.cn)解题思路:将每个数组的老大找到,有几个老大就要几条路。大佬画的图,7和10是老大代码实现:#include <iostream>#include<algorithm>using namespace std;int load[1010];int find(int x){ int r; r=x; while(load[r]!=r){ r=load...原创 2021-08-30 21:52:23 · 95 阅读 · 0 评论 -
HDOJ 2045 不容易系列之(3)—— LELE的RPG难题
链接:Problem - 2045 (hdu.edu.cn)问题分析:这是一道递归题目,找到其规律即可求解解题思路:借鉴别的大佬寻找的规律求得结果。假如说先把全部情况都列出来(不考虑首尾不能相同),即为3*2^(n-1)种,这是所有的情况,再减去首位相等的情况即可,这样的话,首尾相等的情况是什么样的呢?不难想象得出,当n-1个空格的时候,加一个格,使首尾颜色相同,这种情况下,n个格且首尾相同情况下所有的颜色种类与n-1的情况下所有的满足题意的情况数相同。原文链接:https://b..原创 2021-08-29 20:10:53 · 83 阅读 · 0 评论 -
HDOJ 1160FatMouse‘s Speed
链接:Problem - 1160 (hdu.edu.cn)解题思路:先把老鼠按体重进行排序,就可以降维思考这个问题,使用dp来解决代码实现:#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>using namespace std;int dp[1010];int pre[10010];struct Mouse{ int..原创 2021-08-29 11:17:03 · 88 阅读 · 0 评论 -
HDOJ1421 搬宿舍
链接:Problem - 1421 (hdu.edu.cn)原创 2021-08-28 19:13:57 · 84 阅读 · 0 评论 -
DP(动态规划)入门笔记
查阅资料后:DP一般用于解决多阶段决策问题,即每个阶段都要做一个决策,全部的决策是一个决策序列,求一个最好的决策序列使得这个问题有最优解。将待求解的问题分为若干个相互联系的子问题,只在第一次遇到的时候求解,然后将这个子问题的答案保存下来,下次又遇到的时候直接拿过来用即可。贪心算法不一定是最优解经典例题:HDOJ 2084数塔问题_m0_55756918的博客-CSDN博客例题:HDOJ 1257最少拦截系统_m0_55756918的博客-CSDN博客HDOJ 1176免费馅饼_m0_55原创 2021-08-28 19:14:48 · 79 阅读 · 0 评论 -
HDOJ 1176免费馅饼
链接:Problem - 1176 (hdu.edu.cn)问题分析:与2084的灯塔问题类似自顶向下的分析,自底向上的计算。代码实现:#include <cstdio>#include <algorithm>#include <cstring>using namespace std;int dp[100010][20]={0};int x;int t;int maxn;//计最大时间int main(){ int n;原创 2021-08-27 23:31:50 · 89 阅读 · 0 评论 -
HDOJ 2084数塔问题
链接:Problem - 2084 (hdu.edu.cn)问题分析:自顶向下的分析,自底向上的计算。原创 2021-08-27 20:14:22 · 132 阅读 · 0 评论 -
HDOJ 1257最少拦截系统
链接:Problem - 1257 (hdu.edu.cn)解题思路:导弹需要依次拦截,打的高度是递减的,如果在序列中出现了递增,那么说明我们需要另外一套系统来打这个递增的高度,也就是出现了多少次的递增,我们就需要多少套系统。求出最长递增子序列就是结果。问题的本质是求最长不上升序列。代码实现:1.贪心#include <iostream>#include <cstdio>using namespace std;int Missile[100010]原创 2021-08-27 18:10:13 · 110 阅读 · 0 评论 -
HDOJ 2035人见人爱A^B
链接:Problem - 2035 (hdu.edu.cn)题目大意:求A的B次方的最后三位数表示的整数解题思路:1、可以在每一次取最后三位整数,防止数值过大,爆空间2、运用递归进行快速幂运算代码实现:...原创 2021-08-25 16:46:38 · 87 阅读 · 0 评论