![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
rgb2gray
人工智能领域优质创作者,CSDN博客专家
展开
-
[转]dfs刷题模板总结
dfs刷题模板总结0.前言本文主要讲解平常刷题中常用到的dfs,并总结出了基本套路模板。1.什么时候用dfs?(该用的时候用), 屁话dfs是经常使用的暴力解法。常常,其优化版本要么是记忆化搜索,要么就是dp。但是因为dfs很好想,而且很好实现(只要递归即可),所以dfs常常出现在题解中。2.如何用dfs?dfs出现的地方,常常对应的是多个选择的地方,选或者不选;放或者不放;做或者不做…等等。再上一个选择的基础上,又迎来下面的一波选择。 为...转载 2020-09-19 22:01:52 · 261 阅读 · 0 评论 -
暑假练习(四) 数论
暑假练习(四) 数论1.1 GCD 与LCM欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:gcd函数就是用来求(a,b)的最大公约数的。gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}1.2 拓展欧几里得算法现在我们知道c=gcd(a,b),那么原创 2020-08-03 22:04:59 · 473 阅读 · 2 评论 -
暑假练习(三) 图论
暑假练习(三) 图论1.最短路1.1 Floyd算法Stockbroker Grapevine POJ - 1125理解了题意即可,几乎是模板题#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;const int N=110;int n,map[N][N];原创 2020-08-03 21:56:03 · 208 阅读 · 0 评论 -
暑期练习(二) 动态规划
暑期练习(二) 动态规划1. POJ 1692 Crossed Matchings题意:给出两行数,求上下匹配的最多组数是多少。匹配规则1.匹配对的数字必须相同2.每个匹配必须有且只能有一个匹配与之相交叉,且相交叉的两组匹配数字必须不同,一个数最多只能匹配一次方法:DP分析:用dp[i][j]表示第一行取i个数,第二行取j个数字的最多匹配项对于某个dp[i][j]:1.不匹配第一行i个,或不匹配第二行第j个:dp[i][j]=Max(dp[i-1][j],dp[i][j-1])2.如果a原创 2020-07-08 00:10:53 · 689 阅读 · 0 评论 -
暑期练习(一) DFS
刷题(一) DFS1.HDU-1518 https://vjudge.net/problem/HDU-1518Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square?InputThe first line of input contains N, the number of test cases. Each test case begins w原创 2020-06-29 01:48:28 · 357 阅读 · 0 评论 -
蓝桥杯备赛(六)贪心算法
蓝桥杯备赛(六)贪心算法贪心的意义:(1)最终取得最优值(2)比较短视,只看眼前的利益Acwing 1055. 股票买卖 II给定一个长度为 N的数组,数组中的第 i个数字表示一个给定股票在第 i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。输入格式第一行包含整数 N,表示数组长度。第二行包含 N 个不大于 10000的正整数,表示完整的数组。输出格式输出一个整数原创 2020-06-16 21:55:00 · 1412 阅读 · 0 评论 -
蓝桥杯备赛(五) 双指针,BFS与图论
蓝桥杯备赛(五) 双指针,BFS与图论一、双指针1.Acwing 1238. 日志统计小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有 N 行。其中每一行的格式是:ts id表示在 ts 时刻编号 id 的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是”热帖”。具体来说,如果存在某个时刻 TT 满足该帖在 [T,T+D)这段时间内(注意是左闭右开区间)收到不少于 K 个赞原创 2020-05-30 22:29:34 · 555 阅读 · 0 评论 -
蓝桥杯备赛(四) 枚举,模拟与排序
蓝桥杯备赛(四) 枚举,模拟与排序1.Acwing 1210. 连号区间数小明这些天一直在思考这样一个奇怪而有趣的问题:在 1∼N的某个排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间 [L,R]里的所有元素(即此排列的第 L 个到第 R个元素)递增排序后能得到一个长度为 R−L+1 的“连续”数列,则称这个区间连号区间。当 NN很小的时候,小明可以很快地算出答案,但是...原创 2020-05-06 02:38:24 · 610 阅读 · 0 评论 -
蓝桥杯备赛(三) 数学与简单DP
蓝桥杯备赛(三) 数学与简单DP一、数学问题1.Acwing 1205. 买不到的数目小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。...原创 2020-04-13 23:08:19 · 313 阅读 · 0 评论 -
蓝桥杯备赛(二) 二分与前缀和
蓝桥杯备赛(二) 二分与前缀和1.二分二分分为整数二分与实数二分。实数二分不用考虑边界,较为简单。实数二分;Acwing 790. 数的三次方根给定一个浮点数n,求它的三次方根。输入格式共一行,包含一个浮点数n。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留6位小数。数据范围−10000≤n≤10000−10000≤n≤10000输入样例:1000.00...原创 2020-03-03 18:56:59 · 422 阅读 · 0 评论 -
蓝桥杯备赛(一) 递归与递推
蓝桥杯备赛(一) 递归与递推1.时间复杂度1秒能算1亿次,即10的8次方。若题目限制为1秒,则超过10的8次就可能超时。你所选择的算法与数据范围相关。2.关于cin,cout与scanf,printf的选择Cin,cout,与scanf, printf的区别主要在于速度,数据规模较大时,scanf,printf速度明显快一些。3.关于递归:即一个函数自己调用自己,经典例子为斐...原创 2020-02-27 17:01:57 · 634 阅读 · 0 评论 -
算法(十一) 图论 最短路问题
算法(十一) 图论 最短路问题1)图的储存邻接矩阵,邻接表,链式前向星https://www.cnblogs.com/BobHuang/p/8399826.html2)最短路问题一道题采用dijkstra,floyed,SPFA多种方法解题:https://blog.csdn.net/sr_19930829/article/details/378183151.dijkstra算法h...原创 2020-02-18 21:06:51 · 311 阅读 · 0 评论 -
算法(十) 动态规划之背包问题
算法(十) 动态规划之背包问题1)基本类型的动态规划最长上升子序列问题动态规划的一个特点就是当前解可以由上一个阶段的解推出, 由此,把我们要求的问题简化成一个更小的子问题。子问题具有相同的求解方式,只不过是规模小了而已。最长上升子序列就符合这一特性。我们要求n个数的最长上升子序列,可以求前n-1个数的最长上升子序列,再跟第n个数进行判断。求前n-1个数的最长上升子序列,可以通过求前n-2个...原创 2020-02-14 00:58:54 · 355 阅读 · 0 评论 -
算法(九) DFS与BFS算法
算法(九) DFS与BFS算法优秀的模板;https://blog.csdn.net/qq_40763929/article/details/81629800https://blog.csdn.net/u011437229/article/details/53188837很棒的总结:https://www.cnblogs.com/wzl19981116/p/9397203.html...原创 2020-02-10 18:47:07 · 221 阅读 · 0 评论 -
算法(八) 贪心法
算法(八) 贪心法非常棒的讲解和例子:https://blog.csdn.net/qq_32400847/article/details/51336300贪心算法的定义:贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即...原创 2020-02-04 18:44:09 · 170 阅读 · 0 评论 -
算法(七) hash
算法(七) hash1.7. hash哈希表Hash表也称散列表,也有直接译作哈希表,Hash表是一种根据关键字值(key - value)而直接进行访问的数据结构。它基于数组,通过把关键字映射到数组的某个下标来加快查找速度,但是又和数组、链表、树等数据结构不同,在这些数据结构中查找某个关键字,通常要遍历整个数据结构,也就是O(N)的时间级。哈希表是一种使用空间换取时间的一种方式,主要用于...原创 2020-02-02 22:24:41 · 246 阅读 · 0 评论 -
算法(六) 并查集
算法(六) 并查集查并集的概述https://blog.csdn.net/niushuai666/article/details/6662911并查集算法包括三个函数:初始化函数init(),得到根节点函数getfather(),连接函数join()初始化函数init():我们将每一个结点的前导结点设置为自己,如果在join函数时未能形成连通,将独立成点void init(int ...原创 2020-02-01 22:13:41 · 385 阅读 · 0 评论 -
算法(五) 树
算法(五) 树1.树题2029题目描述K城这里有很多棵树,树的大小和形状不尽相同。下面小A想指着一个节点,问一问你这个树的规模是多大(这棵树有几个节点)对于每个节点而言,其不会有超过5个子节点。输入第一行是一个数字n(n<=2000),表示树的节点数。接下来n行,每行是两个数fi,si(保证si仅包含一个父亲节点) 表示si的父亲是fi,如果是si是根节点,则fi=0接...原创 2020-01-30 22:31:55 · 336 阅读 · 0 评论 -
算法(四) 链表、栈与队列
算法(四) 链表、栈与队列1.链表题目描述试图编写一个链表,实现插入后,试着编写一下删除操作。(这种使用数组的方式可能会浪费内存,但是请暂时忽略这点)作为练习的判断,请输出删除链表内所有元素x后的序列。数组保证删除后仍不为空。输入第一行包括一个数字n(n<100000),表示链表内元素的个数。接下来一行,共n个整数,表示链表内的数据接下来一个数字x,表示要删除的元素。输出...原创 2020-01-22 01:03:53 · 2889 阅读 · 0 评论 -
算法(三) 排序
算法(三) 排序1.插入排序 #include<iostream> #include<cstdio> using namespace std; #define N 5 int a[N];//有序数组 int main ( ) { int i, k, x; printf("Please input %d...原创 2020-01-14 18:21:08 · 439 阅读 · 0 评论 -
算法(二) 二分查找
算法(二) 二分查找题2016题目描述有一名新生加入了合唱队,我们给他举办了一个非常大的欢迎仪式。欢迎过后,同学们想要给他安排一个合唱时,他需要站的位置。而合唱队是两面低,中间高的。这个同学可能会站在左面或者右面,或者,他作为最高的一员,会站在之前最高的人的右面。如果这个同学不是最高的,他就听老师指定,站在左面也有可能是右面。接下来,请你写一个程序,看看他最终会站在左面数第几个位置。...原创 2020-01-10 20:07:51 · 257 阅读 · 0 评论 -
算法(一) 算法初步
算法(一) 算法初步1. 十进制转为二进制(除二取余法) 简单的求值方法: 给出一个数字x,求x十进制各位相加的和(将它转化为二进制呢?)temp=1;while(x>0){ans+=x%10;x/=10;temp*=10;}整个过程分为:记录,剪切数位,记号修改三部分这里,temp指代操作的位数(值是10的乘方)如果是二进制,循环里的10全部修正为2即可如果...原创 2020-01-10 19:47:45 · 1250 阅读 · 0 评论 -
算法入门(二) 递归2
算法入门(二) 递归21.n皇后问题题目分析:因为有n个皇后,不可能用n重循环来一次一次判断是否能满足不互相攻击,所以采用递归来替代多重循环。#include<iostream>#include<cmath>using namespace std;int n;int queenpos[100];void nqueen(int k){ int i,...原创 2019-11-13 23:21:17 · 169 阅读 · 0 评论 -
算法入门(二) 递归1
算法入门(二) 递归一个函数调用其自身,就是递归汉诺塔分析:实现这个算法可以简单分为三个步骤:(1)把n-1个盘子由A 移到 B;(2)把第n个盘子由 A移到 C;(3)把n-1个盘子由B 移到 C;从这里入手,在加上上面数学问题解法的分析,我们不难发现,移到的步数必定为奇数步:(1)中间的一步是把最大的一个盘子由A移到C上去;(2)中间一步之上可以看成把A上n-1...原创 2019-11-09 00:22:13 · 193 阅读 · 0 评论 -
算法入门(一) 枚举
算法入门(一) 枚举关灯问题 (POJ1222)1.题目描述:2.解题分析:可以看出当针对第一行中的开关灯的位置确定后,第一行的灯应该是处于有些灯是被熄灭,有些灯还是开启的。因为当第一行灯的开关按钮已经确定(已经确定哪些位置要按下按钮),这些第一行还亮着的灯只有通过按下第二行的灯来熄灭了!比如按完第一行的按钮后,第一行中第1,2,5列的灯还是开着的,那么要使...原创 2019-11-09 00:06:15 · 258 阅读 · 0 评论