- 博客(18)
- 问答 (1)
- 收藏
- 关注
原创 扩展欧几里得相关知识
摘要:本文介绍了扩展欧几里得算法的原理与应用。该算法用于求解方程ax+by=gcd(a,b)的解,是欧几里得算法的扩展。文章给出了算法实现代码,并通过模版题P3811演示其应用。题目要求求1~n中每个数在模p下的乘法逆元,虽然扩展欧几里得能解,但数据规模下会超时。最终给出了更高效的递推解法,转移方程为inv[i]=(p-p/i)*inv[p%i]%p,时间复杂度更低。
2025-10-29 21:30:35
882
原创 三分相关知识
摘要: 本文介绍了一种名为"三分法"的数值优化算法,用于求解单峰函数的极值点。三分法通过选取区间中点两侧的点进行比较,确定函数单调性,从而逐步缩小搜索范围。文章以洛谷P1883题为例,展示了如何用三分法求解多个二次函数最大值的最小值问题,给出了详细的算法实现代码,并强调了精度设置的重要性。该方法适用于求解凸函数或凹函数的极值问题,时间复杂度优于暴力搜索。
2025-10-29 20:20:02
813
原创 P7442 「EZEC-7」维护序列 题解
这道题目要求维护一个初始值为下标的2^n长度序列,支持两种重组操作和查询操作。解题关键在于发现操作本质是二进制位的循环位移与异或变换: 第一种操作相当于将二进制最高位移到最低位 第二种操作在此基础上额外异或1 每次操作后记录位移次数和累积异或值 查询时通过位运算还原实际值:先处理循环位移的影响,再进行异或操作。算法利用位运算高效处理,时间复杂度O(1)每次操作,解决了大规模数据下的模拟问题。
2025-10-29 10:11:54
660
原创 间谍网络题解
题目要求判断能否通过收买间谍控制整个间谍网络,并计算最小成本。算法思路是使用Tarjan算法找出强连通分量,每个分量以最低成本购买。然后检查所有间谍是否被访问过,若未访问则输出NO及最小编号;否则统计入度为0的分量成本总和输出YES及总成本。 摘要:本题考察间谍网络的强连通分量分析,通过Tarjan算法确定必须收买的间谍组,计算控制整个网络的最小成本或识别不可控间谍。关键在于分量成本优化和连通性验证。
2025-10-29 08:30:31
618
原创 P2752 [USACO4.3] 街道赛跑Street Race 题解
该题目要求分析一个街道跑道图,找出两类关键路口: 不可避免的路口:删去后无法从起点到达终点 中间路口:能将跑道分成两个良好部分的路口 解题思路: 使用BFS遍历图,检查每个点是否为必经点(删除后起点无法到达终点) 对必经点进一步验证是否为中间路口,确保分割后两部分无共同边 输出结果按升序排列 代码实现通过两次BFS分别判断必经点和中间路口,时间复杂度与图规模相关。
2025-10-29 08:30:02
754
原创 [IOI 1996 / USACO5.3] Network of Schools
摘要 本文解决了一个关于学校软件分发的问题。给定各学校间的单向软件分享关系,需要回答:1)至少向多少学校分发软件才能使所有学校获得软件;2)最少需要增加多少分享关系才能实现仅向任意一个学校分发一次就能覆盖所有学校。 解法首先使用Tarjan算法将学校网络缩点为强连通分量。对于问题1,答案即为入度为0的强连通分量数量。对于问题2,当强连通分量数大于1时,答案等于入度为0和出度为0的强连通分量数的最大值;否则答案为0。代码实现了上述算法,时间复杂度主要由Tarjan算法决定。
2025-10-28 17:10:19
954
原创 [USACO03FALL]受欢迎的牛
这道题目要求找出可以成为明星奶牛的个数,即被所有奶牛喜欢的奶牛数量。通过Tarjan算法进行强连通分量缩点后,发现只有出度为0的强连通分量中的所有奶牛才可能成为明星。如果存在多个出度为0的强连通分量,则没有奶牛能成为明星。 具体实现步骤: 使用Tarjan算法找出所有强连通分量 统计每个强连通分量的出度 检查出度为0的强连通分量数量: 如果恰好1个,输出该分量的大小 否则输出0 时间复杂度主要由Tarjan算法决定,为O(N+M)。
2025-10-28 17:06:27
991
原创 [CSP-S 2023] 结构体 题解
这篇文章摘要可以概括为: 题目要求模拟一种类似C++的结构体定义系统,处理四种操作:1)定义结构体类型并计算大小和对齐要求;2)定义元素并输出起始地址;3)访问元素成员地址;4)查询内存地址对应的元素。需要实现结构体嵌套、内存对齐等特性。解题思路包括:1)使用结构体存储类型和元素信息;2)预定义基础类型;3)实现地址对齐计算函数;4)按照操作类型分别处理。关键点在于正确计算结构体大小和内存对齐,并建立名称到类型的映射关系。
2025-10-28 14:23:47
907
原创 TARJAN相关
摘要:TARJAN算法是一种高效的图论算法,主要用于求解强连通分量、最长路、DAG、割点和桥等问题。文章首先介绍了DFS序的概念,然后详细讲解了TARJAN算法求强连通分量的过程,包括树边、返祖边和横叉边的处理,以及如何利用栈实现强连通分量的划分。此外,还介绍了缩点的方法,将强连通分量视为节点,将图转化为DAG。最后,文章简要提及了割点和桥的判断方法,并提供了相关例题的代码实现。TARJAN算法是解决图论问题的重要工具,适用于多种场景。
2025-10-28 13:46:52
1484
3
原创 【无标题】P14304 【MX-J27-T1】分块 题解
题目要求统计不超过n的正整数x中,满足「⌊√x⌋是x的因数」的个数。对于q组不同n的询问,需要高效计算答案。 解题思路: 对于每个整数i,满足条件的x在区间[i², (i+1)²)内最多有3个:i², i²+i, i²+2i 预处理所有可能的i,通过二分查找确定最大的i使得i²≤n 根据n与当前i的关系,分类统计符合条件的x个数 时间复杂度为O(q log n),适用于大范围查询。注意处理边界时要避免浮点数精度问题。
2025-10-25 21:52:05
1032
原创 AT_DP_J Sushi 题解
这是一道关于期望动态规划的问题。题目给定N个盘子,每个盘子上有1-3个寿司,每次随机选择一个盘子吃掉一个寿司(若盘子为空则不操作),求吃完所有寿司的期望操作次数。 解题思路: 使用三维DP数组dp[i][j][k]表示当前有i个1寿司盘子、j个2寿司盘子、k个3寿司盘子时的期望值 通过状态转移方程计算期望值,考虑从不同状态转移过来的概率贡献 最终答案为初始状态的dp值 时间复杂度为O(N^3),空间复杂度为O(N^3)。关键点在于发现状态只与各类盘子的数量有关,而与具体位置无关,从而简化状态表示。
2025-10-24 19:56:14
741
原创 SCP2025-J T3 Siblings 题解
这题要求将书籍分成两部分分配给两人,最小化两人完成时间的最大值。关键在于每行书架的最大列坐标决定了该行的访问时间。通过动态规划优化,计算所有可能的分配方案,取最优解。时间复杂度O(m*Tot),空间优化后为O(Tot)。最终答案为2倍的最小最大时间。
2025-10-24 19:55:24
987
原创 P5666 [CSP-S2019] 树的重心 题解
本文介绍了CSP-S2019中树的重心问题解法。题目要求计算删除树中每条边后,分裂出的两棵子树重心编号和的总和。通过两次DFS预处理节点信息(子树大小、重儿子、轻儿子)并建立倍增数组,优化了暴力求解的时间复杂度。在剪断边时动态调整重儿子信息,利用倍增快速定位重心位置,并处理双重心情况。最终时间复杂度得到显著优化,适合处理大规模树结构。文章包含详细算法思路和完整C++代码实现,适用于参加算法竞赛者学习参考。
2025-10-24 19:54:35
968
原创 重点队列题题解
设置两个数组:value和lable,存放因子的值和目前指向的指针(默认为1),ans数组存放丑数序列(ans[1]默认为1)。再不然,就要考虑特殊情况,如果头结点1的马不能和尾结点2的马打平,就只能拿最慢的马当炮灰了,这没办法啊。如果不足的话,就看头结点1的马是否可以击败头结点2的马,如果可以,就解决掉他,这样慢马也有了贡献。再找最小数的过程中,如果遇到某个表达式的值和目前的最小值相等,也把lable[i]加上1。开两个数组,代表田忌的马和齐王的马,设置两个头节点和两个尾节点,然后把两个数组排序。
2024-07-31 21:19:45
747
原创 [省选联考 2022] 预处理器 题解
定义一个以字符串做索引,存放字符串的map(macro),每次getline之后,如果instruction的第1(索引为0)个字符为#且第2个字符为d,说明是个define语句,跳过#define和其后的空格(将下标设为8),按照空格分成name和content两个字符串,把macro[name]设为content。location++;return;
2024-07-28 18:03:37
2113
原创 [NOI2000]程序分析机题解
然后从最大行号开始,若找到某一行有指令则把这一行的下一行设为nowline(最后一行的下一行为0,到了最后一行保证是END,不担心执行第0行语句)然后把nowline设为当前行号,最后nowline会变成最小行号。+语句的字母在第1个字符,可以直接用map访问,并加上firstnum(nowline,4),把nowline变为下一行。请编程,对于给定的 TB 语言程序 P,求该程序所执行的语句数(执行条件语句不论是否成功转移,仅记为执行一条语句)。否则,把nowline设为下一行。否则的话,说明这是一个。
2024-07-27 15:38:39
1696
原创 CSP2021普及组 网络连接
需要进行网络连接的计算机共有 n 台,编号为 1∼n,这些机器将按编号递增的顺序,依次发起一条建立连接或加入连接的操作。服务机提供的地址串表示它尝试建立连接的地址,客户机提供的地址串表示它尝试加入连接的地址。如果某台提供符合规范的地址的客户机在尝试加入连接时,与先前某台已经成功建立连接的服务机提供的地址串相同,这台客户机就可以成功加入连接,并称其连接到这台服务机;请注意,尽管不允许两台不同的服务机使用相同的地址串,但多台客户机使用同样的地址串,以及同一台服务机同时被多台客户机连接的情况是被允许的。
2024-07-26 17:39:25
979
3
原创 人工湖题解
从这张图不难看出,我们会在红色处灌水,要淹没某处,需在上面灌注高1个单位的水,很显然,这与宽度有关,淹没红色处要4个单位的水,需要4分钟。为了使湖看起来更加真实,FJ决定将湖的横截面建成N(1
2024-07-24 20:38:28
1693
2
空空如也
cin冲突ifstream该怎么办?
2024-06-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅