c++
强国豪,林中霖
每天进步一点点
展开
-
树(Tree)和二叉树
2. 某二叉树共有 399 个结点,其中有 199 个度为 2 的结点,则该二叉树中的叶子结点数为( B )上面的遍历次序就是 A -> B -> D -> E -> H -> C -> F -> G。上面的遍历次序就是 D -> B -> E -> H -> A -> F -> C -> G。上面的遍历次序就是 D -> H -> E -> B -> F -> G -> C -> A。如果i=1,则结点i是二叉树的根,无双亲,如果i>1,则其双亲结点是结点[i/2]原创 2024-05-11 19:58:12 · 835 阅读 · 6 评论 -
c++数据结构-图(详解附算法代码,一看就懂)
从图中某一顶点出发,系统的访问图中所有顶点,并且每个顶点只被访问一次,这种操作叫做图的遍历。V是顶点的有穷非空集合,E是边的集合。深度优先遍历和深度优先搜索相似,它是先访问一个点,再访问与这个点相连的所有点,当这个点所有相连的点访问完,再退回下一个点。完全图:一个 n 阶的完全无向图含有 n*(n-1)/2 条边,一个 n 阶的完全有向图含有 n*(n-1) 条边。有向图:边上有箭头,只能从箭头的引出的结点到被指向的结点,不能逆着箭头走。G[i][j] 的值,表示点 i 到点 j 的边的权值,定义如下,原创 2024-05-11 19:52:33 · 351 阅读 · 1 评论 -
P1010 [NOIP1998 普及组] 幂次方
主要思路是递归/分治,因为分解出的指数还要继续分解,是重复的但规模更小的问题。关于求log_2 xlog。x,暴力枚举即可,数据很小。原创 2024-05-08 20:51:03 · 302 阅读 · 2 评论 -
P1713 麦当劳叔叔的难题
我心目中最聪明的就是第一个跑进麦当劳大门的,我希望你帮我找出最聪明和最不聪明的小朋友,可能的最大的到达时间差。说我们铭铭小朋友成功的回答了爸爸的问题,自然少不了要去索要些奖励,抠门的爸爸一看报纸,嘿,门口的麦当劳在搞活动,还有免费午餐哦,不过前提条件:得正确回答麦当劳叔叔的问题。例如,4\times 44×4 的矩阵,格子 (1, 1),(2, 3),(4, 2)为障碍区,黑格子就是一条可行的路线。上图轮廓线的状态对应的 A = [0,0,2,3,3,0,2,1]计算最短路是容易的,考虑计算最长路。原创 2024-05-08 07:44:07 · 519 阅读 · 1 评论 -
c++病毒/恶搞代码大全(后序)
【代码】c++病毒/恶搞代码大全(后序)原创 2024-05-05 21:01:42 · 202 阅读 · 2 评论 -
P2483 【模板】k 短路 / [SDOI2010] 魔法猪学院
题目背景注:对于 kk 短路问题,A* 算法的最坏时间复杂度是 O(nk \log n)O(nklogn) 的。虽然 A* 算法可以通过本题原版数据,但可以构造数据,使得 A* 算法在原题的数据范围内无法通过。事实上,存在使用可持久化可并堆的算法可以做到在 O((n+m) \log n + k \log k)O((n+m)logn+klogk) 的时间复杂度解决 kk 短路问题。详情见 OI-Wiki。题目描述iPig 在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练。原创 2024-04-20 22:18:21 · 779 阅读 · 0 评论 -
P1039 [NOIP2003 提高组] 侦探推理
具体算法不多说了,先预处理出每个人表示的意思,然后二进制状压枚举撒谎的人,如果这个状态的大小与所给人数相同,则进行计算。linux下换行符为’\n’,windows下换行符为’\r\n’,如果数据是windows下造的,你就把’\r’也给当成字符串内容了,不wa才怪。最后数一下有多少个人可能是罪犯,统计size,如果size为0则输出impossible,为1则输出人名,其余情况输出多解。所以,你可以选择建立一个缓存区,把所有的’\r’替换成’\n’,进行计算。如果多个状态推出不同的罪犯,则多解。原创 2024-04-20 22:13:07 · 426 阅读 · 0 评论 -
数的反码和补码表示
+11=[000000011原=[000000011反=[000000011补[-1]=[10000001]原=[11111110]反=[11111111]补。[+1]=[000000011原=[000000011反[-1]=[10000001]原=[11111110]反。负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1.(即在反码的基础上+1)正数的反码是其本身负数的反码是在其原码的基础上,符号位不变,其余各个位取反。正数的补码就是其本身。原创 2024-02-22 12:32:20 · 591 阅读 · 12 评论 -
数的定点表示和浮点表示
在数的定点表示法中,由于数的表示范围较窄常常不能满足各种数值问题的需要。为了扩大数的表示范围,方便用户使用,有些计算机常采用浮点表示法。尾数用以表示数的有效数值:阶码用以表示小数点在该数中的位置。在计算机中小数点一般有两种表示法:一种是小数点固定在某一位置的定点表示法;另一种是小数点的位置可任意移动的浮点表示法。S是N的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。机器中所有数的小数点位置是固定不变的,因而小数点就不必使用记号表示出来。实际上小数点可固定在任意一个位置上。原创 2024-02-22 12:28:39 · 294 阅读 · 5 评论 -
Dijkstra算法
它的时间复杂度为O(N^2),其中N是图中节点的数量,但是可以使用优先队列等数据结构来提高算法的效率,使其时间复杂度降至O(E log N),其中E是图中边的数量。节点 3 在之前已经有了一个距离记录(距离为 7,参阅下表),这个距离是之前步骤中由路径 0 -> 1 -> 3 的两个边权重(分别为 5 和 2)相加得到的。对于节点 3: 将构成路径 0 -> 1 -> 3 的所有边权重相加,得到总距离为 7(0 -> 1 距离为 2,1 -> 3 距离为 5)。下一步将要分析这两个节点。原创 2024-02-16 17:46:33 · 446 阅读 · 1 评论 -
矩阵的乘法
而最里面的循环可以是A的列或者是B的行来进行变化,因为A的列和是B的行数量是相等的,这样就可以使用三层循环来解决。A矩阵和B矩阵可以做乘法运算必须满足A矩阵的列的数量等于B矩阵的行的数量。矩阵乘法的结果为行与列的关系为:行数量为A的行数量, 列数量为B的列数量。运算规则:A的每一行中的数字对应乘以B的每一列的数字把结果相加起来。原创 2024-01-26 20:44:32 · 55 阅读 · 1 评论 -
P10096 [ROIR 2023 Day 1] 扫地机器人
扫地机器人是一个边长 k\times kk×k 的正方形,边与坐标轴平行。初始时,扫地机器人左下角位于 (0,0)(0,0),右上角位于 (k,k)(k,k)。根据给定的机器人移动操作,计算清扫的总面积(被机器人覆盖过的点就算被清扫过的点)。给定一个由 nn 个移动操作组成的序列,第 ii 个移动操作由方向 d_id。表示(N 即向上,E 即向右,W 即向左,S 即向下),且距离 a_ia。接下来的 nn 行中,每行包含一个移动操作和对应的距离 a_ia。样例解释:下图是两个样例中机器人的移动情况。原创 2024-01-26 18:14:25 · 502 阅读 · 1 评论 -
单源最短路的扩展应用---------最短路计数
输出 NN 行,每行一个非负整数,第 ii 行输出从顶点 11 到顶点 ii 有多少条不同的最短路,由于答案有可能会很大,你只需要输出对 100003100003 取模后的结果即可。接下来 MM 行,每行两个正整数 x,yx,y,表示有一条顶点 xx 连向顶点 yy 的边,请注意可能有自环与重边。给出一个 NN 个顶点 MM 条边的无向无权图,顶点编号为 11 到 NN。第一行包含 22 个正整数 N,MN,M,为图的顶点数与边数。问从顶点 11 开始,到其他每个点的最短路有几条。原创 2024-01-19 20:51:11 · 384 阅读 · 0 评论 -
#P0044. [FJOI2014] 最短路径树问题
若有多条长度最短的路径,则选择经过的顶点序列字典序最小的那条路径(如路径 AA 为 1,32,111,32,11,路径 BB 为 1,3,2,111,3,2,11,路径 BB 字典序较小。注意是序列的字典序的最小,而非路径中节点编号相连的字符串字典序最小)。第一行输入三个正整数 n,m,kn,m,k,表示有 nn 个点 mm 条边,要求的路径需要经过 kk 个点。输出一行两个整数,以一个空格隔开,第一个整数表示包含 kk 个点的路径最长为多长,第二个整数表示这样的不同的最长路径有多少条。原创 2024-01-06 15:03:22 · 388 阅读 · 4 评论 -
#2392. Johnson 全源最短路
给定一个包含 n 个结点和 m 条带权边的有向图,求所有点对间的最短路径长度,一条路径的长度定义为这条路径上所有边的权值和。为从 i 到 j 的最短路,在第 i 行输出 \sum\limits_{j=1}^n j\times dis_{i,j}接下来 m 行:每行 3 个整数 u,v,w表示有一条权值为 w 的有向边从编号为 u 的结点连向编号为 v 的结点。如果不存在从 i 到 j 的路径,则 dis_{i,j}=10^9dis。第 1 行:2 个整数 n,m,表示给定有向图的结点数量和有向边数量。原创 2024-01-06 14:41:11 · 397 阅读 · 2 评论 -
BFS、SPFA、Dijkstra算法中vis数组的用法对比
【代码】BFS、SPFA、Dijkstra算法中vis数组的用法对比。原创 2024-01-05 20:21:55 · 561 阅读 · 2 评论 -
2529. 跑路
小 A 的家到公司的路可以看做一个有向图,小 A 家为点 11,公司为点 nn,每条边长度均为一千米。小 A 的工作不仅繁琐,更有苛刻的规定,要求小 A 每天早上在 6:006:00 之前到达公司,否则这个月工资清零。1 \to 1 \to 2 \to 3 \to 41→1→2→3→4,总路径长度为 44 千米,直接使用一次跑路器即可。100%100% 的数据满足 2\leq n \leq 502≤n≤50,m \leq 10 ^ 4m≤10。第一行两个整数 n,mn,m,表示点的个数和边的个数。原创 2024-01-04 15:12:26 · 377 阅读 · 2 评论 -
c++推箱子小游戏
由于写游戏时间较长,更新较慢,请大佬们理解一下。原创 2023-09-09 19:57:45 · 4776 阅读 · 13 评论 -
C++超级迷宫游戏
用钥匙、护盾等道具帮助你的小人通过大门、墙、怪物、岩浆等困难到达终点。原创 2023-08-30 16:41:04 · 667 阅读 · 22 评论 -
C++炸弹小游戏
小人可以随便在一些元素(如石头,岩浆,水,宝石等)上跳跃,“地面”一直在上升,小人上升到顶部或者没有血的时候游戏结束(初始20点血),小人可以随意放炸弹,共有八种炸弹。但是被炸到或者碰到岩浆就要减一滴血,拿到宝石加一滴血。炸弹炸掉石头可以得分,得到200分即可获胜。原创 2023-08-29 11:09:41 · 6139 阅读 · 16 评论 -
C++三体星战小游戏
物理小游戏,懒得 写注释。游戏代码#include<bits/stdc++.h>#include<bits/stdc++.h>#include<windows.h>#include<conio.h>using namespace std;int toint(double a){return ((int)(a*10+5))/10;}int rand(int a){return rand()%a;}void SlowDisplay(int x,c原创 2023-08-27 08:34:27 · 3830 阅读 · 18 评论 -
吃豆子小游戏
最近做了一个小游戏,有点。话不多说,直接上代码。原创 2023-08-27 08:25:21 · 380 阅读 · 2 评论 -
#P0646. [NOIP2016提高组] 换教室
保证 1 \leq a_j, b_j \leq v, 1 \leq w_j \leq 1001≤aj,bj≤v,1≤wj≤100。保证 1 \leq n \leq 20001≤n≤2000,0 \leq m \leq 20000≤m≤2000,1 \leq v \leq 3001≤v≤300,0 \leq e \leq 900000≤e≤90000。通过计算,牛牛发现申请更换第 ii 节课程的教室时,申请被通过的概率是一个已知的实数 k_iki,并且对于不同课程的申请,被通过的概率是互相独立的。原创 2023-08-03 20:59:23 · 155 阅读 · 0 评论 -
P0095. 细胞
一矩形阵列由数字00到99组成,数字11到99代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。对于 100\%100% 的数据,保证 1 \le n,m \le 1001≤n,m≤100。第一行为矩阵的行nn和列mm;下面为一个n×mn×m的矩阵。原创 2023-08-10 10:34:25 · 94 阅读 · 0 评论 -
#P0867. 小武老师的烤全羊
小武老师特别喜欢吃烤全羊,小武老师吃烤全羊很特别,为什么特别呢?因为他有 1010 种配料(芥末、孜然等),每种配料可以放 11 到 33 克,任意烤全羊的美味程度为所有配料质量之和。现在, 小武老师想要知道,如果给你一个美味程度 nn ,请输出这 1010 种配料的所有搭配方案。对于 100%100% 的数据,n \leq 5000n≤5000。第二行至结束,1010 个数,表示每种配料所放的质量,按字典序排列。如果没有符合要求的方法,就只要在第一行输出一个 00。一个正整数 nn ,表示美味程度。原创 2023-08-24 15:36:01 · 167 阅读 · 3 评论 -
C++桌面贪吃蛇,能通关的都是大神(Windows可编译)
【代码】C++桌面贪吃蛇,能通关的都是大神(Windows可编译)原创 2023-08-22 16:12:57 · 219 阅读 · 13 评论 -
C++简易单机贪吃蛇无尽模式
贪吃蛇吃食物,每吃一个得一分,撞到墙或者撞到自己死。原创 2023-08-22 16:07:24 · 178 阅读 · 4 评论 -
俄罗斯方块(上下左右键控制)
【代码】俄罗斯方块(上下左右键控制)原创 2023-08-21 15:13:46 · 555 阅读 · 41 评论 -
C++跑酷小游戏
【代码】C++跑酷小游戏。原创 2023-08-19 09:56:26 · 414 阅读 · 37 评论 -
C++坦克大战源代码
【代码】C++坦克大战源代码。原创 2023-08-16 11:57:38 · 1135 阅读 · 13 评论 -
#P0761. [NOIP2012普及组] 文化之旅
有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家)。不同的国家可能有相同的文化。不同文化的国家对其他文化的看法不同,有些文化会排斥外来文化(即如果他学习了某种文化,则他不能到达排斥这种文化的其他国家)。现给定各个国家间的地理关系,各个国家的文化,每种文化对其他文化的看法,以及这位使者游历的起点和终点(在起点和终点也会学习当地的文化),国家间的道路距离,试求从起点到终点最少需走多少路。原创 2023-08-04 10:10:36 · 218 阅读 · 5 评论 -
#P0994. [NOIP2004普及组] 花生采摘
第i + 1i+1行的第jj个整数P_{ij}(0 \le P_{ij} \le 500)Pij(0≤Pij≤500)表示花生田里植株(i, j)(i,j)下花生的数目,00表示该植株下没有花生。为了训练多多的算术,鲁宾逊先生说:“你先找出花生最多的植株,去采摘它的花生;例如在图2所示的花生田里,只有位于(2, 5), (3, 7), (4, 2), (5, 4)(2,5),(3,7),(4,2),(5,4)的植株下长有花生,个数分别为13, 7, 15, 913,7,15,9。采摘一棵植株下的花生;原创 2023-08-01 16:07:24 · 324 阅读 · 3 评论 -
#P0995. [NOIP2005普及组] 循环
众所周知,22 的正整数次幂最后一位数总是不断的在重复 2,4,8,6,2,4,8,6…2,4,8,6,2,4,8,6…我们说 22 的正整数次幂最后一位的循环长度是 44(实际上 44 的倍数都可以说是循环长度,但我们只考虑最小的循环长度)。对于100 \%100% 的数据,满足 1 \le n < {10}^{100}1≤n原创 2023-08-01 16:04:47 · 270 阅读 · 0 评论 -
CSP初赛知识点梳理
按年代分类 \begin{matrix} \text{年代\qquad} & \text{实现方式}\\\\ \text{1946\,至1958\qquad} & \text{电子管}\\\\ \text{1959\,至1964\qquad} & \text{晶体管}\\\\ \text{1965\,至1970\qquad} & \text{集成电路}\\\\ \text{1971\,至N/A\qquad} & \text{超大规模集成电路}\\\\ \end{matrix}表示该算法的时间复杂度。原创 2023-07-10 16:55:14 · 1310 阅读 · 3 评论 -
【keda编程】P0689. 宝石串
有一种宝石串,由绿宝石和红宝石串成,仅当绿宝石和红宝石数目相同的时候,宝石串才最为稳定,不易断裂。安安想知道从给定的宝石串中,可以截取一段最长的稳定的宝石串,有多少颗宝石组成。结束撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 下期再见。本来想直接暴力亿下的,结果0分(数据没洛谷水)WA了N次,好不容易AC了,让我们来看看题。绿宝石用‘G’表示,红宝石用‘R'表示。所以我又想前缀和的思想搞,结果15分超时。最长的稳定的宝石串有多少颗宝石组成。其实差别不大,但是差了85分~于是,我决定优化,变成了这样。原创 2023-05-09 14:45:25 · 147 阅读 · 3 评论