- 博客(22)
- 收藏
- 关注
原创 [USACO19DEC] Meetings S 题解
摘要: 题目描述了一维数轴上位于$0$和$L$处的两个牛棚及$N$头初始位置不同的奶牛,每头奶牛以恒定速度移动($1$或$-1$单位/秒),并在相遇时交换速度。当到达牛棚的奶牛总重量超过所有奶牛总重量的一半时停止。目标是计算在停止前发生的相遇次数。 解法: 对奶牛按位置排序,用双端队列分别管理朝左和朝右的奶牛。 每次选择最早到达牛棚的奶牛,计算其路径上的相遇,并更新剩余奶牛的重量分布。 当总重量达标时,根据剩余时间统计所有可能的相遇次数,避免$O(N^2)$暴力计算。 样例输出: 输入3头奶牛和$L=5$时
2025-09-13 20:36:59
778
原创 [USACO20JAN] Springboards G 题解
本文研究了Bessie在二维方阵中使用跳板的最短路径问题。通过坐标离散化和排序处理,将问题转化为动态规划优化问题。算法利用树状数组维护最优解,时间复杂度为O(PlogP)。最终通过计算fi=min(fk)+xi+yi得到从(0,0)到(N,N)的最小距离,其中跳板的使用能显著减少行走距离。样例演示了最优路径选择和跳板使用策略,验证了算法的正确性。该解法适用于大规模数据(N≤1e9,P≤1e5),通过离散化和树状数组优化实现了高效求解。
2025-09-13 20:34:15
1052
原创 【USACO题库】3.2.6 Sweet Butter香甜的黄油 题解
摘要:本文介绍农夫John寻找最优牧场放置糖块的问题,要求所有奶牛到达该牧场的总距离最短。通过分析问题,采用Dijkstra算法计算每个牧场作为目标点时的最短路径和,并优化处理大规模数据。算法对每个牧场运行Dijkstra(时间复杂度O(P*(C+P)logP)),最终输出最小总距离。样例中4号牧场的最优解总距离为8。该方法高效解决了大规模牧场网络中的最短路径问题。
2025-09-06 13:58:32
711
原创 [ABC379E] Sum of All Substrings 题解
摘要:题目要求计算给定数字字符串所有连续子串数值之和。直接枚举所有子串的O(N²)方法不可行,需采用动态规划优化。核心思路是计算每个数字对总和的贡献:以当前位置j结尾的子串数值之和F(j) = F(j-1)×10 + (S[j]-'0')×j。总能量值即为所有F(j)之和。该方法时间复杂度O(N),空间复杂度O(1)。样例输入"379"通过计算得出总能量值为514。
2025-08-23 16:05:18
585
原创 【NOIP2009TG】Hankson 的趣味题(son.pas/c/cpp) 题解
摘要:题目要求解决Hankson提出的"逆问题":给定a0,a1,b0,b1,求满足x与a0的最大公约数为a1且x与b0的最小公倍数为b1的正整数x的数量。通过枚举b1的所有因数并验证条件,可以高效解决问题。对于每组数据,时间复杂度为O(√b1),适用于n≤2000。输出满足条件的x的个数,若不存在则输出0。
2025-08-23 14:47:00
924
原创 c++快读快写2.0
本文介绍了C++中快速读写整数的实现方法。基础版本提供模板化的read()和write()函数,支持int、long long等整数类型,通过逐字符处理提高IO效率。进阶版本封装为FastIO类,增加缓冲区优化,支持字符、字符串和链式输出(writeln)。两种实现都处理了负数情况,通过递归实现数字分解输出。高级版本还包含自动缓冲刷新和更友好的接口设计,适用于算法竞赛等需要高效IO的场景。
2025-08-22 21:46:37
671
原创 c++快读快写
这段代码实现了一个高效的C++输入输出优化工具,包含以下功能:1) 支持多种数据类型的快速读取(read函数),包括整数、浮点数、字符和字符串;2) 提供对应的快速输出(write函数),处理整数、浮点数、布尔值及字符串;3) 使用位运算和寄存器变量优化性能;4) 支持可变参数模板实现多参数输入输出。代码通过宏定义和模板实现了简洁通用的IO操作,特别适合算法竞赛中对输入输出速度要求较高的场景。
2025-08-22 21:32:08
179
原创 连点器1.0
本文介绍了一个名为"Muchbetter Irregular QuickClick"的鼠标连点器程序。该程序具有中文支持,可自定义点击频率(建议不超过120次/秒)和触发按键(支持键盘A-Z、数字键等),可选择左键或右键点击。程序会随机调整点击间隔以防止检测,并实时显示当前点击频率。特别提醒在Minecraft等游戏中使用时频率不要超过14次/秒,否则可能被封禁。该程序为控制台应用,界面简洁,操作简单。
2025-08-22 21:29:46
299
原创 【提高组NOIP2007】树网的核(core.pas/c/cpp) 题解
本文研究了在树状网络中找到满足特定约束条件的最优路径问题。给定一个具有n个节点的树状网络T和非负整数s,要求找到位于某条直径上的路径F(长度≤s),使得所有节点到F的最大距离(偏心距)最小。文章提出了基于Floyd算法的解决方案,通过预处理全源最短路径,枚举所有候选路径并计算其偏心距,最终确定最小偏心距。算法的时间复杂度为O(n³),适用于n≤300的数据规模。文中给出了理论分析、代码实现和样例验证,证明该方法能有效解决该优化问题。
2025-08-22 19:24:07
817
原创 【USACO 2019 December Silver】Milk Visits 题解
摘要:题目要求处理N个农场构成的树结构,每个农场有G或H品种的奶牛。给定M个查询,每个查询需要判断从Ai到Bi路径上是否存在指定品种的奶牛。使用并查集将相同品种的连通农场合并,查询时若起点和终点不在同一连通块则存在目标品种,否则检查连通块的品种是否匹配。时间复杂度为O(α(N)),适用于大规模数据。
2025-08-22 19:18:17
283
原创 【USACO题库】2.4.5 Fractions to Decimals分数化小数 题解
该程序将分数N/D转换为小数形式,处理循环节并按要求格式化输出。对于形如N/D的输入,先计算整数部分,然后处理余数部分。通过记录余数出现位置来判断循环节,在循环节开始处插入括号。输出时每行不超过76个字符,确保符合格式要求。样例输入45/56输出0.803(571428),展示了整数部分、小数部分和循环节表示。程序能正确处理整数、有限小数和无限循环小数的情况。
2025-08-22 18:48:32
206
原创 【USACO题库】2.3.4 Money Systems货币系统 题解
举例来说, 使用一个货币系统 {1,2,5,10,...}产生 18单位面值的一些可能的方法是:18x1, 9x2, 8x2+2x1, 3x5+2+1,等等其它。传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单位面值组成的。母牛想知道有多少种不同的方法来用货币系统中的货币来构造一个确定的数值。写一个程序来计算有多少种方法用给定的货币系统来构造一定数量的面值。(1<= V<=25)可用的货币 V 个整数 (每行一个 每行没有其它的数)。单独的一行包含那个可能的构造的方案数。
2025-08-22 16:45:42
154
原创 【USACO题库】2.3.5 Controlling Companies控制公司 题解
该题目要求计算公司之间的控制关系。当公司A直接或间接持有公司B超过50%股份时,A控制B。给定N组持股关系(i,j,p),表示i公司持有j公司p%股份,需输出所有控制关系(h,s)。控制关系满足传递性,即若A控制B,B控制C,则A也控制C。算法通过动态更新持股矩阵,遍历所有可能的控制关系,最终输出按字典序排列的结果。例如样例输入表明1控制2和3,2控制3,因此输出(1,2)、(1,3)、(2,3)。
2025-08-22 14:52:33
174
原创 【USACO题库】2.3.3 Zero Sum和为零 题解
按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”后能得到和为零的数列。现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白,来将每一对数字组合在一起(请不在第一个数字前插入符号)。请考虑一个由1到N(N=3, 4, 5 ... 9)的数字组成的递增数列:1 2 3 ... N。请你写一个程序找出所有产生和为零的长度为N的数列。单独的一行表示整数N (3 <= N <= 9)。计算该表达式的结果并注意你是否得到了和为零。
2025-08-22 14:49:51
215
原创 【宽度优先搜索BFS】麻将游戏 题解
摘要:该程序解决一个麻将游戏中的路径连接问题。在给定的W×H网格中,判断两张相同麻将牌能否通过不超过3次转弯的路径相连(路径可超出网格但不能穿过其他牌)。程序使用BFS算法,通过逐层扩展搜索路径并记录转弯次数。输入包括网格尺寸、布局和多组坐标查询,输出每组查询的最少拐弯数或0(不可达)。代码处理了网格边界和动态标记访问状态,确保正确性和效率。
2025-08-22 14:39:30
412
原创 【USACO题库】2.3.2 Cow Pedigrees奶牛家谱 题解
本文探讨了计算满足特定条件的二叉树数量问题。给定节点数N和高度K,要求计算所有节点度数为0或2(即每个节点要么是叶子,要么有两个子节点)的不同二叉树的数量,结果对9901取模。 通过动态规划方法解决:使用二维数组dp[i][j]表示i个节点、高度不超过j的树的数量。初始化dp[1][j]=1,然后通过三重循环递推计算,最后用dp[N][K]-dp[N][K-1]得到恰好高度为K的树的数量。 样例输入5个节点、高度3时输出2,对应两种不同结构的二叉树。算法时间复杂度为O(N²K),适用于N≤200,K≤100
2025-08-22 14:34:48
343
原创 【Usaco DEC08 bronze】草料开支 题解
摘要:农场主约翰需要计算连续日期内草料包数的总和。程序接收N天草料包数H_i和Q次查询,每次查询给出起止日期S_j和E_j。通过预处理前缀和数组pre,快速计算区间和。对于查询区间[s,e],结果为pre[e-1]-pre[s-2]。该算法利用前缀和优化,将每次查询的时间复杂度降至O(1)。输入样例展示了4天数据和2次查询的处理过程,输出结果验证了算法的正确性。 (字数:150)
2025-08-22 14:32:41
225
原创 【usaco 2012 Nov Bronze】排版(typo.pas/cpp) 题解
本文介绍了一种判断括号序列是否可通过修改一个字符达到平衡的方法。算法首先检查字符串长度是否为偶数,且左右括号数量差必须为2。针对两种情况处理:当右括号多时从左向右扫描,记录首次右括号多于左括号时的数量;当左括号多时从右向左扫描类似处理。代码通过统计关键位置的不平衡点数量来确定修改方案,保证了算法的高效性(O(n)时间复杂度)和正确性。该方法巧妙地利用了前缀平衡性质,避免了复杂的动态规划。
2025-08-22 14:22:12
805
原创 【usaco 2012 Nov Bronze】排版(typo.pas/cpp)
这篇文章讨论了一个关于括号平衡的问题:给定一个由左右括号组成的字符串,求通过修改一个字符使其成为平衡序列的方法数。平衡序列定义为左右括号数量相等且所有前缀中左括号数不少于右括号数。文章分析了两种情况:当左括号少于右括号时,从前往后扫描并统计可修改的右括号数量;反之则从后往前扫描统计可修改的左括号数量。对于奇数字符串或左右括号差不为2的情况直接输出0。最终通过预处理和标记有效位置来计算可行解的数量。代码实现展示了具体处理逻辑。
2025-08-22 14:19:44
306
原创 c++ 语言基础----“hello world!”
本文介绍了C++基础语法,重点解析了标准代码模板的结构。主要内容包括:1. 头文件#include<iostream>和命名空间using namespace std的作用;2. main()函数作为程序入口点的定义和返回值意义;3. 通过"Hello World"示例讲解cout标准输出流的使用方法。文章强调初学者应熟记基础代码模板,并详细解释了各组成部分的功能和意义,为C++学习打下基础。
2025-08-21 21:31:02
338
原创 动态规划(Dynamic Programming, DP)简介
本章介绍动态规划(DP)的概念及应用。DP通过将复杂问题分解为子问题来求解,是一种通用方法而非具体算法。在算法竞赛中,DP可用于解决各类优化问题,同时计数等问题的递推解法也常被归为DP。本章将探讨DP的基本思想、算法设计及其优化,并比较DP与其他递推方法的异同。
2025-08-21 20:45:18
350
原创 【USACO题库】3.2.1 Factorials阶乘
本文探讨计算N!最后非零位的高效算法。由于阶乘结果增长迅速,直接计算会导致溢出。提出边计算边处理的方法:在累乘过程中去除末尾0(由2×5产生),并对中间结果取模1000保持精度。算法时间复杂度O(N),空间复杂度O(1),能高效处理N≤4220的情况。例如7!的非零位是4。
2025-08-21 20:23:52
550
介绍了如何利用斜算法优化基于斜率优化的动态规划模型设计:行程规划中方差最小化问题求解如何利用斜率
2025-08-22
【信息学竞赛】基础数学知识讲义:涵盖统计初步、函数、方程组、几何、三角函数、数列、概率、向量与复数的应用
2025-08-22
数学算法质数概念与高效算法详解:涵盖试除法、埃氏筛法及线性筛法的应用和优化
2025-08-22
【计算机科学】哈希表与字符串哈希技术详解:数据结构、函数设计及冲突处理方法综述
2025-08-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅