计算机算法(C++)
文章平均质量分 78
计算机算法(C++)
大千小熊
(ઇ〃•ω‹〃)wink♡ | 英语名:PowerBear
我是一只废物熊,经常悲伤,哀于往事,高考失利,不过好在我是透明的,应该没有人发现我这么废物嘿嘿嘿。
除此以外,喜欢烧饭,吃零食,看电影。主攻图形学,人工智能算法(图形方面)。当然啦,Blender和一些其它软件也在学习中,技多不压身嘛,哈哈。
如有来世,我希望我能变成很好看的人,并非是与谁进行比较,只是单纯的不爱学习,想要被人接纳,然后有人愿意和我玩,有人愿意喜欢我,有人可以不再嘲笑我。这样我就不用再次卑微着,用着计算机获得同情啦!
~~~~~~~
最可怕的是擦肩而过,最可悲的是回头而望,不如乘着此时珍贵的缘分,加个关注再走吧!
展开
-
【算法·笔记】LCA最近公共祖先,倍增法
现在给出一颗树,求两点间的最短距离。且,最短距离的这条线路仅此存在唯一的一条线路。洛谷题目链接:https://www.luogu.com.cn/problem/P3379OI-WIKI的链接:https://oi-wiki.org/graph/lca洛谷的描述如上,用于理解概念“最近公共祖先”这样的名词。原创 2023-04-06 19:48:05 · 450 阅读 · 0 评论 -
中北 | 第十四届某某蓝色杯模拟赛第2场 杂谈·2022年·C/C++
嗷呜嗷呜,最后一题没看懂。。。但还好是免费的嘿嘿。原创 2022-11-30 21:49:18 · 4148 阅读 · 4 评论 -
【题解·面向小学生OJ系列】codeforces : E. Cleaning Robot
(我们的dp定义,从j这个列,一直到n,j+1不包含),对于j+1列,我们绝对不考虑(0,j+1)这个元素内的脏灰,就算有,也应该提前被手动拿走,这样才符合题意。那么你有两种方法(注意,我们说过了,小机器所在的位置,默认就是没有脏灰),第一种,把下面的那个(5)号脏灰拿掉,那么就算。本身不包含(i,j)自己的脏灰,所以我们认为,我们先去(i,j)吃掉脏灰(如果有的话)。那么,下图红色数字代表,从这里出发,最大能吃的灰尘。所以,如果(i,j)对面有1的话,(1)要么事先拿走对面的1,(2)要么考虑对面的1。原创 2022-10-17 22:29:33 · 820 阅读 · 0 评论 -
【题解】CodeForces:Omkar and Bed Wars
小熊同学比较菜,刚刚入门动态规划不久,也没有CodeForces账号,但是,我使用了别的题解给出的答案,自己验证了几个答案,都是一样的,如果提交上去有几个点没过,可能是一些小细节没考虑到,在评论区DD我就好啦。写的比较详细。主要是为了让初学者也能看懂QWQ。所以,给我一个攒攒耶!本题解法多种多样,文后给出其他博客的解答方法。原创 2022-10-03 17:39:08 · 794 阅读 · 0 评论 -
题解动态规划:蓝桥杯2022国赛B组 题解 A题目
在这组题(蓝桥杯C/C++ B组 国赛)里面挑了几道喜欢的题目,做了一下,笔记思路如下。()题目图片来源于:CSDN 罚时大师月色。原创 2022-09-27 21:23:08 · 2933 阅读 · 1 评论 -
线段树杂谈·普通线段数|乘法线段数|主席树
。・ω・。)一点点前置知识x原创 2022-07-18 02:17:08 · 285 阅读 · 0 评论 -
除法分块,原理解析
例如现在我们求解:∑i=1n⌊ni⌋\sum_{i=1}^{n} \lfloor \frac{n}{i} \rfloori=1∑n⌊in⌋其中,⌊⌋\lfloor \rfloor⌊⌋是向下取整的意思。现在跟着小熊同学一起来思考,我们现在知道15/4=3 15/5=3如果我们知道i=3和i=4时候,是相同的,那么我们知道总共有2个值为3的数列,直接3*2即可。现在让我们更一般化的来思考这个问题。例如,我们现在已经知道了:ni=c\frac{n}{i}=cin=c,那么,会不会存在一个ttt也原创 2022-07-13 00:47:06 · 196 阅读 · 0 评论 -
【记录】校赛ACM,计算几何+快速素数筛除+技巧染色+出现次数
这道题目看起来是在对树进行操作,但是仔细分析这是一个NP完全问题,对于最小,我们力求每次插入的都是最小的gcd(a,b)gcd(a,b)gcd(a,b)权值,所以采用贪心法即可。对于素数来说,没什么好插的,但是对于合数来说,就会变得很好插入。比如18应该插在3的上面。这样最小公倍数就是3。Problem G.出现次数这道题目没啥好说的,注意范围给的空间比较宽裕,直接暴力就能AC。暴力方法是,设置vec,当区间满足条件,就把这个区间加入到vec里面。对于每一次的查询,查询本次查询的满足区间有多少个,原创 2022-07-13 00:18:13 · 156 阅读 · 0 评论 -
【算法】简单的线段树维护·学校暑假ACM校内模拟赛·Segtree Master
2022年暑假,学校模拟赛。5秒 256MB对于数组a1,a2,…,an 请维护一种数据结构:(请看下方截图)样例输出2:并没有什么特别难的地方,这道题考察的是一个线段数的维护,那么记录每次修改的v值进入相应的线段,然后查询的时候再取出来即可,那么复杂度即可将为lognlog nlogn级别,这是因为使用了树状来维护,修改和查询这个线段树都是一样的复杂度。另外,我们使用a数组来保存,刚刚开始读入的数据,然后再使用线段树来计算得到最终的答案。(具体请看代码)同时,注意题目中的op==2op==2op原创 2022-07-09 02:21:44 · 322 阅读 · 0 评论 -
Floyd弗洛伊德任意最短单元路径杂谈——谈去维度
这几天,偶然翻开自己在B站上面的这篇文章,这篇文章总体讲的是没什么问题的,但是我觉得还是不太清楚,所以准备在这里进行重新写一篇博客作为补充。原文回顾原文地址:https://b23.tv/1FQvrak核心思想快速回顾其实本算法的核心思想真的很简单,那么就是考虑图中每一个点,如果被当作中转点,那么对其他两个顶点之间的路径是否可以产生贡献。就比如我们有N个顶点。我们思考第N个顶点是否对C(N,2)个顶点之间的路径可以优化。那么我们设计的思路是从第1个节点开始进行计算优化,然后第2个节点能否产生优化原创 2022-03-19 21:50:29 · 422 阅读 · 0 评论 -
【大学笔试专用·算法】计算机算法设计(JAVA版本)复习资料
这份“超快星人算法笔记”免费分享给你~是本熊自己编写的哦!原创 2022-02-23 01:50:15 · 169 阅读 · 0 评论 -
计算日期之差(包含日期头尾)
题目输入:YYYY MM DD计算到20211024程序员节的这一天的Day数代码:JAVA版本:import java.util.Scanner;public class App { static boolean IsLeapYear(int y) { return (y % 4 == 0 || (y % 100 == 0 && y % 400 == 0)); } static int OriYear, OriMon, OriDay原创 2021-10-25 21:43:04 · 213 阅读 · 0 评论 -
【算法笔记·回文子串匹配】Manacher算法(马拉车算法)
参考资料:https://www.cnblogs.com/cloudplankroader/p/10988844.htmlhttps://segmentfault.com/a/1190000008484167感谢大大的优秀博客!????小熊の算法笔记:Manacher算法从简单的扩散讲起:首先我们先看最朴素的“扩散”算法。扩散算法的想法非常的简单。比如我们有一个序列为:字符ACDABACD序号01234567如果我门以序号4为中心,原创 2021-10-21 16:57:17 · 134 阅读 · 0 评论 -
【算法笔记·字符串算法】超快理解KMP算法
参考资料:如何更好地理解和掌握 KMP 算法? - 海纳的回答 - 知乎https://www.zhihu.com/question/21923021/answer/281346746https://www.cnblogs.com/dusf/p/kmp.htmlhttps://zhuanlan.zhihu.com/p/83334559?ivk_sa=1024320u(感谢????上面大佬的博客)口诀:Main串的i不会回溯,Search串的j会动态匹配。K是猜测最大的j的位置。原理:利用原创 2021-10-14 10:33:15 · 237 阅读 · 1 评论 -
【C++·数据结构】简单的实现C++链表数据结构,泛型(包含迭代器的实现)
宇宙第一小正太\ (o)/~萌量爆表求带飞=≡Σ((( つo)つ~ dalao们点个关注呗~大二上网课,老师要求写一个链表数据结构。小熊虽然很不情愿,但是还是硬着头皮干完啦!!!本数据链表的核心功能:void Push_Back(T Value); //在链表的末尾插入一个元素 void Pop_Back() { Erase(Length - 1); } //弹出末尾最后一个元素 void Insert(int Index, T Value);原创 2021-09-25 16:06:27 · 427 阅读 · 0 评论 -
【题解·通俗易懂版】第十二届蓝桥杯·2021省赛·B组·C/C++
前言:欢迎光临大千小熊的博客,我是一只又会MMD又会C++的正派熊,B站和CSDN同步更新,欢迎关注。大体的感受:本熊在考试之前大致上浏览了前几次的蓝桥杯试题,对之前考试的难度有了一个大致的了解。本熊知道蓝桥杯的难度是只增不减的。但是本熊没有想到这次蓝桥杯对比上次的难度会突然变化这么大。太哈人了。然后不知道为什么,我混了一个省一。江苏,运气好~本熊在看了填空题的前两道的时候感觉难度还可以,蛮稳定的。但是看到第三个填空题目(直线问题)的时候,我就不淡定了。怎么一下子难度提高了很多了。我慌了,不过好在原创 2021-09-25 15:45:15 · 450 阅读 · 1 评论 -
第十一届蓝桥杯 决赛 部分题解 C/C++ 通俗易懂版 保证初中生和高中生能够看懂的题解
题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。小蓝在一张无限大的特殊画布上作画。这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。小蓝在画布上首先点了一下几个点:(0,0),(2020,11),(11,14),(2000,2000)(0, 0), (2020, 11), (11, 14), (2000, 2000)(0,0),(2020,11),(11,14),(2000,2000)。只有这几个格子上有黑色,其它位置都是白色的。每过一原创 2021-06-03 22:24:26 · 797 阅读 · 0 评论 -
蓝桥杯 第十届 决赛 选讲题解 C++ 下半部分(编程题)
试题:最优包含题目描述:我们称一个字符串 S 包含字符串 T 是指 T 是 S 的一个子序列,即可以从字符串 S 中抽出若干个字符,它们按原来的顺序组合成一个新的字符串与 T 完全一样。给定两个字符串 S 和 T,请问最少修改 S 中的多少个字符,能使 S 包含 T ?其中,1≤∣T∣≤∣S∣≤1000,1≤∣T∣≤∣S∣≤10001≤∣T∣≤∣S∣≤1000,1≤∣T∣≤∣S∣≤10001 \leq |T| \leq |S| \leq 1000,1≤∣T∣≤∣S∣≤10001≤∣T∣≤∣S∣≤10原创 2021-05-29 23:20:21 · 1280 阅读 · 2 评论 -
最长回文序列
题目大意:给定一个字符串S,求出这个字符串包含的最长的回文子序列。解析:我们如果使用原创 2021-05-29 20:40:14 · 203 阅读 · 0 评论 -
蓝桥杯第十届 决赛 部分 题解 C/C++ 上半部分(填空题)
爱情到来绝不能犹豫。关注博主容不得迟缓。§( ̄▽ ̄)§试题:质数拆分题目描述:将2019 拆分为若干个两两不同的质数之和,一共有多少种不同的方法?注意交换顺序视为同一种方法,例如 2+2017=2019 与 2017 + 2 = 2019视为同一种方法。解析:我们很容易想到,如果我们求2+2017=2019而2017又可以拆成X+X这样的形式,所以2019的方案数应该是“配对成2的个数”加“配对乘2017”所有的个数。由此我们想到了dp的转移方案:前i个数指的是:2,3,5,7,。。。这原创 2021-05-25 21:35:12 · 169 阅读 · 1 评论 -
【题解】第十二届蓝桥杯(省赛)第一场:C题 直线 C/C++ (两种解法)
爱情到来绝不能犹豫。关注博主容不得迟缓。题目:答案:40257解析1(改写set):坑点:本题目涉及double运算。但是对于浮点运算通常是很危险的。主要的危险就是:精度损失。精度损失的含义是,对于double通常存在对末尾的四舍五入。比如在1/10(十进制是0.1)但是在二进制存储却是:0.00011001100110011001100110011001100110011001100110011001 10011…所以在进行0.1+1.1会出现:1.20000000000000018原创 2021-05-22 22:42:19 · 2507 阅读 · 2 评论 -
【题解】第八届蓝桥杯(国赛)·瓷砖样式·C/C++·DFS(中转点)
爱情到来绝不能犹豫。关注博主容不得迟缓。算法标签:DFS题目:解析:本题目数据量不大,可以使用DFS枚举每一个砖块的摆放方案来计算。设MAX_M代表行。MAX_N代表列。MAP代表墙壁(没贴瓷砖之前的墙壁)。当MAP的某一点的值是-1,意味着可以从这里放瓷砖,因为这一点没有被染色。MAP初始化为-1,不能走的地方为-2。颜色为0和1。放瓷砖的方向有两种。设(x,y)表示MAP的某一点。(1)从这点开始,横着放。那么(x,y)和(x,y+1)都被染色成Color。(2)从这点开始,原创 2021-05-21 21:01:10 · 351 阅读 · 0 评论 -
【题解】第十一届蓝桥杯(国赛):试题E 玩具蛇 C/C++
爱情到来绝不能犹豫。关注博主容不得迟缓。题目:【题目描述】小蓝有一条玩具蛇,一共有16 节,上面标着数字1 至16。每一节都是一个正方形的形状。相邻的两节可以成直线或者成90 度角。小蓝还有一个4 X 4 的方格盒子,用于存放玩具蛇,盒子的方格上依次标着字母A 到P 共16 个字母。小蓝可以折叠自己的玩具蛇放到盒子里面。他发现,有很多种方案可以将玩具蛇放进去。下图给出了两种方案:请帮小蓝计算一下,总共有多少种不同的方案。如果两个方案中,存在玩具蛇的某一节放在了盒子的不同格子里,则认为是不同原创 2021-05-18 19:06:43 · 751 阅读 · 1 评论 -
【题解】第十一届蓝桥杯试题B:扩散·国赛B组·C/C++
题目大意:本题总分:5 分【问题描述】小蓝在一张无限大的特殊画布上作画。这张画布可以看成一个方格图,每个格子可以用一个二维的整数坐标表示。小蓝在画布上首先点了一下几个点:(0, 0), (2020, 11), (11, 14), (2000, 2000)。只有这几个格子上有黑色,其它位置都是白色的。每过一分钟,黑色就会扩散一点。具体的,如果一个格子里面是黑色,它就会扩散到上、下、左、右四个相邻的格子中,使得这四个格子也变成黑色(如果原来就是黑色,则还是黑色)。题目分析:我们可以利用BF原创 2021-05-18 09:45:19 · 1066 阅读 · 3 评论 -
【题解】第十一届蓝桥杯:试题I,平面切分。C/C++
题目分析:一个平面被一条线切割会比原来的平面多出一个平面。如果这个时候再次多出一条跟上面的线平行的线再次切割,那么会又多出一个平面。如果一条线和别的线产生交点,那么这条线切割平面会多出:这条直线和别的直线相交出的点的个数+1。程序设计:用一个class来表示一条线,这条线的a和b分别用long double表示。然后重载==号来判断两条线段是不是完全相同。如果判断出来这条直线和之前的直线是一样的,那么这条新的直线是无意义的。所以在后面ans+=的时候判断一下,这条线是不是无意义的。然后就是.原创 2021-04-14 21:19:56 · 637 阅读 · 0 评论 -
【算法笔记·数论】快速幂,加速幂运算,超级详细。C/C++
前言:欢迎光临大千小熊的博客,我是一只又会MMD又会C++的正派熊,B站和CSDN同步更新,欢迎关注。幂运算含义:形如xnx^nxn 指数是x,底数是x的一个幂。(nnn是变量)例如24=16,22=42^4=16,2^2=424=16,22=4这样的运算。计算幂运算的方法:例如,我们想去计算242^424。我们可以循环4次,另res=1,然后res*=4。但是这样的算法是不高效率的。这是因为,我们想计算2∗2∗2∗22*2*2*22∗2∗2∗2的时候,人类一般都会用2∗2=42*2=42∗原创 2021-04-13 20:14:58 · 513 阅读 · 0 评论 -
【算法笔记·数论】最大公约数,扩展欧几里得。详细讲解(超级简单)。C/C++
前言:欢迎光临大千小熊的博客,我是一只又会MMD又会C++的正派熊,B站和CSDN同步更新,欢迎关注。正文:辗转相除法,又称欧几里得算法,是求出数子直接最大公约数的算法。常用定理:最小公倍数*最大公约数=...原创 2021-04-08 22:11:00 · 579 阅读 · 0 评论 -
【算法笔记·图论·Dijkstra】最短路径,包含路径还原
作为处理边权值大于0的最常见基础最短路径之一的Dijkstra算法。拥有快速,方便,代码简洁容易维护的特点。原创 2021-03-30 08:35:34 · 212 阅读 · 0 评论 -
【题解】食物链(Poj 1182)·两种方法的并查集(超级简单,而且非常容易理解)·C/C++
hi,这里是大千小熊,一只很かわい的小熊。欢迎您的关注。(小声:如果您乐意欢迎关注我的B站账号 )原题目链接: http://poj.org/problem?id=1182题目描述:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这N个动物所构成的食物链关系进行描述:第一种说法是"1 X Y",表示X和Y是同类。第二种说法是"2 X Y"原创 2021-03-20 22:02:55 · 391 阅读 · 0 评论 -
【题解】多重集组合数问题·动态规划C/C++
Hello,大家好,这里是大千小熊的博客,大千小熊是一只又会MMD又会C++的正派小熊,欢迎同时关注B站账号~写题目累了,就看看MMD放松一下。题目描述:题目: 有n种物品, 第i种物品有a个. 不同种类的物品可以互相区分, 但相同种类的无法区分.从这些物品中取出m个, 有多少种取法? 求出数模M的余数.例如: 有n=3种物品, 每种a={1,2,3}个, 取出m=3个, 取法result=6(0+0+3, 0+1+2, 0+2+1, 1+0+2, 1+1+1, 1+2+0).题解思路:首先您原创 2021-03-20 20:16:04 · 418 阅读 · 0 评论 -
【题解】2020年蓝桥杯C/C++程序设计B组·试题 D: REPEAT 程序
欢迎光临大千小熊的博客,我是一只又会MMD又会C++的正派熊,B站和CSDN同步更新,欢迎关注。题目背景说明:这是一道2020年蓝桥杯C/C++程序设计B组·省级比赛的题目。题目难度不高,主要是想法方面的问题。这里小熊想了两种方法,下面一一讲解。题目描述(试题 D: REPEAT 程序):附件 prog.txt 中是一个用某种语言写的程序。附件在本文的末尾。其中 REPEAT k 表示一个次数为 k 的循环。循环控制的范围由缩进表达,从次行开始连续的缩进比该行多的(前面的空白更长的)为循环包含的内原创 2021-03-20 20:09:28 · 833 阅读 · 0 评论 -
划分数,分苹果问题·计算机算法·动态规划·C/C++
Hello,你好呀,这里是大千小熊,一个又会MMD又会C++的正派角色。B站同名UP主,CSDN同步更新,欢迎您的关注。问题描述:有N个苹果,M个盘子,问总共有多少种摆放的方法?(注意,盘子不分先后的顺序)例如:4个苹果3个盘子总共有(1,1,2)(1,3,0)(2,2,0)(4,0,0)这4种方法。1<=M<=n<=100要求:使用动态规划解决这个问题。题解一开始我使用的状态方程是dp[i][j]=sum(dp[i-1][j-k]),意思就是说,先取出k个,然后剩下的再次进原创 2021-03-19 20:14:08 · 621 阅读 · 0 评论 -
Floyd-Warshall算法(弗洛伊德算法)·C/C++·基础图论
不同于Dijkstra算法,Floyd-Warshall算法可以求出一张图中任意两点的距离。该算法由1978年图灵奖获得者斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。伯特·弗洛伊德先生图灵奖:作为计算机权威奖项之一,被誉为计算机界的“诺贝尔”奖。截至至2020年11月,姚期智先生是我国唯一一位获此殊荣的计算机科学家。姚期智先生算法的核心思想:动态规划。设置状态:d[k][i][j]的含义是,假如思考的路径包含了k号点(0->k)(注释:未必非要从K顶点走),那么最优的答案是多少原创 2021-03-19 20:07:17 · 433 阅读 · 0 评论 -
贪吃蛇小程序·C/C++
Hello,大家好,这里是“大千小熊”,一个又会MMD,又会C++的正派角色。Bilibili同步更新,期待你的关注。程序效果:开始游戏的欢迎界面:字符画(1)开发商的Logo:字符画(2)游戏的主界面:主界面注意事项:您需要使用“旧版本的控制台”才能真确的进行游戏。玩法说明:贪吃蛇会随着长度越来越难,蛇的速度会不断的加速。程序耗时:从0到完整的代码总共耗时为7个小时。思路分析:贪吃蛇是一个很经典的游戏,其中算法不难,新手也能轻松做出。其中这个程序涉及两个问题:(1)Wind原创 2021-03-19 19:36:12 · 1004 阅读 · 1 评论