自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 P17832 [CSP-S 2026] 地铁 / subway

本题考查最短路径建图策略。难点在于合理选择建图点:按站厅建图在m≤400时可用Floyd暴力求解(32分),但边数爆炸;正解采用线路建点,将每条线路视为一个节点,同站点交汇的线路间连边,权值为换乘代价(站台→站厅→站台)。通过Floyd预处理线路间最短换乘时间,查询时枚举起点线路与终点线路的站点组合,计算总时间:w[x] + dis[i][j] + w[y]。代码实现中注意INF定义、数据范围判断及边的动态更新。

2026-11-04 15:05:34 126

原创 CSP-J2025

如果没有思路,看一下特殊性质。

2026-06-26 14:41:08 259

原创 P7960 [NOIP2021] 报数

(1)判断一个数的十进制表达中是否有7(2)如果 数x存在一个因子 y 含有数字 7,那么 x 就不能报。

2026-05-28 17:16:34 207

原创 P10479 匹配统计

有字符串s,t,有T组询问,每组询问有一个x求s的所有后缀,逐位比较,看与t数组能对上几个,记为cnt,遇到第一个对不上的就停止,如果对上的个数cnt=x,则ans++数据范围2e5,我们不能采用n的时间复杂度。

2026-05-14 13:48:43 55

原创 CF1992F Valuable Cards

摘要:本文提出了一种解决序列划分问题的算法。给定长度为n的序列和整数x,要求将序列划分为最少数目的区间,使得每个区间内任意数的乘积都不等于x。算法核心思想是尽可能向右扩展区间,当遇到x的约数时,检查当前区间内是否存在能与之相乘得到x的数。通过维护两个集合(s和cur)来记录可能的乘积组合,当发现危险组合时开启新区间。时间复杂度为O(n),空间复杂度为O(n),适用于大规模数据。代码已通过样例测试,待进一步验证。

2026-04-24 11:44:22 163

原创 P9936 [NFLSPC #6] 等差数列

因为要形成一个等差数列,设新形成的等差数列为{bi}设首项为b1,则b=b+(i-1)*dsum=∑i1n​bi−ai∑i1n​bi∑i1n​ai∑i1n​bi=nb发现,sum的结果与bi相关,即与公差d与首项b1相关在这个式子中,有两个未知数,尝试用一个来表示另一个∵ b≥a又∵ bi=b1+(i-1)*d即b1≥ max(a- (i-1)*d)b1是max(a- (i-1)*d)的最大值sum=∑。

2026-04-23 11:53:49 387

原创 P1659 [国家集训队] 拉拉队排练

有长度为n的字符串和谐小团体:长度为奇数且是回文串的字符串,记录符合条件的字符串的长度。按长度排序,求前k个长度累乘除以 19930726 的余数。

2026-04-13 21:59:35 61

原创 P10474 [ICPC 2011 Beijing R] Matrix 矩阵哈希

有一个01构成的大矩阵,还有一些小矩阵,问小矩阵在大矩阵中是否出现过。

2026-03-23 22:03:23 347 1

原创 P1209 [USACO1.3] 修理牛棚 Barn Repair

摘要:题目要求用不超过m块木板覆盖所有住牛的牛棚,求最小总长度。解题思路是通过贪心算法,先计算所有牛棚的总长度,再减去前m-1个最大的相邻牛棚间隔,从而节省最多长度。例如,当m=3时,断开最大的两个间隔可最小化总木板长度。代码实现中先排序牛棚位置,计算间隔并排序,最后减去前m-1个大间隔得到结果。时间复杂度主要由排序决定,为O(c log c)。

2026-03-20 16:13:25 202

原创 P4551 最长异或路径

本文提出了一种在树结构中高效求解最大异或路径的算法。首先通过深度优先遍历计算每个节点到根节点的异或值D[x],然后利用这些值构建Trie树。基于Trie树快速查询的特性,可以在O(N)时间内从N个节点中找出异或值最大的节点对。该算法将原本O(N^2)的暴力枚举复杂度优化为线性复杂度,适用于大规模树结构(N=10^5)。核心思想是将路径异或问题转化为Trie树上的最大异或对查询,显著提高了计算效率。

2026-03-09 17:45:09 68 1

原创 P10471 最大异或对 The XOR Largest Pair

本文研究了如何从n个数字中选取两个数,使其异或结果最大。通过分析异或运算特性,提出了基于Trie树的贪心算法:从高位到低位处理,优先选择能使当前位异或结果为1的路径。算法实现时,将每个数字的二进制位插入Trie树,然后对每个数字查询能产生最大异或值的配对。初始实现因数组大小不足导致RE,修正后通过扩大Trie节点数解决了问题。该算法高效地解决了最大异或对问题,时间复杂度与数字位数线性相关。

2026-03-09 16:19:12 142

原创 P10470 前缀统计

本文介绍了使用Trie树解决字符串前缀匹配问题的方法。给定n个字符串和m个查询,要求统计每个查询字符串T的前缀在n个字符串中出现的次数。通过构建Trie树,并在节点中记录字符串结束标记的数量来处理重复字符串。查询时沿Trie路径累加遇到的结束标记数,得到匹配的前缀数量。代码实现了Trie的插入和查询操作,时间复杂度为O(L),其中L为字符串长度。该方法高效解决了前缀统计问题,适用于大规模字符串处理场景。

2026-03-09 14:52:57 65

原创 P1694 [USACO19FEB] The Great Revegetation B

本文研究了一个草地种植问题:将N块草地种植4种不同类型的草,满足M个限制条件(相邻草地草种不同),并寻找字典序最小的种植方案。通过构建图模型(草地为顶点,限制为边),采用贪心算法依次为每个顶点选择未被邻接顶点使用的最小颜色编号,确保满足所有约束条件。由于题目保证每个顶点度数不超过3,而颜色数为4,该算法总能找到可行解。最终输出一个N位数表示种植方案,其字典序最小。时间复杂度为O(N+M)。

2026-03-08 11:06:51 50

原创 P1650 [ICPC 2004 Shanghai R] 田忌赛马(同洛谷2587)

本文分析了田忌赛马问题的最优策略。通过贪心算法,将双方马匹按速度排序后,采用四指针或双端队列方法进行匹配:优先用田忌最快的马对阵齐王最快的马(能赢则赢),若无法取胜则用最慢的马消耗对方最快的马(不能赢则平或输)。代码实现中需特别注意平局时对最慢马匹的精确判断。此外,文章还介绍了另一种基于multiset的贪心匹配策略,通过二分查找实现最优匹配。最后指出了数组初始化时的常见错误,强调正确输入范围的重要性。多种解法均体现了贪心思想在该经典问题中的应用。

2026-03-07 15:20:48 411

原创 P8590 『JROI-8』这是新历的朝阳,也是旧历的残阳

刚开始我写的是这样正确的是这样刚开始,我以为都是+号,不用最后+mod了,但是忘记了有可能s1是一个很大负数啊,后面加一堆后,可能还是负数,最后不+mod,就出问题了。

2026-03-06 23:19:59 402

原创 P10388 [蓝桥杯 2024 省 A] 团建

两个人分别有一棵有根树(根结点编号是 1),每个结点有一个权值。他们各自从根走到某个叶结点,路径上的权值按顺序构成一个序列。求两个序列的最长公共前缀的最大长度。

2026-03-01 22:16:59 226

原创 P1407 [国家集训队] 稳定婚姻

本文研究了夫妻关系稳定性问题,将n对夫妻和m对旧情关系建模为二分图匹配问题。对于每对夫妻,通过拆散后能否找到新的完美匹配来判断其安全性。算法核心在于:1) 构建二分图(女性-男性);2) 初始完美匹配(夫妻关系);3) 对每对夫妻进行拆婚测试,通过DFS寻找增广路判断是否存在替代匹配。实现时需注意:仅构建有向图、不修改匹配数组、及时恢复婚姻关系等细节。实验表明该方法能有效判断婚姻安全性,输出"Safe"或"Unsafe"结果。该研究为关系稳定性分析提供了新思路。

2025-12-30 14:23:55 853

原创 P5182 棋盘覆盖

摘要:本文探讨了在N×N棋盘上使用1×2骨牌覆盖非坏格子的最大数量问题。通过将棋盘黑白染色,发现骨牌覆盖的格子必然是一黑一白相邻,从而将问题转化为二分图的最大匹配问题。具体解法包括:1) 将有效格子建模为顶点,相邻好格子间建边;2) 使用匈牙利算法求解最大匹配。文章详细分析了实现中的常见错误,如数组越界、建图方向不全等问题,并给出了正确解法。最终通过二分图匹配实现了骨牌数量的最大化计算。

2025-12-29 18:11:55 775

原创 P1092 [NOIP 2004 提高组] 虫食算

有三个字符串,每个字母表示一个不同的数字这三个字符串构成一组竖式加法已知每个数都是一个n进制的数让你给每个数字找到一组对应的数字,使得竖式成立。

2025-10-25 11:07:21 444

原创 P1041 [NOIP 2003 提高组] 传染病控制

有一棵树,当前根节点已经被传染,传染将顺着边每次前进一层(即传染至下一层的节点中),可以每次在当前层切断一条边,以保住切断后的子树部分,求如何切能够使得传染的人最少,即最后留在树上的节点数最少。

2025-10-24 21:32:29 421

原创 UVA1364 Knights of the Round Table

摘要:本文研究了圆桌骑士会议问题,要求找出因无法满足条件而必须被踢掉的骑士数量。关键思路是:将不互相憎恨的骑士连边构成图,利用Tarjan算法找出所有点双联通分量。对于每个点双,使用染色法判断是否存在奇环,若存在则其中所有骑士均可参会。最终统计未被任何奇环覆盖的骑士数量即为答案。算法通过构建反图、点双分解和二分图判定,有效解决了该问题,时间复杂度依赖于图的规模。

2025-08-12 14:05:29 407

原创 双连通分量 缩点 例题 poj-3694 Network

n个点m条边的无向联通图,每次在图中加边,询问此时的割边的数量。

2025-08-12 00:38:02 337

原创 P10936 导弹防御塔(二分图的完备匹配和多重匹配)

一个二分图,左右集合都有n个节点,如果该二分图的最大匹配包含n条匹配边,则该二分图具有完备匹配。

2025-08-10 13:23:36 1024

原创 P10928 走廊泼水节

有n个点,n-1条边,这n个点和n-1条边构成了一棵最小生成树。现需要加边,使其构成完全图,完全图就是任意两个点之间都有边相连。求最小的加边的权值之和。要求是加边构成完全图后,新图的最小生成树,必须还是原来那张图的最小生成树。

2025-08-04 22:47:55 462

原创 P4951 [USACO01OPEN] Earthquake 最小生成树+0/1分数规划

0/1分数规划的模型是指给定整数a1,a2……an以及b1,b2……bn,求一组解xi(xi=0或者xi=1,1≤i≤n),使得下列式子的值最大。∑ai∗xi∑bi∗xi∑bi∗xi∑ai∗xi​通俗地说,就是给定n对整数ai, bi,从中选出若干对,使选出的数对的ai之和与bi之和的商最大。

2025-08-04 21:14:37 933

原创 P1967 [NOIP 2013 提高组] 货车运输【解法一】

P1967 [NOIP 2013 提高组] 货车运输 解法一:最大生成树+倍增+lca

2025-08-01 23:14:41 579

原创 P4180 [BJWC2010] 严格次小生成树

最小生成树 LCA 树上倍增

2025-07-31 18:02:16 570

原创 算法竞赛进阶指南线性DP——I-country

哪一面都没有凹进去的部分。凸出使得某一边上,会有一个点,这个点左右两侧的单调性单调性相反。👉 左增右减👉 左减右增。

2024-03-23 13:09:25 2007

原创 算法竞赛进阶指南线性DP——移动服务

可以看到每一次有三名服务员,都可以派,具体派谁看谁去完成这个任务花费最少,花费与服务员上一轮所在的位置有关,则服务员的位置需要记录一下。(2)优化维度,可以判断某一个维度是否可以用其他维度表示出来,如完成上一轮任务的服务员的位置就在pi,减少枚举一个服务员的位置量。入此我们就能算出第i个任务结束,要完成第i+1个任务,派每个服务员所需产生的花费,都求出来找一个min即可。阶段不能去,三个服务员的位置,我们知道当第i个任务完成后,三个服务员中肯定有一个位置位于 p。,另外两个服务员的位置为x,y。

2024-03-23 12:45:31 441

原创 算法竞赛进阶指南线性DP——杨老师的照相排列

排列队形,排出来大致就是这样一个形状。

2024-03-23 12:12:42 1189

原创 算法竞赛进阶指南线性DP——最长上升公共子序列

(1)当a[i]不在序列中,又因为b[j]一定在序列中,所以a[i]≠b[j],此情况下,等同于在a序列的前i-1的数中与b中的前j个数,且以b[j]结尾的LCIS。(2)a[i]=b[j]时,为了使前面的数尽可能多的匹配,所以a[i]一定和b[j]配,找到了公共子序列,求最长,参考LIS的处理方式。如果b[j]>a[i] (此时a[i]==b[j+1]) 这个数不满足条件,无法进入候选集合中。如果b[j]<a[i]=b[j+1],j 进入候选结合中,当前的候选集为原来的s(i,j)并 {j}

2024-03-22 23:48:52 574 1

原创 算法竞赛进阶指南第五章 线性DP——Cookies

→ 情况1:第i+1个小朋友分的比第i个小,则a[i+1]=i,即前面由i个小朋友拿到的饼干比他多(原因每一个小朋友饼干数的分配数量呈非严格单调下降,第i个小朋友比第i+1个多,则前面的不会小于第i个小朋友的饼干数) 如图。如果第i个拿到的饼干数=1,处理方式为:枚举她前面有多少个孩子拿的都是1个饼干,设分界点为k,即1 ~ k 个孩子拿到饼干数>1,编号k+1 ~ i的孩子饼干数=1。交换i 和 i+1位置的孩子,发现对于前1 ~ i个 和 从i+2 ~ n个,这样的交换对于这些孩子的怨气值没有影响。

2024-03-22 23:05:31 891 1

原创 [NOIP2012 提高组] 借教室

n天,每一天有ai个教室可供使用,对于每个借教室的订单,描述从哪天开始到哪天截止借多少个,求解第一个不满足条件的订单是哪个(即剩余空的教室数量不满足该订单在某天的需求量)?n、m为1e6。

2024-02-29 10:51:19 368 1

原创 P5960 【模板】差分约束算法

int n,m;w[idx]=z;h[x]=idx;i

2023-09-30 02:43:48 158

原创 P2330 [SCOI2005] 繁忙的都市

n个路口,路口间有至多一条边连接,道路是双向的,道路上一个边权。要改造其中的一部分道路,使其满足三个条件。

2023-09-25 14:09:20 113 1

原创 P2121 拆地毯

要保留不超过k条地毯,使得所有地点之间是连通的,且不构成环,并且保留的地毯边之和要最大。

2023-09-25 13:51:24 183 1

原创 P2872 [USACO07DEC] Building Roads S——最小生成树

题目中n个点,给出了m条边,现在要求你添加一些边,并且能使得任意一点都可以连通其他所有点。求添加的边的总长度的最小值。

2023-09-25 13:15:59 169 1

原创 P4568 [JLOI2011] 飞行路线 分层图

即有k个机会使得走某些边不花费代价或花费特殊的代价,可以建立k张相同的该图,每张图之间用有边的点连接起来,其代价是0或是特殊的值。每向下走一层,就代表用了一次机会,使得当前的路花费为0或特殊值,最多可以走k次。2、对于图中的每一条边 <u,v> 从 ui 到 vi+1 建立与题目所给操作相对应的边(i=0,1,…分层图多用于求最短路径,但是最短路径中可以有k条边的权值为0或特殊值。这个图的 k 次免费实际是代表 k+1 层,需要开 m(4k+2)从s到t,其中可免费k条,求第k+1大的航线。

2023-09-22 21:53:13 174 1

原创 图论-拓扑排序 P1347 排序

/判定方法:判定是否存在某一时刻,用于拓扑排序的队列的长度不为1,若不为1,证明当前有多个入度为0的点可供选择遍历,故拓扑排序不唯一。一边读入关系一边进行一次拓扑排序,方便找到遍历了前x个关系时,唯一拓扑排序或存在环的情况出现的x值。如果队列已空,还有点未入队,那么这些点的入度都不为0,说明图不是DAG,不存在拓扑排序。若ans.size() == n,即拓扑排序存在,还需要判断该拓扑排序是否唯一,即拓扑排序后的元素长度不等于给定的元素长度(判断方式)

2023-09-21 14:43:04 559

原创 图论-最短路学习 P1613 跑路

每秒钟可以跑 2的k次方km,k 是任意自然数,且这个机器是用 long int 存的,所以总跑路长度不能超过 max long int 千米。即如果i到t,t到 j 都存在长度为2 的(k−1)次方的路径,那么i到j就存在长度为2 的k次方的路径。两点之间有路径即1km,在有了空间加速器之后,每秒能走2的k次方km,求最短时间从1到达n。本题重难点在于如何计算出小A在每个点利用空间加速器能够前往的地方。当然,看到2的k次方,你肯定会想到倍增,可以用倍增小小的优化一下。本题要求1~n用时最短的秒数。

2023-09-21 13:57:20 108

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除