学习笔记
文章平均质量分 89
RealMartinX
只是想做一个很直的猿
展开
-
scanf对字符串、字符及其他变量的输入细节
作为一个高一就接触C语言的老玩家,写这篇博客给我有一种返祖的感觉,毕竟scanf是我第一天就学的东西……但是很无奈,前些天的C语言考试,就是死在了输入这边。逻辑轻松秒杀,数据就是怎么都输入不对。离谱的scanf,以前都是用cin习惯了,现在个人感觉上级小考最难的就是scanf……网络上的详解不够“亲民”,我在这里特地做了一个亲民的教程,保证能够真正学会使用scanf。文章中华,我总结了一个scanf通用公式,用伪代码的形式给出了scanf的输入逻辑。可以完美应对期末考试的scanf输入问题,不会出现错输原创 2022-06-11 11:43:02 · 16235 阅读 · 19 评论 -
Arduino常用指令汇总+详解
基本数字IOpinMode(pin,Mode);//pin为数字引脚编号,Mode是输出状态//一般有OUTPUT和INPUT和INPUT_PULLUP三种状态//注意,INPUT_PULLUP相当于直接给这个叫接了一个上拉电阻(连VCC),所以此脚默认输出高电平...原创 2022-01-26 11:26:27 · 11937 阅读 · 2 评论 -
《51单片机C语言程序设计教程》涉及的细节问题笔记
前言上一次写博客仿佛是在一万年前。不论你想从这篇博客中了解到什么,如果你是一个新手,请自己审查自己手里拿着的板子。我的单片机型号为STC89C52RC,如果你不是这个型号,那么本文所述可能将不适合你的开发。另外,本文编写的目的是以STC89C52RC为参考,来纠正**《51单片机C语言程序设计教程》(作者王云·异步图书·人民邮电出版社)**中的一些表述和代码。并不是说这本书说错了,而是这本书实在过于古老(自己看看那示例图片的浓浓XP风),已经不适合我这块生产于2021的开发板了本文将持续更新单片原创 2022-01-18 14:28:19 · 2581 阅读 · 2 评论 -
运算符重载附加篇——字符串(OI选手专用)
听作者讲骚话这是我写完结构体之后的故事了…后来有一位比霍金还sao的很年轻漂亮苗条老女人 来问我说碰到结构体包含二维数组怎么办(⊙o⊙)…其实排序的时候,sort交换元素使用的就是类似swap的东西,会交换对象的所有地址。因此你可以把二维三维四维五六七八维都往结构体里扔,这是没有关系的。如果要在一个结构体里扔很多字符串,不建议使用C++类字符串就是这个东西:string a[max...原创 2019-08-18 14:54:50 · 360 阅读 · 0 评论 -
结构体与运算符重载(附赠重载高精度加法)
什么是结构体带过一下一些基础问题。这是一个很高级的问题。啊,名字上很高级。结构体其实就是一个自定义原创 2019-08-17 19:04:22 · 1168 阅读 · 4 评论 -
分治经典——归并排序(MergeSort)
分治法分治,字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。在计算机科学中,分治法就是运用分治思想的一种很重要的算法。分治法是很多高效算法的基础,如排序算法(快速排序,归并排序),**傅立叶变换(快速傅立叶变换)**等等。归并排序示例代码void mergex(i...原创 2019-08-22 09:44:36 · 1172 阅读 · 0 评论 -
高级数据结构——线段树
听作者讲骚话今天是很沉重的一天,进来CCF官宣取消OI,也不知道是不是真的。OIer们不要放弃梦想!大家一定要勇往直前!这线段树会很难…至少我是这么想的…不过我也是经过百般实验才敢写这个博客!线段树我要你何用?假定我给你一个定区间,让你以最快的速度做这样的操作:修改其中的一个子区间,查询另一个子区间的值,而且重复这些操作。你会说:for循环。没错,这复杂度是O(N)线段树可以说是区间神器...原创 2019-08-16 21:36:41 · 333 阅读 · 2 评论 -
LIS算法(DP)——最长不上升子序列(codevs P1044 拦截导弹)
戒骄戒躁戒傲原本对我来说,这种三岁小孩的题目是完全不需要写博客的。咳咳,今天中午吃得很好,而这道题是我饭后的甜点,毕竟刷题之前AC一个代码还是很舒服的一件事情。然而。。。。。。这个经典的LIS问题——拦截导弹居然活生生耗了我一个小时二十分钟!额。。。你想知道我是怎么耗的?我不是卡在第一问,而是该死的第二问把我难住了。确切的说不是难住,而是我看过某奥赛一本通里边说第二问直接贪心,而且看他给的示...原创 2019-08-21 17:46:46 · 351 阅读 · 0 评论 -
数论基础:斐波那契数列全讲
在烧脑之前的骚话我仿佛在逗你玩。Fibonacci数列题目描述 Description斐波纳契数列是这样的数列:f1 = 1f2 = 1f3 = 2f4 = 3…fn = fn-1 + fn-2输入一个整数n求fn输入描述 Input Description一个整数n, n<= 40输出描述 Output Description一个整数fn数据范围及提示 D...原创 2019-08-23 22:54:41 · 1092 阅读 · 3 评论 -
codevs P3117 高精度练习之乘法
一万(ge)字检讨书今天早上心情很好,然后我想AC几道题来展示自己很牛逼。[手动滑稽]然后我就想找一找简单的题来练练。突然想起codevs黄金天梯赛里有三道高精度的练习题,然后翻了翻,很快解决了高精度加减法。然后我就开始无情嘲笑高精度乘法 因为我觉得我写得很爽很6啊。然后一遍过样例~~~~~~心情愉快的无法想象。然后提交。这真 * * 大块人心。。。。。。然后愉(jue)快(w...原创 2019-08-20 13:05:44 · 209 阅读 · 0 评论 -
克鲁斯卡尔算法(Kruskal Algorithm)——图的最小生成树
听骚话讲作者[手动滑稽]其实早就该写这篇博客啦。图的最小生成树一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或Prim(普里姆)算法求出。换句话说,就是使原图变成一棵树并且要求这棵树中保留的边最小。(变树的过程需要删除边)如下图,红线为此图的一个最小生成树:浅谈克鲁...原创 2019-08-19 18:06:01 · 1869 阅读 · 0 评论 -
位运算和比特数组
枚举查找和对分查找的优劣枚举查找的劣势简直无需多言,有n个元素,那复杂度就是o(n),查找一个元素是如此地费劲!倘若我需要你做m次查找,复杂度就是o(n*m)。当然,我们可以用对分查找来优化,但是对分查找需要一个有序的数组,通过每次对折一半的方法,最终的复杂度是o(logn),小于线性。但是这还是不能让我们满意。在解决图论问题时,我们用到了DFS。DFS要求不能经过重复的点,所以我们需要创建一...原创 2019-07-16 21:41:34 · 1452 阅读 · 0 评论 -
邻接表存图法
邻接表存图法也才刚刚学会这个不久,记一下防止忘记了。邻接表适合存储稀疏图,它不会像邻接矩阵一样浪费大量的空间,而是把所有的边存在一个表里面,在需要的时候,就遍历该表,然后找出自己想要的边。存储边的方法和邻接矩阵其实是一样的,邻接矩阵里面,e[a][b]=1就表示从点A到点B有一条距离为一的边(两点确定一条边),那么邻接表也是大同小异,我们需要一个结构体数组作为边表,如下:struct edg...原创 2019-07-12 15:13:56 · 3398 阅读 · 4 评论 -
二分图最佳完美匹配——KM算法
前情概要学km算法之前,笔者还是希望大家已经掌握了匈牙利算法——也就是对于求解二分图最大匹配的算法。学习本算法的前提除了已经掌握C++语言之外,还需要掌握邻接表存图法,不会的朋友这里有传送门 [微笑]邻接表存图法km算法是匈牙利算法的改进,他不仅仅继承了匈牙利算法的最大匹配,还可以让匹配后所有匹配边权重加起来最大或者最小——计算机算法总是寻找这些“最”。如果大家对什么是二分图或者什么是二分图...原创 2019-08-16 20:42:58 · 4364 阅读 · 3 评论 -
贝尔曼算法队列优化(SPFA)
最短路问题想必大家接触图论的时候,结束了DFS和BFS,接下来就是求最短路了吧!在学SPFA之前,你也许已经接触过弗洛伊德算法和迪杰斯特拉算法,甚至还学过贝尔曼算法,然而,不管你以前学过什么,今天的SPFA都可以向你保证——零基础学会!言归正传,话回正题。什么是最短路问题呢?就是求两点之间的最短路,当然是一个带权图(没权值的图还最短?)。然而SPFA是由贝尔曼改良过来的,所以这也是单源最短路...原创 2019-07-15 12:13:01 · 461 阅读 · 1 评论 -
动态规划基础——0/1背包问题
0/1背包问题的描述这种背包问题是最基础的一类背包问题。只要掌握的这种,后面的也就是大同小异了。因此,我在这个问题上将讲得非常详细。0/1背包问题就是存在一个背包有着固定的容积M,物品有自己的质量w和价值c,当然,每一个物品都只有一件,而且不可拆分。你的任务是:把这些东西装入这个背包,使装入物品的价值最大。首先,贪心算法只有在物品可分的时候才会生效(求性价比),搜索这个指数级的复杂度不解释!...原创 2019-07-14 20:35:53 · 363 阅读 · 1 评论 -
二分图最大匹配——匈牙利算法
什么是二分图今天终于复习到了二分图了。写个博客纪念一下…二分图,额,笔者感觉有点点无聊?如果有人现在突然问我:什么是二分图?(⊙o⊙)…我也很难讲——很难专业地讲(专业的真的很恶心,反正我理解不了)…但是,我还是想跟你讲什么是二分图。下面这个,有点像小学玩过的连连看——这就是二分图。当然,有专业的大神就听听二分图的定义吧:二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一...原创 2019-07-14 15:12:40 · 548 阅读 · 0 评论 -
Tarjan算法——求强连通分量
什么是强连通分量强连通分量,是一个有向图的最大强连通子图(看起来好像没有什么解释效果…),好吧,强连通分量就是在一个有向图中,从任意一个点出发,最多可以走过的所有的点构成的一个点集,将其称之为强连通。强连通分量就是这些集合里面最大的那个。如下图:2,3,5,就是强连通的,因为从二出发可以到达2,3,5的任意一个点。所以1,4,也是强连通的。我们不难发现,除了双向边以外,强连通都是环套环的形式...原创 2019-07-12 20:20:35 · 2990 阅读 · 1 评论