竞赛
考级
上周作业 一维数组 1、什么是一维数组:解决什么问题?储存多个同类型数据的问题 2、一维数组的定义: 数据类型 数组名[长度+10];多预留10个防止越界 int a[100]; //开了一个int类型的数组,名字叫做a,里面能存100个int数据 3、数组的访问(获取数组里面的数据): 数组名[下表] a[1]; 4、一维数组初始化: 语法: 5、数组的遍历(一个一个访问) 数组输入输出本质上就是遍历A[I] 比如数组输入:就是在遍历A[I]的时候进行输入 一维数组最关键的是遍历使用A[I]
欢迎开拓者的加入 https://www.acgo.cn/application/1971940000348835840 如想做联动 请申请并备注团队名 个人简介:曾建上百人团队 工作放心 值得信赖
函数
哪个干员是CS? 芯片原料原名是? 堵过桥的请发,我的浮木亖了!!!
啊啊啊啊啊啊啊啊啊啊啊啊啊帖子呀
求求了,你们就加下团队吧!(链接:https://www.acgo.cn/team/1894657430811287552) 如果你们不想加,可以看下这个团队的好处: 1.公告栏很丰富,比如说竞赛新闻,团队成长史,学分公布栏,校规和月刊。 2.题库的题很多,有抽奖和每日一题。 3.题单很丰富,里面有升职题单和每周题单。 4.竞赛很多,至少每周举办一场赛事。 5.文件有趣,其中包括团队头像和有趣图片。
本来想问一下姓艾名哎的“入”迪杰斯特拉算法(AC君爆肝ING),结果…… 我看不懂了,各位大佬看吧QAQ 迪杰斯特拉算法:从原理到 C++ 实战,掌握单源最短路径求解 迪杰斯特拉(Dijkstra)算法是图论领域解决单源最短路径问题的经典贪心算法,由荷兰计算机科学家艾兹赫尔・迪杰斯特拉于 1956 年提出。该算法适用于带非负权边的有向 / 无向图,能高效求解从单个起点到所有其他顶点的最短路径,广泛应用于地图导航、网络路由规划、资源调度等场景。本文将从核心原理出发,结合 C++ 代码实现,全方位讲解迪杰斯特拉算法。 一、算法核心原理 迪杰斯特拉算法的核心是 “贪心策略 + 松弛操作”,通过逐步锁定起点到各顶点的最短路径,最终得到全局最优解。具体步骤如下:1. 初始化定义距离数组dist[],dist[v]表示起点到顶点v的当前最短距离,初始时起点dist[start] = 0,其余顶点dist[v] = ∞(无穷大)。定义布尔数组visited[],标记顶点是否已确定最短路径,初始时所有顶点visited[v] = false。使用优先队列(小根堆)存储待处理的顶点(以 “当前最短距离 - 顶点编号” 的形式),初始时将起点(0, start)入队。2. 贪心选择每次从优先队列中取出当前距离起点最近的顶点 u(小根堆顶元素),若u已确定最短路径(visited[u] = true),则跳过;否则标记u为已确定(visited[u] = true)。3. 松弛操作遍历顶点u的所有邻接顶点v,计算 “起点→u→v” 的路径长度(dist[u] + weight(u, v))。若该长度小于dist[v],则更新dist[v]为该值,并将(dist[v], v)入队(即使v已入队,重复入队不影响,后续处理时会跳过已确定的顶点)。4. 终止条件当优先队列为空时,所有顶点的最短路径均已确定,算法结束。 二、算法关键特性权值限制: 必须保证所有边的权重非负,否则松弛操作无法保证后续不会出现更短路径(负权边场景需使用贝尔曼 - 福特算法或 SPFA 算法)。时间复杂度:邻接矩阵存储图:(O(n^2))(n为顶点数),每次遍历所有未确定顶点。邻接表 + 优先队列(二叉堆):(O((n+e)logn))(e为边数),每个顶点和边最多处理一次,堆操作耗时logn。适用场景:单源最短路径(单个起点,多终点),支持有向图和无向图(无向图可视为双向有向图)。 三、C++ 代码实现(邻接表 + 优先队列版) 1. 代码框架采用邻接表存储图(空间效率更高,适合稀疏图),优先队列使用 C++ STL 的priority_queue(默认大根堆,需自定义比较规则改为小根堆)。 2. 代码说明 数据结构: Edge结构体:存储邻接顶点和边的权重,用于构建邻接表。 PII(pair<int, int>):优先队列的元素类型,第一个值为当前最短距离,第二个值为顶点编号。 邻接表adj[]:adj[u]存储顶点u的所有出边。 核心函数dijkstra(): 初始化距离数组和标记数组,将起点入队。 循环取出优先队列的堆顶元素,跳过已确定的顶点,遍历邻接边执行松弛操作。 松弛操作中,若更新了顶点v的最短距离,则将新的距离和顶点入队。 主函数: 读取输入(顶点数、边数、起点,以及各条边的信息)。 调用dijkstra()算法,输出起点到所有顶点的最短距离。 3. 测试用例 输入示例(有向图): 顶点说明:顶点 1 为起点,边 1→2(权重 2)、1→3(权重 5)、2→3(权重 1)、2→4(权重 3)、3→4(权重 2)。 输出结果: 结果分析:起点 1 到顶点 2 的最短距离为 2(1→2)。起点 1 到顶点 3 的最短距离为 3(1→2→3)。起点 1 到顶点 4 的最短距离为 5(1→2→4 或 1→2→3→4)。 四、常见误区与注意事项负权边问题: 迪杰斯特拉算法无法处理负权边。例如,若存在边 3→2(权重 - 5),则算法会错误地认为顶点 3 的最短距离为 5,而实际 1→3→2 的距离为 0,导致结果偏差。优先队列重复元素:优先队列中可能存在同一顶点的多个距离记录,无需额外删除旧记录,只需在取出时判断visited[u],跳过已确定的顶点即可(重复记录不影响最终结果,仅增加少量堆操作)。顶点编号范围:代码中顶点编号从 1 开始(符合常规输入习惯),若需从 0 开始,只需调整main函数中的输入和输出循环。无穷大取值:代码中使用INT_MAX(int类型的最大值)表示无穷大,需注意路径长度溢出问题(若边权较大,可改用long long类型存储距离)。 五、扩展优化斐波那契堆优化: 理论上可将时间复杂度降至(O(nlogn + e)),但斐波那契堆实现复杂,实际工程中极少使用。双向迪杰斯特拉:同时从起点和终点出发执行贪心策略,相遇时停止,可减少堆操作次数,适合求解两点间的最短路径。处理无向图:只需在添加边时,同时添加u→v和v→u两条边(代码中注释部分)。 总结 迪杰斯特拉算法是单源最短路径问题的核心解法,其贪心策略保证了在非负权边场景下的正确性和高效性。本文通过原理讲解、C++ 代码实现和测试用例,完整呈现了算法的应用过程。掌握该算法不仅能解决图论基础问题,也能为复杂场景(如带约束的路径规划)提供思路。在实际开发中,需根据图的稀疏程度选择邻接矩阵或邻接表存储,并注意避开负权边、重复入队等常见误区。
https://www.acgo.cn/team/1954136972457275392(
在搞之前,请先安装Sympy,如果没有安装,请在cmd里用以下命令安装: 好,安装好以后就可以开始了 先导入相关的模块 接下来是符号部分 准备妥当以后来解方程 这里给大家搞一个测试 请输入方程:8x3+10x2+100x+8=0 x=-575/(144*(3511/1728 + √(156201)/48)^(1/3)) - 5/12 + (3511/1728 + √(156201)/48)^(1/3) 不过有一个小问题,就是如果输入恒等式的话会显示“没有实数解!”
版本:X1.0&X1.1 > 特别鸣谢:@我爱死机 协助开发、规划与提供框架 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 语法讲解 XPR 功能 用于输出整数、浮点数、字符、字符串与布尔类型的数据 格式 数据类型对照表 数据类型代码 数据类型 i 整数 f 浮点数 c 字符 s 字符串 b 布尔 示例 代码: 运行结果: WAIT 功能 等待指定时间,单位:秒 格式 注意,参数[秒数]大于等于0 示例 代码: 运行结果: 等待一秒 CLEAR 功能 清屏 格式 示例 代码: 运行结果: 清屏 ENDL 功能 换行 格式 示例 代码: 运行结果: 换行
我和“吴陈😊”的小伙伴都在ACGO等你,快用这个专属链接加入我们吧!https://www.acgo.cn/application/1981630197495148544
感觉自己无限的付出 没结果 也没回报,我想也没必要了,身边的朋友可惜从来没把我当朋友,倒不如和谁都一样关系不远不近........
链接:https://www.acgo.cn/contest/detail/14909matchRoundId=14909&examId=74564&openLevel=2&teamCode=1951470069377384448 点击链接或者图片参加吧!球球啦!!!
各位入侵acgo的三角洲小朋友们你们的扶贫梦该醒了 以下全有的自觉删号或是金盆洗手谢谢: 1 爱用唐人鼠鼠,耄耋头像,且尤其钟爱"教主"等字眼 2 叫错干员名字(例:哈吉蜂,卫龙,路娜等) 3 叫错红名字(例:心肺复苏机,麦小圈等) 4 喜欢扶贫主播,并试图给团员扶贫(此条可有可无) 5 抄题解大王,时空双修都是拿ai刷的 百无忌吧,南无啊马特拉斯,破防骂我替我挡灾
我和“咚咚🐏”的小伙伴都在ACGO等你,快用这个专属链接加入我们吧!https://www.acgo.cn/application/1881240671421403136
卡特兰数一个通项式: H(n)=(4n−2)/(n+1)∗H(n−1)H(n)=(4n-2)/(n+1)*H(n-1)H(n)=(4n−2)/(n+1)∗H(n−1) 斯特林数: S(i,j)=j∗S(i−1,j)+S(i−1,j−1)S(i,j)=j*S(i-1,j)+S(i-1,j-1)S(i,j)=j∗S(i−1,j)+S(i−1,j−1)
我是:主播贝利亚本人
题目描述 期末考试共两科,语文和数学,已知班上所有同学的语文分和数学分,请帮助求出每个人的期末分。 提示 1≤n≤50,每科成绩不超过 100 分,且不低于 0 分的整数。 样例解释: 第一个学生的语文 100,数学 100,期末总分 200 分。 第二个学生的语文 88,数学 75,期末总分 163 分。 第三个学生的语文 91,数学 85,期末总分 176 分。 输入格式 共三行,第一行一个整数 n, 表示学生人数。 第二行是每个人的语文成绩,分别用空格间隔的 n 个学生成绩。 第三行是每个人的数学成绩,分别用空格间隔的 n 个学生成绩。 输出格式 输出一行用空格间隔的 n 个学生的期末总分。 样例组输入#1 3 100 88 91 100 75 85 样例组输出#1 200 163 176 求题解!
共21408条