- 博客(179)
- 收藏
- 关注
原创 P4355 [CERC2015] Kernel Knights
因为原图是二分图,所以所有的环都是偶环。因为每个点只有一个出度,所以所有的环都是简单环。那么这个图可以想象成一个内向基环森林。每次给度为 0 的节点染色。每遍历到一个点:- 如果将要到达的点度为 0 或者它的颜色为不可选(因为此点不可选所以不能随便染色),那么继续遍历。然后把所有没有标记的环搞一遍就可以了。
2023-06-30 10:32:26 398
原创 [CSP-S 2021] 回文
比 T2 简单的 T3 这辈子不多了……是名副其实的签到题……不过能从暴力n^3优化到n,这是一个非常难的过程。
2023-06-16 17:43:04 729 1
原创 [CSP-S 2022] 策略游戏
历年来最简单的 T2。开场的时候看到这个题,内心:“【】,提高组考博弈论了?然而并不是,这就是个很愚蠢的贪心题,只需要将所有可能的情况自己手动模拟一下,就可以推出正确的答案。
2023-06-14 18:41:08 1588 2
原创 [NOIP2012 提高组] 借教室
在这道题里面,我们看到了差分及前缀和的应用,既然差分与前缀和都行,那么我们可以热烈欢迎线段树(树状貌似也还行?)做法……
2023-06-12 18:04:46 566 1
原创 [NOIP2004 普及组] FBI 树 递归解法
我们可以把由 0 和 1 组成的字符串分为三类:全 0 串称为 B 串,全 1 串称为 I 串,既含 0 又含 1 的串则称为 F 串。FBI 树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三种。由一个长度为 $2^N$ 的 01 串 S 可以构造出一棵 FBI 树 T,递归的构造方法如下:1. T 的根结点为 R,其类型与串 S 的类型相同;2. 若串 S 的长度大于 1,将串 S 从中间分开,分为等长的左右子串 S1 和 S2;
2023-05-29 18:27:45 680 1
原创 [NOIP2004 普及组] FBI 树 队列解法
我们可以把由 0 和 1 组成的字符串分为三类:全 0 串称为 B 串,全 1 串称为 I 串,既含 0 又含 1 的串则称为 F 串。FBI 树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三种。由一个长度为 $2^N$ 的 01 串 S 可以构造出一棵 FBI 树 T,递归的构造方法如下:1. T 的根结点为 R,其类型与串 S 的类型相同;2. 若串 S 的长度大于 1,将串 S 从中间分开,分为等长的左右子串 S1 和 S2;
2023-05-29 18:19:51 825 1
原创 [NOIP1999 普及组] Cantor 表
该题题目很简单,可以用非常简单的算法解决,但是我们可以举一反三,更加深入的思考,想到更牛X,更高效快速的算法。
2023-04-18 21:20:30 703 2
原创 [NOIP1999 普及组] 回文数
string s;q是高精数组,w是q反转后的数组,l是高精度数的长度,n是进制,ans是所需的步数, s是输入高精度的字符串。这题需要会高精加,高精反转,高精判断回文数和数组存高精度等诸多基础算法。
2023-03-30 16:30:34 733 1
原创 差分的基本思想
D[i]),把我们的A代入进去,因为D[i]=A[i]-A[i-1],所以S[i]也可以等于A[0]+A[1]-A[0]+A[2]-A[1]+A[3]-A[2]+……+A[i]-A[i-1],这样把相同的加减给抵消掉,可以得出来A]i]的差分数组是D[i],D[i]的差分前缀和是A[i]。我们一般将A[0]初始化为0,A[]的下标一般都是从1开始的(这样差分方便一些,如果从0开始存的话,D[0]的差分就要用到A[-1]了,在C++里面数组越界是不能允许的)。接下来我写的几篇文章都会讲一些关于差分的例题!
2023-03-27 21:27:42 230 1
原创 二叉平衡树(C++)
平衡二叉树也叫做AVL树,AVL树的名字来源于它的发明作者G.M. Adelson-Velsky 和 E.M. Landis。AVL树是最先发明的自平衡二叉查找树(Self-Balancing Binary Search Tree,简称平衡二叉树。我们怎么知道这棵二叉搜索树平不平衡呢?我们知道,二叉搜索树的搜索时间和高度是有直接关系的,但是我们按递增、递减序输入之后,高度就和n一样了,所以时间复杂度为O(log n).想要优化,就是改变这棵二叉搜索树的高度。
2023-02-25 19:51:55 1126 1
原创 [NOIP2011 提高组] 铺地毯
为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到 n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。
2023-02-23 18:21:31 380 1
原创 [NOIP2002 普及组] 过河卒
至此,我们成功将一个时间复杂度和空间复杂度为 O(n^2)O(n2) 的算法,优化到了时间复杂度 O(n^2)O(n2),空间复杂度 O(n)O(n),虽然对于这道题而言没有任何的意义,但是或许能在做其他难题的时候启发我们一点思路,总归是没有坏处的。
2023-02-23 16:46:44 721 1
原创 二叉查找树(C++)
二叉查找树是什么呢?(也叫二叉搜索树)就是字面意思,首先是一颗二叉树:一棵树,最多分两个叉。1.1 满二叉树上面那个图就是一颗二叉树,同时也是一颗满二叉树:每一个节点都有两个儿子,左儿子和右儿子。同时啊,还有完全二叉树:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。1.2 完全二叉树1.3 普通二叉树。
2023-02-21 17:56:33 1135 1
原创 斐波那契数列的六种解法
有些时候,一个问题,能用简单算法解决就尽量不要用复杂的算法,例如斐波那契数列,如果复杂度O(n)可以解决,可以直接用三个变量循环法解决,不必要用复杂的递归递推算法了。如果O(n)都不能解决,那就只能使用矩阵快速幂法了!
2023-02-08 15:53:17 5253 2
原创 斐波那契数列
我们可以写一个递归函数fun来解决,参数为一个int整数a,我们知道斐波那契数列的第一个数是1,第二个数也是1,所以我们在进行fun函数的时候,如果n==1那么返回1,如果n==2那么也返回1,如果不是1也不是2,那么我们可以进行递归解法,我们知道第n项=第n-1项+第n-2项,那么如果不是1和2,那么返回的就是fun(n-1)+fun(n-2).一、斐波那契数列指的是这样一个数列:1、1、2、3、5、8、13、21、……递归是指递归该函数,指递归函数自己调用自己的函数,是一种编程方式。
2023-02-07 18:35:07 1656 1
原创 [CSP-J 2021] 网络连接
TCP/IP 协议是网络通信领域的一项重要协议。今天你的任务,就是尝试利用这个协议,还原一个简化后的网络连接场景。在本问题中,计算机分为两大类:服务机(Server)和客户机(Client服务机负责建立连接,客户机负责加入连接。需要进行网络连接的计算机共有 n 台,编号为 1∼n,这些机器将按编号递增的顺序,依次发起一条建立连接或加入连接的操作。每台机器在尝试建立或加入连接时需要提供一个地址串。服务机提供的地址串表示它尝试建立连接的地址,客户机提供的地址串表示它尝试加入连接的地址。
2023-02-06 10:47:21 830 1
原创 [NOI Online #1 入门组] 文具订购
其实这三种方法代码都非常的相同,但是时间复杂度却大不一样,说明,一个复杂度极高的代码,只要你细心观察,稍微在关键点改上几笔,可能就比之前快上许多倍呢!
2023-02-02 08:15:00 675 1
原创 [NOI Online #3 入门组] 最急救助
这道题作为NOI Online的模拟赛的第三题,也就是最后一题,属实是太水了,我们只需要掌握结构体的运用,计数,sort排序比较函数,排序优先级就可以了,连一些算法都不必要用出来。
2023-02-01 19:15:00 573 1
原创 [NOI Online 2021 入门组] 切蛋糕
这道题作为NOI Online 2021的第一题,还是比较简单的,只需要手推一下,就可以进行分支判断了!
2023-02-01 14:47:52 317 1
原创 [NOIP2008 提高组] 笨小猴
这道题是2008年提高组第一题,但是难度不算很高,只有普及1~2题的难度,考的知识点也很多:质数的判断,字符桶计数,找数组最大最小值。对于一个初学者来说,应该算是挺难的了!
2023-01-31 11:12:32 1331 2
原创 梦熊杯-十二月月赛-钻石组题解-B.卷王
这道题很简单,很简单!简单到我认为他都应该编入白银组第一,二题的,仅仅只需要学生学会计数就行了!为什么会在钻石组里面呢?还是钻石组的第二题?
2023-01-30 22:15:05 712 1
原创 梦熊杯-十二月月赛-白银组题解-D.智慧
运用了函数的代码长度为27行,没有运用函数的代码长度为57行,多了30行的差距,你说函数有多重要了吧,可以很大程度增加你编代码的速度。但是不要乱用函数,毕竟调用函数要多出O(1)的时间,有些时候如果有重复的语句需要使用(大于1次),就可以写成函数。如果只用一次,还要写成函数的话,就多了O(1)的时间开销,这样时间换速度就亏了,还不如不写函数。
2023-01-30 11:31:27 752 1
C++题目数素数代码+详细注释
2022-12-11
C++递归算法详解.docx
2022-12-04
如何学好C++(自我的经验及描述)
2022-12-03
C++文件读写+二进制读写+STL文件函数+创建文件+读指针+写指针+读写指针+可应用于系统中底层的文件创建+计算机专业领域
2022-12-03
C++算法题(字符串)
2023-03-25
C++算法题(不是很难)
2023-03-25
C++算法题(动态规划算法)
2023-02-26
C++算法题(不超过普及难度)
2023-02-26
C++算法题(不超过普及组难度)
2023-02-26
C++算法题(类似贪心算法)
2023-01-30
C++算法题(不超过普及难度)
2023-01-30
C++算法题求解(字符串)
2023-01-29
C++算法题(不需要数据结构,帮我修正一下错误)
2023-01-29
关于#C++动态规划#的问题,如何解决?
2022-12-31
C++算法(希望能帮助我解答一下)
2022-12-30
C++算法题:喂奶牛(谁能帮我做一下,急!)
2022-12-18
C++算法:填充单词,希望是代码+思路
2022-11-30
C++给出基环树的每条边的边权,求每一个点的点权(数据结构)
2022-11-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人