- 博客(550)
- 收藏
- 关注
原创 P3239 [HNOI2015] 亚瑟王题解
题目摘要 本题是关于卡牌游戏的概率期望计算问题。给定n张卡牌和r轮游戏,每张卡牌有发动概率p_i和伤害值d_i。在每轮中,系统按顺序检查每张未发动过技能的卡牌,以p_i概率发动技能并结束当前轮。要求计算这套卡牌在r轮游戏中造成伤害的期望值。 解题思路 使用动态规划计算每张卡牌在各轮被选中的概率 预处理每张卡牌在k轮中都不被选中的概率mi[i][k] 定义f[i][j]表示前i张卡牌中有j张被选中的概率 计算每张卡牌被选中的总概率fp[i] 最终期望值为各卡牌伤害值乘以其被选中概率的总和 关键点 动态规划处理
2025-12-11 21:28:04
845
原创 AT_agc030_d [AGC030D] Inversion Sum题解
摘要 本文介绍了一道关于计算所有可能操作序列下逆序对总数的算法题。给定长度为N的整数序列和Q次交换操作,每次可以选择交换或不交换。需要计算所有2^Q种操作方式下最终序列逆序对数的总和,结果对1e9+7取模。通过动态规划方法,维护元素间的大小关系概率,最终高效地计算出结果。核心思路是利用概率转移来避免直接枚举所有情况,时间复杂度为O(N^2 + QN)。代码实现中巧妙地处理了概率转移和最终结果的合并计算。
2025-12-11 21:24:50
794
原创 AT_arc150_d [ARC150D] Removing Gacha题解
摘要 本文研究了有根树中顶点染色过程的期望操作次数问题。给定一棵N个顶点的有根树,初始所有顶点为白色。每次操作从所有"坏顶点"(即从根到该顶点的路径上存在白色顶点)中随机选择一个染黑,直到所有顶点变黑。研究发现,每个顶点i的贡献为调和级数的前d_i项之和,其中d_i是顶点i的深度。通过预处理调和数模998244353的逆元,可以线性时间复杂度计算出总期望值。算法实现使用深度优先搜索计算各顶点深度,并利用快速幂预处理调和数。最终结果对998244353取模输出。
2025-12-11 21:22:18
701
原创 NOIP2025题解
题目1《糖果店》要求用m元钱购买最多糖果。每种糖果价格交替为x_i和y_i元。解法是贪心:先计算每对x_i+y_i的最小值,确定最多能买多少对,再枚举购买单个x_i后的剩余钱数。 题目2《清仓甩卖》需要计算使购买原价总和最大的定价方案数。糖果定价为1或2元,按性价比排序购买。解法是统计满足最优购买顺序的定价组合数,对结果取模998244353。 两题均涉及贪心算法和组合数学,第一题关注最优购买数量,第二题关注最优方案数统计。
2025-12-10 20:57:59
1234
原创 NOIP2025总结与启示
NOIP2025参赛总结:赛前集训N天,比赛中20分钟完成第一题,但耗时4小时未能解出第二题。主要问题包括代码能力不足、时间分配不合理(导致错过三四题暴力分)、饮食不当影响状态,以及错误预估分数线。改进方向:加强刷题提升编码能力,优化时间管理,注重赛前饮食,调整得分策略,确保稳定拿分。需重点提升实战能力与比赛策略。
2025-12-09 21:28:49
148
原创 [ABC199F] Graph Smoothing题解
该题目要求在一个无向图上进行K次操作,每次随机选择一条边,将该边两端顶点的数值替换为其平均值。最终需要求出每个顶点数值的期望值,并对1e9+7取模。 解题思路是使用矩阵快速幂来高效处理大规模操作次数K。首先构建转移矩阵,其中元素表示各顶点数值转移的概率关系。通过矩阵快速幂将转移矩阵提升到K次方,再与初始数值向量相乘,即可得到最终期望值。 关键点在于正确构建转移矩阵:当顶点i和j之间有边时,转移概率为1/(2M);顶点自身的保留概率为1减去其度数/(2M)。利用快速幂和模逆元处理除法,最终输出各顶点的期望值。
2025-12-09 21:11:53
1305
原创 [ABC154D] Dice in Line题解
题目要求计算连续K个骰子的最大数学期望值。每个骰子的期望值为(p_i+1)/2,其中p_i是骰子面数。使用前缀和数组快速计算任意连续K个骰子的期望和,遍历所有可能的连续子数组,找出最大值即可。时间复杂度O(N),适用于大规模数据。输出结果需保留12位小数,允许与标准答案误差不超过1e-6。
2025-12-09 21:03:11
143
原创 P13982 数列分块入门 7题解
摘要 本文介绍了数列分块入门7题的解法。题目要求对长度为n的数列进行三种操作:区间加法、区间乘法和单点查询。作者采用分块算法,将数列分为若干块,对每个块维护加法懒标记(lz)和乘法懒标记(lz2)。当操作覆盖完整块时更新懒标记,否则暴力修改对应元素。查询时结合对应块的懒标记计算结果。代码实现较高效,时间复杂度约为O(n√n)。输入输出样例展示了算法的正确性。
2025-11-19 21:26:50
233
原创 P13981 数列分块入门 6题解
摘要 题目P13981实现了一个数列分块算法,支持单点插入和单点查询操作。算法将数列分成多个块,每个块维护起始和结束位置信息。对于插入操作,找到对应块并更新链表结构;查询操作则通过遍历块定位元素。代码使用块长为√n的分块策略,并动态调整块信息。算法复杂度为O(n√n),适用于n≤300,000的数据规模,满足题目要求。
2025-11-19 21:25:32
386
原创 P13980 数列分块入门 5题解
摘要 本题实现了一个基于分块算法的区间开方和区间求和操作。给定长度为n的数列,支持两种操作:对区间[l,r]内每个元素开方取整(操作0),或查询区间[l,r]的元素和(操作1)。算法将数列分为√n大小的块,每个块维护元素和及是否全为0或1的标记(避免重复开方)。对于开方操作,若块标记未置位,则逐个元素处理并更新标记;求和操作则直接累加元素值。采用分块策略平衡了修改和查询的时间复杂度,实现了高效处理大规模数据。时间复杂度约为O(n√n)。
2025-11-19 21:23:29
842
原创 P13979 数列分块入门 4题解
题目摘要 本题要求实现一个支持区间加法和区间求和操作的数列管理系统。给定一个长度为n的数列,处理n个操作请求,包括两种类型: 区间加法:将区间[l,r]内的每个元素加上给定的值c 区间求和:查询区间[l,r]内元素的和,并对结果取模(c+1),输出非负余数值 数据规模较大(n≤300000),要求高效实现这些操作。 解决思路 采用分块算法处理,将数列分成√n大小的块,每块维护原始数据和懒标记: 对于区间加法操作:部分覆盖的块直接修改元素值,完全覆盖的块使用懒标记 对于区间求和操作:部分覆盖的块累加元素值,完
2025-11-19 21:20:52
372
原创 P13978 数列分块入门 3题解
摘要 本文实现了一个区间操作的数据结构,支持两种操作:1) 对区间[l,r]所有元素加c;2)查询区间[l,r]中比c小的最大元素(前驱)。采用分块算法处理,将数组分成√n块,每个块维护排序后的数组。对于区间加操作,处理完整块时使用懒标记,边界块直接修改;对于查询操作,在完整块中二分查找,边界块线性扫描。算法时间复杂度为O(n√n log√n),适用于n≤200000的数据规模。
2025-11-19 21:19:14
353
原创 P13977 数列分块入门 2题解
摘要 题目P13977实现了一个分块算法来处理数列操作。给定长度为n的数列,支持两种操作:区间加法和查询区间内小于x的元素个数。算法将数列分块,每块排序后维护。区间加法时处理完整块和边角块,并用懒标记优化;查询时在边角块逐个检查,完整块使用二分查找。时间复杂度约为O(n√n),适用于n≤200,000的数据规模。测试时需注意数据范围可能超出32位整数限制。
2025-11-19 21:17:35
262
原创 P13976 数列分块入门 1题解
题目P13976要求实现数列的区间加法和单点查询功能。给定长度为n的数列和n个操作,每个操作要么是对区间[l,r]所有元素加c,要么是查询a[r]的值。使用分块算法处理,将数列分成√n大小的块,对完整块使用懒标记(lazy tag)优化,对不完整块直接暴力修改。时间复杂度为O(n√n),适用于n≤300000的数据规模。输入包含数列初始值和操作指令,输出每次查询的结果。
2025-11-19 21:15:37
305
原创 P2453 [SDOI2006] 最短距离题解
摘要 本文介绍了一个字符串编辑距离问题,要求计算将源字符串X转换为目标字符串Y的最小操作代价。EDIT编辑器提供了6种操作:删除、替换、复制、插入、交换和删除剩余字符,每种操作都有相应的代价。通过动态规划方法,构建状态转移方程来求解最优解。算法时间复杂度为O(nm),适用于长度不超过200的字符串。输入包含源串、目标串和各操作代价,输出最小转换代价。示例展示了如何将"algorithm"转换为"altruistic"的最小代价为48。
2025-11-17 21:30:44
586
原创 P2167 [SDOI2009] Bill的挑战题解
题目摘要:给定N个长度相同且包含小写字母和'?'的字符串,求恰好匹配其中K个字符串的字符串T的个数(T由小写字母组成,每个位置需满足对应字符相同或S_x[i]为'?')。结果对1000003取模。多组数据,N≤15,字符串长度≤50。 思路:使用动态规划统计匹配情况。代码实现了一个三维DP数组f[i][j][k]表示处理到第i个位置时特定状态的方案数,通过状态转移计算最终结果。
2025-11-17 21:27:59
511
原创 P2051 [AHOI2009] 中国象棋题解
这是一道关于中国象棋炮的放置方案计数问题。题目要求在n×m的棋盘上放置若干炮,满足任何两个炮不能互相攻击(即不在同一行或同一列,或中间恰好有一个棋子)。使用动态规划求解,状态f[i][j][k]表示处理到第i行时,有j列放1个炮,k列放2个炮的方案数。通过状态转移计算所有合法放置情况,最终对第n行的所有可能状态求和,取模9999973后输出结果。代码通过多层循环和多种转移情况实现了这一计数过程。
2025-11-17 21:26:48
259
原创 P2224 [HNOI2001] 产品加工题解
摘要:本题是产品加工调度问题,给定n个产品的三种加工方式(A机器加工、B机器加工或两机器共同加工)的时间,要求安排调度顺序使总加工时间最短。采用背包DP思路,状态f[i][j]表示前i个产品在A机器花费j时间时B机器的最小时间。通过三种转移方式(分别对应三种加工方式)更新状态,最终取所有状态中的最小值(max(j, f[n][j])的最小值)作为答案。数据范围n≤6000,时间值≤5,保证了算法的可行性。
2025-11-17 21:22:18
349
原创 P13465 [GCJ 2008 #1C] Increasing Speed Limits题解
你在高速公路上行驶时因超速被交警拦下。原来他们一直在跟踪你,他们惊讶地发现你一路都在加速,完全没有踩 f刹车!现在你急需一个借口来解释这一切。你决定说:“我看到的所有限速标志都是递增的,所以我一直在加速。”警察听后大笑,并把你经过的这段高速公路上所有的限速标志都告诉了你,并表示你不太可能这么幸运,刚好只看到了一段递增的标志。现在你需要估算这种情况发生的概率,换句话说,就是要找出给定序列中有多少个不同的严格递增子序列。空子序列不计入答案,因为那意味着你根本没看任何限速标志!例如,125是14。
2025-11-17 21:20:36
906
原创 B3800 [NICA #1] 弹幕题解
本文介绍了解决弹幕游戏安定点问题的随机化算法。题目要求在0到10^6范围内找到一个整数位置,使得该位置不在n个弹幕轨迹方程的解集中。算法采用随机生成数的方式,检查每个随机数是否满足所有弹幕方程均不为零的条件,一旦找到符合条件的数即输出。这种随机化方法在概率上能快速找到解,且代码实现简洁高效,适用于大规模数据情况。样例展示了算法如何正确找到不在弹幕解集内的位置。
2025-11-13 21:12:31
672
原创 P10475 [USACO03FALL] Milking Grid(数据加强版)题解
题目要求寻找组成奶牛网格的最小重复矩形单元的面积。通过分析输入样例可知,最小单元可以是"AB"的重复。 解题思路采用KMP算法: 分别处理行和列方向 计算每行字符串的最小循环节长度 计算每列字符串的最小循环节长度 将行和列的最小循环节相乘得到最小面积 代码实现步骤: 读取输入网格数据 分别对行和列构建字符串数组 使用KMP算法预处理获取各行和各列的最短循环前缀 计算并输出最小重复单元面积 时间复杂度为O(R*C),适用于给定的数据范围。该方法有效利用了KMP算法的高效性来求解字符串的最小
2025-11-12 21:27:36
145
原创 #P5638. period题解
摘要:本文解决字符串前缀重复模式识别问题。给定长度N(2≤N≤10^6)的字符串S,对于每个前缀Pi=S[1..i],若可表示为某子串重复K次(K>1),则输出i和K。采用KMP算法计算前缀函数,通过检查i是否能被(i - kmp[i])整除且K≥2来确定解。测试案例展示,如"aaa"输出P2=2次、P3=3次,"aabaabaabaab"输出P2、P6、P9、P12的重复次数。时间复杂度O(N)处理每个字符串。
2025-11-11 21:27:47
381
原创 #P5637. Pku2406 Power Strings题解
摘要:本文提出利用KMP算法求解字符串由多少重复子串组成的问题。通过计算字符串的KMP前缀数组,若字符串长度能被(长度-末位前缀值)整除,则重复次数为该比值,否则为1。算法对每个输入字符串(长度≤10^6)进行处理,遇到"."时终止,输出各字符串的重复次数。例如"ababab"返回3,"abcd"返回1。时间复杂度接近线性,能高效处理大规模输入。
2025-11-11 21:25:04
153
原创 #P5636. Pku3461 Oulipo题解
摘要:本文实现了一个使用KMP算法计算模式串在主串中出现次数的程序。给定T组测试数据,每组包含模式串和主串,程序通过构造模式串的部分匹配表(next数组),在主串中进行高效匹配,统计所有出现次数(包括重叠情况)。算法时间复杂度为O(n+m),适用于长度不超过10^6的字符串。示例输入输出展示了程序的正确性,包括处理重叠匹配和未匹配的情况。
2025-11-11 21:22:49
171
原创 #P5659. 子串查找题解
摘要:该题目要求计算字符串B在字符串A中出现次数,允许重叠。使用KMP算法优化匹配效率,时间复杂度为O(n+m)。算法通过预处理构建next数组,再扫描主串快速匹配,统计出现次数。输入输出均为字符串形式,数据规模达106,仅含大小写字母。
2025-11-11 21:20:08
135
原创 #P5610. Hdu1711 Number Sequence题解
摘要:本文解决了在数字串a中查找子串b首次出现位置的问题。针对多组测试数据,采用KMP算法进行高效模式匹配。给定a和b的长度(均≤10^6)及具体数值,算法首先预处理b的next数组,然后在a中搜索匹配。匹配成功时输出起始位置(从1开始计数),否则返回-1。代码实现了快速读写功能以适应大数据量,通过KMP的O(n+m)时间复杂度确保高效性。示例展示了匹配过程和正确结果输出。
2025-11-11 21:18:23
229
原创 CSP-J/S2025的总结与启示
这篇博文详细记录了作者参加CSP-J/S2025竞赛的全过程。文章首先列举了考前进行的多场模拟赛成绩,展现了从零分到400分的波动进步。随后详细描述了正式考试的答题情况:CSP-J组顺利完成四题,CSP-S组在部分题目遇到困难。作者对赛后在不同平台的评测结果进行了全面分析,发现存在优化空间和失误(如第三题未用map优化、第四题数组开小)。最后总结出四点经验教训:需提升知识点储备、加强观察能力、提高编程速度、增加练习量。文章真实呈现了竞赛选手的备赛心路历程,为后续参赛者提供了有价值的参考。
2025-11-07 17:03:40
833
原创 CSP-S 2025题解
社团招新问题摘要 题目要求将n个新成员分配到3个部门,每个部门人数不超过n/2,求最大满意度。采用贪心算法:先为每个成员选择最优部门,若某部门人数超限,则调整代价最小的成员至次优部门。时间复杂度O(n log n),适用于大规模数据。 道路修复问题摘要 C国需修复m条道路或通过k个乡镇新建道路,使n座城市连通且费用最低。转化为带限制的最小生成树问题,需动态规划处理乡镇选择与道路修复的组合优化。关键点在于权衡乡镇建设成本与新建道路效益,寻找全局最优解。
2025-11-04 19:56:43
871
原创 CSP-J/S2025的总结与启示
摘要: 本文总结了CSP-J/S2025竞赛的备战、考试过程与赛后反思。赛前通过大量模拟赛提升能力,成绩波动较大。考试中CSP-J四题全部完成并检查,预计满分400分;CSP-S则因知识点不足和时间分配问题,部分题目未能优化,预估得分250-400分。赛后发现多个优化机会被遗漏,如T3未用map优化、T2排序优化等。总结出四点改进方向:1)扩充算法知识(如AC自动机);2)加强观察与细心程度;3)提升编码速度;4)增加刷题量。最终成绩待公布,但反思为后续NOIP竞赛提供了宝贵经验。
2025-11-04 15:51:11
688
原创 [CSP-S 2025] 员工招聘题解
题目摘要:小Z和小H要招聘至少m人,有n个应聘者。每天面试一人,面试顺序由小Z决定。面试题难度为0(难,无人能过)或1(简单,都能过)。每人有耐心上限c_i,若之前被拒人数≥c_i则放弃面试。求满足录用≥m人的排列数,模998244353。 输入:n,m;长度为n的01串s表示每天题目难度;n个数的数组c表示耐心上限。 输出:符合条件的排列数模998244353。 样例1:n=3,m=2,s="101",c=[1,1,2],输出2(两种有效排列)。
2025-11-03 21:24:17
503
原创 [CSP-S 2025] 谐音替换题解
题目摘要:P14363 [CSP-S 2025] 谐音替换是一道字符串处理题。给定n个等长字符串替换规则(s_i1→s_i2)和q个询问(t_j1,t_j2),要求计算通过单次替换使t_j1变为t_j2的不同方法数。替换必须严格匹配子串,且前后缀需保持不变。数据规模达2×10^5个规则和询问,字符串总长5×10^6。需高效处理大规模字符串匹配问题。
2025-11-03 21:23:31
490
原创 [CSP-S 2025] 道路修复题解
题目摘要 本题描述了一个城市道路修复和乡镇城市化问题。给定n个城市和m条双向道路,所有道路在地震后被破坏,每条道路有修复费用w_i。另有k个待改造的乡镇,每个乡镇有城市化费用c_j,改造后可与各城市建设道路(费用a_{j,i})。要求以最小费用使原n个城市保持连通(可通过修复道路或选择改造乡镇并建新路)。 关键点: 可选择性改造部分或全部乡镇 最终只需保证原n个城市连通 数据范围较大(n≤10^4,m≤10^6,k≤10) 解法思路: 枚举所有可能的乡镇改造组合(2^k种情况) 对每种情况,将改造乡镇视为新
2025-11-03 21:22:34
386
原创 [CSP-S 2025] 社团招新题解
本题解解决了社团招新分配成员的问题,要求在不超过部门人数限制的前提下最大化成员满意度总和。算法首先贪心地为每个成员选择最优部门,若某部门人数超过n/2,则调整部分成员选择次优部门,通过排序差值来最小化总满意度损失。该方法通过贪心策略和排序优化,在O(nlogn)时间内解决问题,适用于大规模数据。
2025-11-03 21:21:42
476
原创 CSP-S 2025题解
题目要求将n个城市通过修复原有道路或改造乡镇后新建道路的方式连通,求最小费用。利用贪心算法,首先计算修复所有原有道路的总费用;若某个乡镇改造后可提供更优连接方案,则选择改造该乡镇并替代部分原有道路。算法核心是权衡乡镇改造带来的收益与费用,通过排序和优先队列优化选择策略,确保在满足连通性前提下最小化总成本。
2025-11-03 17:32:54
1810
1
原创 [CSP-J 2025] 多边形题解
题目摘要 给定n根长度分别为a₁到aₙ的木棍,求有多少种选择方案(下标集合不同即为不同方案)满足: 选择至少3根木棍 长度总和>2倍的最大长度 最终结果对998244353取模。 解题思路 暴力枚举:直接枚举所有可能的子集,检查条件,可得40分 优化解法:使用动态规划预处理前后缀背包 预处理前缀背包f[i][j]表示前i根木棍组合成j长度的方案数 预处理后缀背包f2[i][j]表示后i根木棍组合成j长度的方案数 容斥计算不满足条件的方案数 最后用总数减去不满足条件的方案数 关键优化 通过前后缀背包预处
2025-11-03 17:03:21
799
原创 [CSP-J 2025] 异或和题解
摘要: 题目要求从一个长度为n的非负整数序列中选取最多不相交的区间,使每个区间的异或和等于给定值k。解决思路是:首先计算前缀异或数组b,对于每个位置i,通过二分查找确定以i开头且异或和为k的最小区间结尾c[i],然后将c[i]处理为从i开始的最小区间结尾。最后通过贪心策略从前往后选择不重叠的区间,统计最大数量。时间复杂度为O(n log n),适用于大规模数据。
2025-11-03 17:02:41
1014
原创 [CSP-J 2025] 座位题解
题目要求根据考生第一轮成绩从高到低蛇形排列座位,并输出小R的位置。摘要如下: 该题模拟n行m列考场座位的蛇形排列过程。首先将所有成绩从高到低排序,然后按蛇形路径(奇数列从上到下,偶数列从下到上)依次填充座位矩阵。最后遍历矩阵找到小R的成绩位置(标记为1)并输出其行列坐标。样例演示了不同成绩排列下的座位分配结果。
2025-11-03 17:01:54
692
原创 [CSP-J 2025] 拼数题解
题目要求从给定字符串中提取数字字符,按任意顺序组合成最大的正整数。解决方法是提取所有数字字符,按从大到小排序后拼接。例如输入"290es1q0"时,提取数字2,9,0,1,0,排序得到9,2,1,0,0,组合成最大值92100。代码实现简单,时间复杂度主要在于排序步骤。注意题目保证输入至少包含一个1-9的数字,结果必为正整数。
2025-11-03 17:00:05
841
原创 CSP-J 2025题解
问题摘要 问题1:拼数 给定一个包含数字和小写字母的字符串,要求从中选出数字组成最大可能的正整数。每个数字只能使用一次。解决方案是提取所有数字,按降序排列后拼接成最大数。 问题2:座位分配 考生按成绩从高到低蛇形排列在n×m的考场中。给定成绩列表,需确定特定考生的座位位置。解决方案是模拟蛇形排列过程,标记目标考生位置后输出。 问题3:异或和 (摘要内容缺失)
2025-11-03 16:58:18
773
原创 P4677&P10967&P4767&P6246[IOI 2000] 邮局综合题解
摘要 这三道题目都是关于在特定位置建立设施(小学或邮局)以最小化所有点到最近设施距离总和的优化问题。基本思路是使用区间动态规划: 山区建小学:给定一条链式村庄和相邻距离,选择m个村庄建小学,使总距离最小。通过预处理前缀和,用DP计算最优解。 邮局问题:在直线排列的村庄中选择P个邮局位置,最小化总距离。方法类似第一题,处理坐标差绝对值。 邮局加强版:数据规模更大,但核心算法相同,通过优化避免超时。 共同解法:预处理距离,用二维DP数组f[i][j]表示前i个点建j个设施的最小总距离,通过比较中间点位置优化计算
2025-10-29 21:37:35
707
一些原创题解资源****
2024-06-25
求CSP-J/S2025湖南压缩包密码和一等分数线
2025-11-04
关于#c++#的问题,请各位专家解答!如:什么内容属于灌水?
2024-06-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅