- 博客(69)
- 收藏
- 关注
原创 Rayan Programming Contest 2024 - Selection (Codeforces Round 989, Div. 1 + Div. 2)
强度有点大,只写了三道题。
2024-12-01 21:54:26
568
1
原创 今日codeforces刷题(1)
新栏目,每隔几天就保质保量地刷个10道codeforces题左右的样子筛选1200-1500难度的题,然后按通过题目的人数降序排列的前10题。
2024-11-29 23:32:07
1418
原创 牛客练习赛132
第一次打牛客练习赛,太难了,题目只看了四个题,最后只开了两道题(A和C)。这次还有好几个佬AK了,太牛辣,我就只放前四个题的大致思路和解法了。
2024-11-29 22:37:16
641
原创 数据结构-树状数组专题(2)
差分实际上是前缀和的逆运算,类似于函数求微积分实际上是函数求导函数的逆运算。因此我们可以得到一个结论差分数组的前缀和等于原数组,原数组的前缀和就等于前缀和数组前缀和的差分等于原数组,原数组的差分就等于差分数组我们回忆一下前缀和是怎么来的那么移项可以得到这就是差分数组的构造方式,此时的a数组就相当于差分数组,prefix数组相当于原数组因此就有i
2024-11-19 21:12:10
1276
原创 数据结构-树状数组专题(1)
在单点修改和区间查询(单点查询)中,暴力的算法时间复杂度会非常的高,如果想使用前缀和减少时间复杂度,但是我们发现由于频繁地单点修改,导致无法高效地维护前缀和数组,因此衍生出了我们的这个树状数组的高级数据结构。如下图:观察图,易发现:C1=A1C2=A1+A2C3=A3C5=A5C6=A5+A6C7=A7于是我们引入lowbit的概念,就是一个数的二进制表示的最低位1表示的数值,例如6的二进制为110,因此10转换成十进制的值即为2,所以6的lowbit是2。
2024-11-19 20:25:04
647
原创 牛客周赛 Round 67
中间acm停了半年,现在水平退步很明显,想着刷一刷牛客周赛练一练,晚上发挥很烂,被第二个题卡了半天。不过比赛一结束,把除了最后一个题外的题都ac了。
2024-11-10 23:41:29
933
原创 数据结构-并查集专题(1)
并查集(disjoint set),英文直译过来是不相交的集合。我们中文取名成并查集,是因为这类集合主要具有两个操作:并和查,并即合并两个集合,查即查询集合的某些信息。
2024-11-09 03:06:42
1273
原创 【动态路由协议】OSPF基础1
动态路由协议分类:1.IGP(内部网关协议,位于同一个自治系统内)1.1距离矢量路由协议RIP(距离矢量路由)1.2链路状态路由协议OSPF(开放式最短路径优先)IS-IS(中间系统到中间系统)2.EGP(外部网关协议)2.1BGP(边界网关协议)
2024-07-31 05:10:37
281
原创 【动态路由协议】RIP
动态路由协议分类:1.IGP(内部网关协议,位于同一个自治系统内)1.1距离矢量路由协议RIP(距离矢量路由)1.2链路状态路由协议OSPF(开放式最短路径优先)IS-IS(中间系统到中间系统)2.EGP(外部网关协议)2.1BGP(边界网关协议)
2024-07-31 04:10:16
576
原创 ZISUOJ 数据结构--图及其应用
最小生成树采用prim还是kruskal算法要看题目怎么给出数据,如果以邻接矩阵的形式给出,采用prim算法比较合适,如果以边和边的权重的形式给出,则采用kruskal算法比较合适。例如这里的D和E题采用kruskal算法比较好,但是不代表用prim算法不能做,我这两个题给出的就是prim的解法,但是某些题用另一个算法极不方便,因此还是建议采用题目所暗示我们应使用的方法最佳。主要考察建图,图的遍历以及求最小生成树。都还是比较简单的,后面就直接上代码了。
2024-05-24 01:54:58
538
原创 C++实现图的存储和遍历
许多新手友友在初学算法和数据结构时,会被图论支配过。我这里整理了一下图论常见的存储和遍历方式,仅供参考。如有问题,欢迎大佬们批评指正。存储我将提到四种方式:邻接矩阵、vector实现邻接表、数组模拟单链表实现的前向星实现邻接表、结构体数组直接存储边。遍历我将提到三种方式:dfs、bfs、按照边的权重值大小遍历输出。
2024-05-24 01:41:01
890
原创 ZISUOJ 高级语言程序设计实训-基础C(部分题)
2.欧拉筛(也称线性筛)+前缀和预处理:用使用欧拉筛法预处理出1~3e6内所有数的素性,在遍历一遍1~3e6(假设循环遍历为i),计算出i的各位数之和,如果i和i的各位数之和都为素数,则prefix[i]=prefix[i-1]+1否则prefix[i]=prefix[i-1]。从内层矩形开始遍历判断即可,满足条件就放进vector,最后先判断vector的大小,如果为0,要特殊处理输出,否则,顺序输出结果即可(因为遍历的时候就是有序的,所以不用再排序了)。题目说
2024-04-28 02:32:55
1180
原创 ZISUOJ 数据结构--队列及其应用
基本都是bfs的常见模板题型,思路都很直接,不过后面有两道题很搞心态,它们给的坐标x、y是反的,导致刚开始一直错。题目还是要看仔细,不能先入为主。
2024-04-22 22:19:22
471
原创 ZISUOJ 高级语言程序设计实训-基础B(部分题)
根据数据范围10^6,我直接使用最暴力的方法,遍历n到m,每个遍历到的数,都把它转成字符串,再使用的find()函数来查找'4'和'62',如果找到了,count++,否则continue,最后输出m-n+1-count即可。以字符串形式读入小数,从第三个字符开始统计,分子初始化为0,分母初始化为1,分子每次乘以10再加上字符-'0'的值(或者直接异或48也能实现同样的效果),分母每次乘以10,把两个数都除以它们的最大公约数再输出即可。基本的字符变换题,这里注意读入的问题即可。
2024-04-22 19:46:54
989
原创 面向对象——继承、多态、方法重写、构造方法重载简单例子
这学期开了面向对象的课程,老师上星期布置了作业,之前用JAVA写了一遍,今天心血来潮又用C++写了一遍。博主只会敲代码,但面向对象是小白一个,欢迎交流学习。
2024-04-15 22:24:07
330
原创 ZISUOJ 数据结构-栈
利用中缀表达式可以轻松求解,注意符号之间的优先级问题,计算'-'、'/'、'^'时要注意参与运算的两个数字的先后顺序。遇到左半边括号,将其入栈,遇到右半边括号,则先判断栈是否为空,若为空,则匹配失败,若不为空,则再判断栈顶元素是否是与之匹配的左半边括号,若不是,则匹配失败,一直匹配到栈空,如果栈空,则匹配成功,否则匹配失败。这个题相比上一题,不仅要匹配的数量更多,并且还要注意括号优先级的问题,我这里选择再加了一个哈希表来匹配优先级。跟第一题相似,注意括号对应匹配即可。
2024-04-15 21:00:13
619
原创 解决Dev-C++编译时不支持C++11特性的办法
Dev-C++的最新的编译器只能支持到C++14,如果想要使用C++17,C++20,C++2a,必须安装一个新的编译器,然后在Dev-C++中重新选择编译器,再按如下操作(只希望使用C++11或者C++14的也按如下操作):
2024-04-11 23:47:31
1556
1
原创 ZISUOJ 高级语言程序设计实训-基础A
我下面直接用STL的__gcd()函数了,就不自己写了gcd()函数了。这个题,没啥特别好的思路,只能读入一行,把所有字符都转成小写字符,然后把字符串长度分奇偶从中间往两边遍历判断是否对称,特别地,四个左右括号要特殊判断。注意提示,暗示(明示)我们要用long long来算,并且计算好后还需要排序才能输出。我们发现到N次落地会经过N次下落,N-1次上升,计算最后的经过路径长度要注意。遍历所有行,如果是小写字符则转换成大写,如果是大写字符则转换成小写。循环遍历的时候一边用map记录出现次数,一边累加总和。
2024-04-11 23:40:19
1164
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人