- 博客(24)
- 收藏
- 关注
原创 codeforces1997(div.3)E F
文章摘要 本文包含两个编程问题的解决方案: E题(Novice's Mistake):寻找满足特定条件的(a,b)对。给定整数n和字符串s,通过遍历a(1≤a≤10000)和有效范围内的b,检查字符串拼接后是否满足n*a-b=99999的条件。符合条件的(a,b)对会被收集并输出。 F题(Valuable Cards):处理n个数字和x,确定最少分割次数使得每段内数字乘积能得到x。通过维护当前段的因子集合和动态标记可能的乘积因子,当遇到x的因子且其补数存在时进行分割。最终输出分割次数。 两题均使用高效遍历和
2025-11-06 16:12:21
947
原创 codeforcesの题(三)
本文包含三个算法问题的解法: A. Beautiful Average:求解每组测试数据中的最大值。直接遍历输入数据找到最大值即可。 B. Beautiful String:在二进制字符串中寻找一个非递减子序列,使得移除该子序列后剩余字符串构成回文。采用DFS暴力搜索所有可能的子序列组合。 C. Beautiful XOR:通过异或操作将整数a转换为b,最多使用2次操作。利用异或性质和掩码技术分解操作。 C. Nene's Magical Matrix:构造n×n矩阵使其总和最大,通过2n次行/列操作使每个
2025-10-30 13:58:13
1023
原创 最短路问题
Dijkstra算法摘要 Dijkstra算法是一种基于贪心策略的单源最短路径算法。它通过维护一个优先队列,每次取出当前距离源点最近的节点进行扩展,并更新邻接节点的最短距离。算法核心步骤包括初始化距离数组、选择最近节点、松弛操作和重复执行直到所有节点处理完毕。文章提供了基础版和堆优化版的代码实现,其中堆优化版本使用优先队列提高效率。此外还包含两个典型应用场景:单源最短路径问题和带免费次数的航线优化问题(通过二维距离数组处理)。算法适用于非负权图,是解决最短路径问题的经典方法。
2025-10-23 13:29:31
556
原创 计算几何(天真和愚蠢的麻瓜
题目摘要 三个巫师设置了一个最小外接圆魔法阵,要求覆盖所有巫师且面积最小。麻瓜不能进入该圆或其边界。给定三个巫师坐标和一个麻瓜坐标,判断麻瓜是否安全。 方法思路 最小外接圆确定:对于三个点,最小外接圆可能是: 以最长边为直径的圆(当三角形为直角或钝角时) 三点的外接圆(当三角形为锐角时) 位置判断:计算麻瓜到圆心的距离,若小于等于半径则危险,否则安全。 解决代码 #include #include using namespace std; struct Point { double x, y; }; dou
2025-10-19 16:33:43
594
原创 codeforces1857题解
本文介绍了五个编程问题的解法: 最大舍入:处理数字字符串的四舍五入问题,从右向左找到第一个≥5的数字进行进位,并处理可能的最高位进位。 通过最小值进行装配:从无序对的最小值数组恢复原始数组,通过排序后按特定间隔提取元素。 强顶点:利用数学移项将边规则转化为顶点特征值比较,特征值最大的顶点即为强顶点。 点数的力量:计算每个坐标点作为中心时所有区间的总权值,通过排序和前缀和优化计算。 总和与乘积:利用二次方程的性质,通过判别式判断是否存在满足条件的数字对,并统计数量。 每个问题都通过数学技巧或优化算法提高效率,
2025-10-19 15:45:50
390
原创 codeforcesの题(二)
本文总结了三个算法问题的解法: 最小操作次数转换数组:将全零数组转为目标数组,通过统计非零元素并去重,计算所需增加和粉碎操作次数(总操作数为2n-1)。 使乘积为正的最小操作:根据负数数量决定操作次数,偶数直接处理,奇数需额外操作将负数转正。 调整数组使MEX等于k:分k=0和k>0两种情况处理,确保0到k-1数字全部出现且k不出现,计算所需修改的最小次数。 每个问题都提供了核心思路和简洁的C++实现,展现了贪心算法和数学分析在竞赛编程中的应用。
2025-10-16 17:12:00
415
原创 背包问题。
本文介绍了01背包问题的动态规划解法。01背包问题要求在容量限制下选择物品以获得最大价值,每个物品只能选或不选。文章给出了二维和一维数组的解法,强调一维解法必须逆序更新以避免重复计算。通过两个实例展示了具体应用:采药问题(标准01背包)和5倍经验日问题(变种01背包)。5倍经验日问题中每个选择对应不同经验值,需要根据药物数量决定战斗与否。两种解法都展现了动态规划在背包问题中的灵活应用。
2025-10-09 15:17:49
544
原创 codeforcesの题
本文总结了四道Codeforces编程题的解法思路:1) 通过有限操作组合得到字典序最小字符串;2) 逆向操作实现蛋糕公平分配;3) 预处理数字各位和以提高计算效率;4) 利用分组和位运算快速定位特定位置的数字。这些题目展示了算法优化技巧,包括逆向思维、预处理、数学推导和位运算应用,解决了字符串操作、资源分配、数字处理和快速查询等问题。
2025-10-09 15:15:45
921
原创 codeforces 2132の
本次Codeforces竞赛主要包含四道编程题目,涉及字符串处理、数学推导、贪心算法和数位分析等知识点。题目A考察字符串拼接操作,B通过数学推导和枚举寻找数字规律,C采用贪心策略计算最小花费,D则通过分段处理方法分析无限序列的前k位数字和。解题关键在于准确理解题意,合理设计算法,并注意处理边界条件和精度问题。
2025-09-27 15:37:20
1334
原创 费马小定理
本文介绍了费马小定理及其在求解大指数模运算问题中的应用。文章首先将问题转化为计算2^(N-1) mod (10^9+7),然后利用费马小定理简化计算过程,将指数N转换为N mod (p-1)的形式。通过快速幂算法实现高效计算,并提供了C++代码实现。这种方法有效解决了当N极大时(如10^100000)直接计算不可行的问题,展示了数论知识在算法优化中的重要作用。
2025-09-26 22:27:05
1019
原创 ACWing GESP认证C++打卡
本周学习内容主要涵盖算法与数据结构,包括字符串拼接排序、队列排序交换次数计算、最大公因数求解、分组动态规划以及物品分配的贪心算法。关键点包括:1. 字符串拼接排序通过自定义比较函数实现;2. 通过逆序对计算队列排序的最少交换次数;3. 利用数论性质优化最大公因数计算;4. 使用动态规划解决分组优化问题;5. 基于差价排序的贪心策略实现物品最优分配。每个问题都涉及核心算法思想的应用与实现。
2025-09-25 15:16:57
979
原创 724并查集&带权并查集题解
本文介绍了五种算法题目及其解决方案:1. A-B进制星球:实现不同进制的高精度加法,通过字符与数值转换完成计算;2. 海底高铁:使用差分数组统计铁路使用次数,比较IC卡和单程票费用;3. 校运会百米跑:应用并查集判断学生是否同组;4. 银河英雄传说:带权并查集计算战舰间距;5. 食物链:关系型并查集处理动物间捕食关系;6. 数组破坏:逆向并查集维护连续区间最大值。各题均给出核心思路和关键代码片段。
2025-07-25 16:40:20
868
原创 723LCA题解
本文摘要: 本文包含多个算法题解和代码实现,主要涉及以下问题: 土豆合并问题:通过分解较小土豆并合并到最大土豆的最优策略,计算最小操作次数。 排列优化问题:通过前缀和特性分析,提出将大数递减排列和剩余小数递增排列的算法。 跳跃游戏问题:使用动态规划或贪心策略计算是否能在限定跳跃次数内通过特定路径。 LCA算法实现:提供基于倍增法的最近公共祖先模板代码,支持快速查询树中节点关系。 路径相交判断:通过LCA技术判断两路径是否相交,并给出判断条件。 信息图问题:利用DFS时间戳和并查集处理森林结构中的祖先查询和连
2025-07-24 15:56:44
621
原创 722单调栈单调队列
本文介绍了五个算法问题的解决方案,主要涉及双端队列和单调栈的应用: 区间最小值问题(滑动窗口):使用单调队列维护窗口内最小值,时间复杂度O(n)。 合唱队形问题(最长上升子序列):通过正反两次动态规划求解,计算需要移除的最少人数。 滑动窗口最值问题:使用两个单调队列分别维护窗口内的最大值和最小值。 消息顺序问题:利用双端队列和前缀和数组,统计满足条件的消息顺序数量。 最大区间乘积问题:通过单调栈找到每个元素左右第一个比它小的位置,计算以该元素为最小值时的最大区间乘积。 这些题目展示了双端队列和单调栈在解决区
2025-07-24 15:54:57
566
原创 721kmpmlc的题解
本文包含四个算法题解:1. KMP字符串匹配:实现模式串t在主串s中的匹配,输出所有匹配位置及next数组。2. Manacher算法:求最长回文子串长度,通过预处理字符串和中心扩展实现。3. 逆序对问题:统计二进制字符串中0和1形成的逆序对数量,处理'?'时的两种可能情况。4. 环形游戏问题:模拟n个人围坐的传递游戏,根据指令方向移动并输出最终位置的人名。每个问题都给出了核心思路和C++实现代码。
2025-07-22 18:43:01
567
原创 2123の题解
本文包含五个编程问题的解决方案: A题"博弈论":判断当n不是4的倍数时Alice胜,否则Bob胜。 B题"旅行":当k=1时只有战力最高者能胜,否则所有人都有获胜可能。 C题"浅醉":通过两次遍历数组,标记最小值前缀和最大值后缀的位置。 D题"二分大战":根据1的个数和子串长度判断Alice或Bob获胜的条件。 E题"数一数":通过统计元素频率和维护可能的MEX值集合,计算移除k个元素后的MEX情况。 每个
2025-07-20 17:47:24
1140
原创 矩阵快速幂与扩展欧几里得
摘要:本文包含多个编程问题的解决方案。A题要求生成一个n位数,满足特定条件(不含0、不能被位数整除),当n=1时输出-1,否则输出以2开头,后面跟随n-1个3的数字。B题实现了快速幂算法,用于计算a^b mod c。C题使用矩阵快速幂求解递推关系式。E题通过计算最大公约数将分数化简。F题利用扩展欧几里得算法求解同余方程。这些算法涵盖了数论中的常见问题,展示了高效解决数学问题的编程方法。 (150字)
2025-07-19 19:00:36
990
原创 718组合数の题解
本文摘要:包含多个算法问题的分析与实现。A题利用二项式定理证明组合数偶数项和等于奇数项和,并用快速幂计算2^(m-1)。B题通过卢卡斯定理和费马小定理高效计算大组合数取模。D题是Nim博弈问题,通过异或判断胜负。E题是质数脑筋急转弯,检验特定条件。F题要求判断数组是否为等差数列,并验证特定数学条件。各题均提供C++实现代码,涉及组合数学、数论、博弈论等算法知识。
2025-07-19 09:18:03
635
原创 717DFSBFS题解
本文摘要:五道算法题解,涵盖DFS、BFS及组合数学应用。A题通过DFS组合数并判断素数;B题用BFS求解电梯最短路径;C题通过DFS实现单词接龙最大长度;D题用BFS处理八数码问题;E题DFS判断迷宫可达性;F题运用组合数学计算确保获得k对匹配手套的最少取数。各题均给出核心思路与关键代码实现,展示不同算法在各类问题中的典型应用。
2025-07-17 22:01:52
762
原创 二分的题解
本文介绍了几个基于二分法和排序算法的问题及其解决方案: 二分查找数对问题:通过排序数组,使用二分法查找满足A-B=C的数对数量,时间复杂度优化至O(nlogn)。 木材切割问题:利用二分答案法在可能的最大边长范围内寻找最优解,通过计算能切出的段数判断可行性。 高考志愿匹配问题:通过排序和二分查找,快速找到每个学生成绩与学校录取线的最接近匹配。 特殊排序问题:使用标记数组记录允许交换的位置,结合冒泡排序实现特殊要求的排序。 前m大数求和问题:通过预计算所有两数之和并排序,快速获取前m大的和。 逆序数统计问题:
2025-07-17 11:33:29
1017
原创 2121的题解
本文摘要包含五个编程题目解法:A题要求计算起点到区间的最短移动距离,若起点在区间外则直接移动到端点。B题通过检查字符串拆分后的子串关系,判断是否存在合法拆分方式。C题通过矩阵行列操作寻找最小化最大值的方法,关键在于覆盖所有最大值的行和列。E题分析数字区间内x的位置,使得与两端点相同位数之和最小,需考虑最长公共前缀和进位情况。这些题目分别考察了区间计算、字符串处理、矩阵操作和数字性质分析等算法技巧。
2025-07-16 22:20:05
973
原创 7.16博弈论的题解
本文摘要了六个编程问题的解法思路和代码实现。问题A要求对数组排序后计算特定间隔元素的和;问题B通过数学规律判断重复数字是否为质数;问题C使用滑动窗口优化求最大连续k个元素和;问题D基于尼姆博弈规则判断胜负;问题E分析石子堆的奇偶性决定胜负;问题F根据数字特性(质数、奇偶性、2的幂次等)判断游戏胜负。每个问题都提供了核心思路和简洁的C++代码实现。
2025-07-16 21:29:21
917
原创 筛素数的题解
本文包含多个算法问题的C++实现代码和简要分析:1. 欧拉筛法程序用于快速筛选素数,通过标记合数并提前终止循环提高效率;2. 黑板游戏问题通过判断n能否被4整除决定胜负;3. T素数问题通过检查是否为质数的平方来判断;4. 质因子分解程序通过分解阶乘的每个因子来统计质因数;5. 着色游戏问题通过二分查找确定满足条件的元素组合数。每个程序都包含关键思路说明和优化方法。
2025-07-16 18:53:59
649
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅