自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (1)
  • 收藏
  • 关注

原创 CF2179D Blackslex and Penguin Civilization

我们可以发现方案的总集合其实就是n个里面选n-k个(假设到了选k个1的情况)为0,其余的为1,然后我们把为0的位置做一个排列,这样就保证了最大,而要保证字典序最小,则一定选择高位为0。上述过程体现了贪心策略:每一步在保证后续仍能取得最大总贡献的前提下,选择当前可行的、字典序最小的数。,2n−1这 2^n个数排列成一个序列,使得该序列的前缀。的个数恰好比前一个数少 1 的数。放在序列开头是最优的,否则总贡献会减少 1,而且这也能确保后续有更多可行的衔接方案。以 n=3n=3 为例,需要排列的数为二进制下的。

2025-12-24 14:21:23 382

原创 CF1043DIV3 D From 1 to Infinity

摘要: 题目要求计算由连续整数拼接而成的无限序列前k位数字的各位数字之和。通过将数字按长度分组,确定k位所在的整数n及其位置pos。计算1到n-1的数字和时,分解每一位的贡献:前i位固定时的数字和与后面位均匀分布的贡献。最后加上n前pos位的数字和。该算法高效处理超大k值(如1e15),通过数学推导避免了直接遍历,确保时间复杂度与数字位数相关。样例验证了方法的正确性。

2025-09-23 23:22:13 527

原创 CF 1042 (Div. 3) D. ArborisContractio

那么我们可以发现答案为 总叶子节点数 - max(f[i]),此时有一个问题 如果只有两个点的话那么答案应该为0,三个点答案为1 需注意,按照我们公式 我们是默认忽略掉叶子节点的,为什么可以忽略呢?那么如果我们选择叶子节点的话 答案就是总的叶子节点个数-1,但是这显然不一定是最优的,比如我们选择上图的节点5,那么我们发现 8 9节点和5已经是最短距离了 而且节点 8 9没有子节点(即是叶子节点)此时答案为 总叶子结点数-2 不妨设第i个节点和叶子节点距离为1的个数为F(i),

2025-09-15 23:58:10 163

原创 链式前向星超详细使用教程C++版(数组模拟)

我们可以利用链表存储以当前点出发能到达的下一个点是哪一个,大家请看图(画的丑请见谅) 我们看1能达到2 3 5,于是我们利用链表简洁清爽的将图存储。于是我们需要存储以每个点能达到的下一个点的集合,初始都指向-1,然后每加入一个点就利用链表的头插法即可,然后我们还需要存储当前指向这个点的值,和这个点的下一个值,也就是和链表一模一样的value和next了。连接1-3 head[1] = 2,value[2] = 3,next[2] = 0(插到第一步的2中间了)连接1-5大家自行模拟即可。

2025-09-04 18:22:40 243

原创 P1631序列合并 堆题型

也就是说我们可以把这N个A[i]+b[1]...看成N个序列依次往后有N个序列的矩阵,我们初始时将A[i]+b[1]放进堆中,然后每次弹出并输出最小的a[i]+b[j],随后再将a[i]+b[j+1]放入堆中即可,这样即保证了这对数字不重复,并且每个行序列都有单调性,我们选择最小那个换成他的下一个保证了当前一定最小,非常巧妙,以下给大家展示样例剖析方便大家理解。我们可以发现一个简单的结论 A[1]+B[1]<=A[1]+B[2]<=A[1]+B[3]....<=A[1]+B[N]

2025-09-03 14:12:41 155

原创 P1801 利用对顶堆解决动态第k小数问题

我们下面放一个大根堆上面放一个小根堆 假设上面堆的所有值都大于下面堆的值,则从上至下的每一层是一个递减的序列那么有什么用呢?我们发现如果要找第k小个数,在满足上述前提下,我们只需要让大根堆的元素维持在k-1个即可,这样我们所要找到答案就一定是小根堆的根了。我们应该去小根堆最小值下去又因为要取第k小个数 所以下面必须先要有k-1个数,所以我们每次先要将当前大根堆的值调整值k-1才行,因为这里每次只累加1,所以我们只要在最后将小根堆的根插如大根堆即可。ui表示当前的数组a的元素到哪里了,然后输出第i小数。

2025-08-30 20:51:28 234

原创 2024ICPC第一场网络赛 F Make Max

还有一个特殊情况是 如果左边第一个大于等于ai的是当前这个数字 则在之前一定已经计算过了,此时只计算右边的即可,那么右边为什么不会重复,因为下次遍历到右边的左边就是当前这个了,最终代码如下。我们发现对于每一个数ai 他的最大贡献值是左边最大连续比他小的+右边连续比他小的,也就是说我们找到左边第一个大于等于ai 和右边第一个大于等于ai的 然后求区间里的数个数即可。给定n个数,每次可以将当前数字替换为左右比当前数字大的数,求最大操作数。如 1 1 1 2 2 2 2 ,最多能变三次。

2025-08-29 22:25:13 209

原创 P1083 借教室题解

摘要:题目要求确定从哪个订单开始无法满足教室分配需求。给出两种思路:1) 线段树维护区间最小值判断是否出现负数;2) 二分答案结合差分数组验证可行性。代码采用第二种方法,通过差分数组高效处理订单区间修改,二分查找第一个不满足条件的订单位置。若所有订单均可满足则输出0,否则输出第一个失败的订单编号。时间复杂度为O(n log m)。

2025-08-07 19:46:33 295

原创 CF333E Summer Earnings 枚举+BITSET优化

这篇文章提出了一种高效算法,用于在给定n个点(n≤3000)时找到三个点,使得它们作为圆心的相同半径的圆能够覆盖最大可能半径。关键思路是通过按边长降序枚举所有边对,使用bitset数据结构快速检测是否存在公共邻接点形成三角形。算法首先计算所有点对的距离并排序,然后利用bitset的位运算特性高效判断三点连通性。当找到第一个能形成三角形的边时,该边长度的一半即为所求最大半径。这种方法通过bitset优化将时间复杂度从O(n^3)降低到约O(n^2),能够在8秒时限内处理大规模数据。最终输出结果需将找到的边长除

2025-07-31 17:12:44 366

原创 LCA的倍增求法详解

其实很简单,我们还是求LCA(9,11),直到枚举到2的时候才可以往上 我们发现跳的长度 2的时候,9和11往上跳的时候已经重合了,也就是说我们要找的LCA只有可能在当前点或者当前点之前,所以我们选择不跳,因为由于是树,如果在某个点已经重合了,则这个点以及往上的部分必然是CA,但LCA一定是当前或者下方。,简单的想,我们可以先将该对的深度达到一致,于是我们让3往上直到3与7的深度相同,我们发现这不是上面提到两种情况的第二种,由结论易知,如果是情况2,则返还当前节点。3和7那么在两个不同的子树。

2025-07-23 15:44:25 451

原创 HDU -5936 折半枚举/二分题解

摘 要:本文针对HDU-5936问题,提出了一种折半枚举与二分查找相结合的优化算法。问题要求找到满足x=f(y,k)-y的所有y值,其中f(y,k)表示y各数字的k次方之和。通过分析y的上界(≤1e10),采用折半策略:预处理前1e5个数的f(y,k)值并排序,利用二分查找快速匹配后半部分。特别处理x=0的情况。算法有效降低了时间复杂度,避免了直接枚举1e10的不可行性。代码实现展示了预处理、排序和二分查找的关键步骤。

2025-07-13 22:40:23 704

原创 Almost All Multiples codefrces div386 C题

摘要:该问题要求构造一个数组,其中a1=x且an=1,其余元素需满足ai是i的倍数。当n是x的倍数时,可通过将n与x的倍数位置交换来构造最小字典序数组。具体实现时,若n不为x的倍数则无解输出-1。否则遍历2到n-1,将x的倍数与n交换位置。最终数组应满足每个ai是i的倍数且字典序最小。(150字)

2025-05-30 19:09:18 339

原创 树状数组求最长上升子序列

求LIS有三种方法,第一种为DP,但时间复杂度为n²,第二种为贪心+二分(nlogn),第三种则是树状数组来求也是nlogn的时间复杂度。

2025-05-29 00:09:47 345

原创 2025团体程序设计天梯赛L2 算式拆解

括住“ 然后按优先级找到优先级最高的括号内部 将内部计算式输出 然后”前面步骤中获得的结果不必输出 “前面步骤中获得的结果不必输出。例如在样例中,计算了。题意:给定一个算术式,”每个操作及其对应的两个操作对象都被一对圆括号。” 样例:(((2+3)*4)-(5/(6*7)))是前一步的结果,不必输出,所以第二行只输出。以后,下一步应该计算。

2025-04-22 14:22:31 508

原创 2025年团体程序设计天梯赛 L1 现代战争

题意: 给定一个n*m的矩阵 每次找到该矩阵中最大值Vij 然后将该最大值所在的行和列“炸掉”,给一个数K 表示要炸k次 最后输出 炸完之后的值。

2025-04-22 14:13:29 540

原创 2025团体程序设计天梯赛L1-大幂数

思路: 由于N<2^31 所以我们可以枚举幂的值从1-30 即可 然后枚举加到哪一个数字 从前往后枚举和从后往前枚举都可以 这里展示两种代码。题意:给定一个数N 找到一个幂k能满足 N=1^k+2^k+... N<2^31 如果有不同的两个k都满足条件,则选择最大的那个K。2.从后往前便利(找到即可退出)

2025-04-22 13:57:47 248

原创 2025团体程序设计天梯赛L1-这是字符串题

【代码】2025团体程序设计天梯赛L1-这是字符串题。

2025-04-22 13:42:16 265

原创 2025团体程序设计天梯赛L1-零头就抹了吧

题意:给定一个数n 求一个小于等于n的最大数x满足x转换为二进制为10000的格式。思路 直接枚举2到(2^?

2025-04-22 13:31:16 291

原创 2025年天梯赛L1 高温补贴

题意:根据室外温度室内温度和工作状态来确定输出内容 属于简单的顺序结构题。

2025-04-22 13:25:46 415

原创 蓝桥杯 2024年省赛C组回文字符串

由题可知 只需要判断该字符串内部(左右第一个不是lqb的边界的内部)是否是一个回文字符串即可,则该题可以分为两步。2.判断内部是否是一个回文字符串即可```1. 通过两个指针找到左右边界。

2025-04-10 09:11:50 222

原创 洛谷赦免战俘 入门思想解题

先呈上代码,注释已经说的非常明确了,直接看即可。

2024-11-18 13:08:50 141

原创 C语言格式输入二进制

【代码】C语言格式输入二进制。

2024-09-25 22:09:09 1025

原创 新人学习c语言整数分解笔记

【代码】新人学习c语言整数分解笔记。

2024-08-24 23:36:05 228

空空如也

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

TA关注的人

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