算法与数据结构
文章平均质量分 50
柘尾鱼
这个作者很懒,什么都没留下…
展开
-
2022蓝桥杯小记
4月9日 复习到的欧几里得算法求最大公因数和质因子都考到了,全排列也考到了,但在考场上忘了全排列函数怎么拼写……对自己无语。还忘记了如何用代码计算异或,最后想要不然自己写个函数实现,没时间了。总体来说还是复习的不够扎实,一些基础题因为一些记忆性的东西忘记,无法做。后面两道大题用暴力做法写了一下,希望能拿点分。拿奖的希望比较小,原本还想冲省一,现在感觉拿奖就好。4月28日 出成绩了,省三,虽然和预期的差不多,还是有些失落。读研以来一直断断续续的跟着紫书做题,中间做过一段时间剑指offer,再到备原创 2022-04-28 12:59:04 · 382 阅读 · 0 评论 -
【常用函数】全排列
全排列(蓝桥杯考场忘了函数如何拼写,对自己无语…)bool next_permutation(iterator start, iterator end) // 字典序从小到大bool prev_permutation(iterator start, iterator end) // 字典序从大到小头文件: #include <algorithm>函数功能: 把序列当前的排列[start,end)[start,end)[start,end)更改为按字典序的下一排列,并返回true。若当原创 2022-04-13 20:05:49 · 118 阅读 · 0 评论 -
【数学知识】质数与质因子
一、质数1. 概念 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数,否则称为合数。规定1既不是质数也不是合数质数的个数是无穷的2. 例题:AcWing 3497 质数3. 代码: 判断质数时for循环的停止条件可以有几种形式:i<=n/ii<=n/ii<=n/ii<=sqrt(n)i<=sqrt(n)i<=sqrt(n):相较第一种运算速度慢i∗i<=ni*i<=ni∗i<=n:要注意原创 2022-04-13 19:22:57 · 1227 阅读 · 0 评论 -
【数学知识】快速幂
快速幂思想: 常规计算ana^nan,使用累乘n个a的方法,时间复杂度是O(n)O(n)O(n)。使用快速幂可把计算ana^nan的时间复杂度降到O(logn)O(log_n)O(logn)。 为降低计算量,我们可以先计算出a2a^2a2,再累乘a2a^2a2 来计算ana^nan,这样计算复杂度可降为O(n/2)O(n/2)O(n/2)。再以2112^{11}211 为例,11的二进制形式为1011(1+2+8),因此有211=21×22×282^{11}=2^1×2^2 ×2^8211=21原创 2022-04-13 16:56:25 · 86 阅读 · 0 评论 -
【数据结构】并查集
参考博客并查集1并查集2算法学习笔记(1):并查集并查集(Union-Find Set) 也叫 Disjoint Set,由 Bernard A. Galler和Michael J. Fischer 在1964年提出,是一种树形数据结构,多用于处理一些不相交集合(disjoint sets)的合并与查询问题,可快速判断出两个元素是否属于同一集合/联通。查找(Find):查询两个元素是否在同一个集合中;合并(Union):把两个不相交的集合合并为一个集合。1. 初始化 初始情况下各原创 2022-04-12 14:02:48 · 642 阅读 · 0 评论 -
【数学知识】拓展欧几里得算法
欧几里得算法和扩展欧几里得算法拓展欧几里得算法的简单讲解和应用原创 2022-04-11 13:52:43 · 1493 阅读 · 0 评论 -
Dev C++调试 点击下一步无反应问题
最近用Dev C++做UVA的题,调试代码点击下一步总是没有反应,查了一下资料,初步解决了问题。参考博客Dev c++单步调试 + 点下一步无反应 + 显示STL容器内容已解决】Dev C++调试模式按下一步卡住(断点语句为cout)问题原因只要添加了变量查看,点击下一步就没有反应(待解决);遇到cout语句中有endl时,点击下一步无反应,需将endl改为’\n’;或直接添加 #define endl '\n’......原创 2021-07-15 10:55:11 · 7953 阅读 · 0 评论 -
Squares UVA - 201 (紫书 习题4-2 正方形)
磨了挺长时间,思路还算比较清晰,提交时一直WA,很打击信心,发现了uDebug的用法,测试了别人的例子,发现是输出的问题,最后一个例子结束后不应该输出星号*分节符,修改后AC。#include <stdio.h>#include <string.h>#define maxm 144 + 6 // 最大边数 8*9*2 = 144#define maxn 9 + 1 // 每行/列顶点数 2 ~ 9 /* 思路:1 正方形可能的边长区间为 1 ~ n-1,原创 2021-03-29 18:56:21 · 107 阅读 · 0 评论 -
UVa512 Spreadsheet Tracking 追踪电子表格中的单元格
紫书上的一道例题,看到代码量和题目这么长,真是是不想看,感觉根本做不出。后来花了一上午,做出来了,效率不高,但还挺有成就感,记录一下。大概流程:读书中中文题目读英文版输入时输出要求想思路(很重要,不要急着写代码)实现知识点:复习了指针作为函数形参的使用方式,即传入实参的地址,函数中使用该形参记得使用指针形式,这样可改变实参的值。for循环与while循环可等价使用,while循环较简练。字符串比较函数:strcmp(str1, str2)返回值:如果返回值 < 0,则表示原创 2021-02-28 13:24:54 · 125 阅读 · 0 评论 -
习题3-8 循环小数 UVa202
算法竞赛入门经典(第二版)P59 习题3-8 循环小数 UVa202这道题写的时候,第一次感觉到数学、算法的某种魅力。刚开始一直想是否存在某种函数可以得到整数相除的,小数点后指定位数的结果,后发现不可行。然后在草稿上写除法的计算过程时,发现对于除法a / b,余数只有b种(0 ~ b-1),所以记录每次除法运算的余数,当余数相等,则代表开始循环。#include<stdio.h>#include<string.h>// 余数等,开始循环// 余数有 b 种(0 ~ b-1原创 2021-02-07 10:35:42 · 211 阅读 · 0 评论