自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【题解】StarryCoding P211 勇闯高塔

传说中,在高塔的顶端,遗留着开天神的宝藏,关于宝藏,有的人说是无数的金银珠宝,有的人说是绝世神斧,众说纷纭,但是宝藏的真面目,没人看到过,也没人知道。但是人们清楚的是,在高塔内,有长期待在里面的生物吸收了开天斧留下的灵气,作为了守护神守卫着高塔的宝藏。很久很久以前,宇宙混沌一片,一天,一位神祇出现,凭借一把巨大的神斧将混沌撕裂,混沌渐渐分开,形成了天和地。因为是无限制地交换,对于二进制中某一位上的数字,我们都可以通过两两交换换到另一个数字上。这天,有一位勇者为了看清宝藏的真面目,闯进了高塔内,

2024-07-19 12:13:56 405

原创 【题解】StarryCoding P259 好奇怪好奇怪

th 测试用例如果数字是有些奇怪的,在唯一一行打印“YES”(不带引号),否则,打印“NO”。喜欢一些奇怪的数字。对于一个奇怪的数字,它的十进制表示中只包含数字。认为能被奇怪的数字整除的数字是有些奇怪的数字,现给一个数字。的所有因数枚举出来并逐一检查是否为奇怪的数字即可得出答案。感兴趣的友友们可以思考一下数据范围增大的话怎么解。,请判断这个数字是否有些奇怪。个答案–每个测试用例一个。因为数据量较小,所以可以将。- 需要检查的数字。的总和不超过1000。) - 测试用例数。行,每行包含一个整数。

2024-07-19 12:03:59 563

原创 【题解】StarryCoding P236 更短一点

于是我们得到结论,对于一串以1开头,以0结尾的子串都可以被擦除至剩一个0。对于一串以1开头的字符串,从前往后删0,我们总能得到一串不包含0的字符串,这很容易。现在保留末尾的0,再从后往前删掉所有的1。是0,他就可以擦除其中的1个字符(他可以选择擦除哪一个,但不能同时擦除两个字符)。所以猜想:对于一串以1开头,以0结尾的子串都可以被擦除至剩一个0。-th 测试用例的答案是李在做了一定数量的操作(可能是零)后能得到的最可爱的字符串。的字符串更可爱,如果它们的长度相同,那么从词典上看更小的字符串更可爱。

2024-07-19 11:48:34 279

原创 【题解】StarryCoding P235 再短一点

的所有子字符串都是幸运的。对于整个字符串,执行第一个操作就足够了。是幸运的,我们可以通过任意顺序执行以下两种操作。的子字符串)是一个幸运的字符串的整数对的个数。为了计算更长的子字符串的个数,我们可以将索引。中任何等于10的子字符串,然后将其替换为0。的所有子字符串都是幸运的,因为我们不能对它和。)—测试用例的数量。下面是测试用例的描述。中任意等于01的子字符串,将其替换为1。每个测试用例的第一行包含一个整数。每个测试用例的第二行包含一个由。的幸运的子字符串的个数等于。,我们可以选择子字符串。

2024-07-19 11:43:51 288

原创 【题解】StarryCoding P207 特别的多项式

懒惰的毛病又犯了,可是他又想快速地找到按递增顺序排列的。每个测试用例的第一行,也是唯一一行,包含两个整数。非负幂的和,我们就称它为特殊数。因为这个数可能太大,所以输出它的模数。代入这个多项式得到的计算结果是特殊数。对于每个测试用例,打印一个整数–以。近日又开始研究上了多项式,但是这次。规定:一个由不同非负整数组成的数组。研究的多项式并非普通的多项式了。换句话说,如果一个正数可以写成。中所有元素得到一个多项式,其中。用二进制的方式表示出来,然后将。是特殊的,因为它可以写成。的二进制数上每一位乘上对应的。

2024-07-19 11:32:25 442

原创 算法学习笔记(Tarjan)

本文介绍Tarjan求强联通分量、找割点和割边、找环。

2024-05-14 22:20:59 1712

原创 算法学习笔记(LCA)

LCA:树上两个点的最近公共祖先。(两个节点所有公共祖先中,深度最大的公共祖先)LCALCAxyxyxyLCAxyxyyxLCAxyyLCAxyzLCAxLCAyz))LCAx1​x2​...xn​LCAdfs序最大点,dfs序最小点本文主要介绍求LCA的两种方法:倍增法和Tarjan。

2024-05-14 19:12:52 940

原创 算法学习笔记(匈牙利算法)

匈牙利算法可以求解二分图的最大匹配问题(二分图:如果无向图GVE的所有点可以分为两个集合V1​V2​,所有的边都在V1​和V2​之间,而V1​或V2​的内部没有边,称G是一个二分图。直接引用例题进行解释。

2024-05-13 22:29:26 796

原创 算法学习笔记(二分图染色)

首先我们需要明确什么是二分图:如果无向图GVE的所有点可以分为两个集合V1​V2​,所有的边都在V1​和V2​之间,而V1​或V2​的内部没有边,称G是一个二分图。直接说结论:如果一个图是二分图,那么它一定没有边数量为奇数的环。判断一个图是否为二分图,一般用“染色法”进行判断。用两种颜色对所有点进行染色,要求处在一条边上的两个点的颜色不能相同,染色结束后,如果没有相邻点颜色相同,那就是二分图。例题;

2024-05-13 21:58:40 1854

原创 算法学习笔记(博弈论中的SG函数)

定义SG函数:对于状态x和它的所有k个后继状态y1​y2​...yk​SGxmexSGy1​SGy2​...SGyk​)}mex函数的值表示不属于集合的最小非负整数)现在对所有起点的SG函数值做异或和,若异或和为0,则这个状态为必败状态。若不为0,则为必败状态。现给出证明:当一个状态没有后继状态时,求mex集合为空集合,SG函数的值为0。即最终态的SG函数值必为0,而对于一个SG函数值不为0。

2024-05-11 20:04:31 591

原创 算法学习笔记(Nim游戏)

Nim。

2024-05-11 14:22:00 1002

原创 算法学习笔记(差分约束系统)

然后从这个虚拟源点出发跑一遍最短路,若出现负环,则不等式组无解,因为出现负环时,最后因为不等式组的解不唯一,输出时挑一个满足题意的解,只需要将距离数组。的不等式(或等式)组,请你判断这个不等式(或等式)组是否有解。那具体如何判断所给不等式组是否有解?可以拟定一个虚拟源点。而这个不等式就相当于题目中第一个不等式。,换句话说,若存在一条边连接着点。,这也就是差分约束的原理。的距离更远,用公式来讲就是。对于每组样例,第一行输出。行,每行一个不等式组。,可以假定有一条权值为。

2024-05-07 21:32:38 898

原创 算法学习笔记(最短路——spfa)

spfa是Bellman−Ford算法的改进。在Bellman−Ford中,我们在每一轮中枚举了每一条边,但是实际上,在上一轮中没有被更新的点所延伸出来的边是不需要访问的,因为上一轮中没有被更新的点值没变,边权没变,再向下也只是重复一次,不会更新出新的值,所以是无效访问。spfa就是省略了Bellman−Ford中的这些无效访问。具体写法参考BFS思路,用队列维护需要更新的点。

2024-05-04 15:42:59 863

原创 算法学习笔记(最短路——Bellman-Ford)

BellmanFord是一种单源最短路径算法,可以用于边权为负的图,但是只能用于小图。0n−1Dijkstra算法复杂度:很明显需要n−1个点都需要枚举一次,每次都需要枚举m条边,复杂度为Onm。同时这个算法还可以判断是否存在负环。只要更新完n−1次后,还有点可以被更新最短路,那就是存在负环的,因为只有负环是每走一圈路径长度都会往下减,就可以无限更新,而正常图我们只要枚举n−1遍。也可以记录每个节点最短路的路径。

2024-05-02 21:39:56 661 1

原创 算法学习笔记(最短路——Dijkstra)

Dijkstra是最常用,效率最高的最短路径算法,是单源最短路算法。核心是BFS和贪心。BFSDijkstra2如何快速地取得步骤2中描述的所谓最近邻点?可以使用优先队列来实现。就是说用优先队列来代替原来BFS中的普通队列。Omlog2​n。算法缺点:边权不能为负数,若出现负边,则上述贪心思想失效(出现从另外一点经过一负边到达“最近点”的距离比原本到达“最近点”的距离短)。存图:邻接表、前向星。

2024-05-01 22:00:03 411

原创 算法学习笔记(Floyd进阶应用——传递闭包)

给定一个集合,以及若干元素的传递关系,传递闭包问题是求解所有元素的联通关系,如给定集合。但是求解传递闭包问题时,我们需要求得所有点对之间的联通关系,复杂度就达到了。具体方案是用点对间的联通关系来代替原本的路径长度进行递推。,这个操作其实可以用或操作来取代。,这么高的复杂度,我们可以用相同复杂度但是代码简单的。如果是借已知单向图推两点间的联通关系,可以用。但实际上这个代码还能再进行优化,因为。的循环,可以减少一点计算时间。,在稠密图中,复杂度约等于。,还可以直接进行位运算。,优于直接搜索,可以处理。

2024-04-30 21:32:14 754 1

原创 2023天梯赛题解(L1、L2,内含题面)

L1-1:编程解决一切问题题目描述编程解决一切 —— 本题非常简单,就请你直接在屏幕上输出这句话:“Problem? The Solution: Programming.”。输入格式:本题没有输入。输出格式:在一行中输出 Problem? The Solution: Programming.。题解简单的输出程序,不过多赘述。#include<bits/stdc++.h>using namespace std;using ll = long long;const int N

2024-04-28 15:22:49 836

原创 算法学习笔记(最短路——Floyd)

Floyd−Warshall算法,简称Floyd算法On3Floyd算法的原理:从小图扩张到全图。很容易看出这是动态规划的思想,定义dpkij:以点k为中继点(如果有更优则不做中继点)的点对ij间的最短路径。dpkijmindpk−1ijdpk−1ikdpk−1kj])因为是以k为中继点,所以以点i到点k的距离加上点k到点j与更新至现在点i到j。

2024-04-24 22:14:19 1004

原创 算法学习笔记(动态规划——完全背包)

完全背包又叫无穷背包,与01背包的差别就是每种物品能拿的数量从1个变成了无数个。01背包:https://zhuanlan.zhihu.com/p/687752469 )从例题入手:https://www.starrycoding.com/problem/47。

2024-03-27 19:18:20 905

原创 算法学习笔记(动态规划——01背包)

先来聊聊动态规划,动态规划是分治法的一种体现,把一个问题分解成若干个子集,通过当前状态,经过操作得到下一个状态,最后得到最优问题解的一种方法。其中的01背包解决的是关于选择的动态规划问题,0和1代表的是选与不选。

2024-03-19 01:44:01 886 1

原创 算法学习笔记(STL容器-priority_queue)

作为一个实用主义,此篇暂时不介绍堆的具体结构,只快速地帮助读者了解如何使用。priorityqueue:优先队列,是一种堆。priorityqueueintvectorintlessint>>qpriorityqueueintq因为优先队列默认为大根堆。对他操作时一般只在堆顶操作,因为堆顶有一个特性就是:堆顶是堆中最大的元素,也就是qtop是堆中最大的元素。priority。

2024-03-08 01:17:51 916 1

原创 算法学习笔记(二维差分)

前置:在之前一维差分的文章中,我们知道差分是前缀和的逆运算,二维差分也自然是二维前缀和的逆运算。也就是说,差分的计算公式其实与用前缀和求区间长度为1的区间和的计算公式其实是一样的。prer−prel−1prer−prer−1ardiffiai−ai−1两者确实是一样的。那么根据差分是前缀和逆运算的性质,我们就可以根据二维前缀和求矩阵内元素和的计算公式倒推出二维差分的计算公式:prex2y2−prex2y1−。

2024-03-07 01:44:02 1969

原创 算法学习笔记(二维前缀和)

有点懒了,麻烦各位读者配合以下链接食用。

2024-03-05 23:20:26 372 1

原创 【题解】starrycoding P103 区间之最

有点懒了,麻烦各位读者配合以下链接食用。

2024-03-05 23:19:42 393 1

原创 算法学习笔记(st表)

有点懒了,麻烦各位读者配合以下链接食用。

2024-03-05 23:17:14 660 1

原创 算法学习笔记(差分)

有点懒了,麻烦各位读者配合以下链接食用https://zhuanlan.zhihu.com/p/685151795

2024-03-04 13:46:58 315 1

原创 算法学习笔记(前缀和)

算法学习笔记(前缀和) - Piper的文章 - 知乎。

2024-03-04 13:45:03 351 1

原创 算法学习笔记(并查集)

并查集是一种比较高级的数据结构,它可以快速查询两个节点是否联通,所以在处理一些联通问题时很好用。当然并查集作为一种数据结构,运用不止在联通问题上。这里我就不细细展开了。并查集是一个树形的结构。每个节点都有一个父亲节点,我们通过查看两个节点的根节点是否相同来判断这两个节点是否处在同一个联通块之中。

2024-02-03 01:58:12 868 1

原创 算法学习笔记——dfs与bfs

时间复杂度:都是O(m),m为图中的边的数量。空间复杂度:都是O(n), n为点的数量。一些有趣的性质:dfs因为是递归来实现,运用递归的性质可以实现回溯。经典例题:N皇后问题。力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台回溯法的大致思路:添加图片注释,不超过 140 字(可选)而bfs,从运行的情况来讲,因为是一层一层往下访问,所以可以找到在最上边的叶子节点,也就是说bfs能查找最短路径,具体就不详细赘述了,感兴趣可以自行了解一下。

2024-01-26 18:16:07 894 1

原创 23.10.12 div3 CF 总结

但是赛后又发现了这么一个神奇的解法,就是不从这个点出发,直接优化循环次数也是OK的,这个时候就要注意一下数据的大小了,因为字符串长度最多是25,而从a的长度是1,b长度是25的这种最坏情况考虑,就不难发现其实只要循环5次,就一定能满足上面提到的调节,从而找到答案。例如,他可以将长度为 55 的细丝切割为长度为 2 和 3 的细丝,但不能将其切割为长度为 2.5 和 2.5 的细丝,或者长度为 0 和 5 的细丝。因为当最后结果为-1且b的长度很大的时候,循环次数会多,查找运行的时间也会多。

2023-10-13 18:58:05 272 2

原创 23.10.9 CF div.2 总结

从n/3、n%3出发,分情况讨论n % 3 == 1、n % 3 == 2等等情况,具体数值的话从n / 3 - 1、n / 3、n / 3 + 1出发,经加减得到答案,但是,这种思路的可行性肉眼可见的低,很麻烦而且极其容易漏算某些情况。如果您的答案的绝对或相对误差不超过 1e−6,则将被视为正确 — 正式来说,如果您的答案为 a,而陪审团的答案为 b,则如果为 |a−b| / max(1,b)≤1e−6,您的答案将被接受。值得庆幸的是,有两个灯笼,位于点 A=(Ax,Ay) 和 B=(Bx,By)。

2023-10-10 09:33:11 294 3

原创 23.9.26 CF div3总结

每个测试用例的唯一行包含三个整数 n、k 和 x(1≤n≤2⋅1e5、1≤k≤n、1≤x≤4⋅1e10)——他可以选择的最大元素、他可以选择的元素数量以及他必须达到的总和。每个测试用例的第一行包含两个整数 n 和 k (1≤n≤100, 1≤k≤100) - 数组中元素的数量以及必须是最常见的元素。测试用例的描述如下。请注意,大小为 n 的严格递增数组 a是一个数组,其中每个 i (1≤i≤n−1) 为 ai<ai+1。每个测试用例的第一行包含一个整数 n (3≤n≤2⋅1e5) - 数组中的元素数量。

2023-09-27 15:21:19 243 1

原创 23.9.24 CF div2总结

找出所有运动员中力量大于波利卡普的运动员,然后一一与波利卡普的耐力值进行比较,如果有大于波利卡普耐力值的运动员存在,那么结果一定是-1,如果没有,那么波利卡普的力量值就是答案之一,直接输出波利卡普的力量值就好。1≤ei≤100)--第i个运动员的力量和耐力。按照这个思路,我创建了三个数组,一个存放所有运动员力量值,一个存放耐力值,还有一个存放所有运动员中力量大于波利卡普的运动员所对应的下标。例如,n=3、a=[1, 4, 1]和b=[3, 2, 2],可以在(1,1),(2,3),(3,1)中放置筹码。

2023-09-25 15:01:35 154 1

原创 蓝桥杯新人赛4赛后有感

本人2023届新生,有一点python的编程基础,暑假也自学了c和c++,开始了解算法竞赛,也在努力朝着acm奔跑,但是说实话不是很清楚自己目前的水平,就尝试打了打萌新赛。呃虽然本地dev上能正确运行,但是放到判题那边提交的时候总是过不了,然后就是一直改啊,第一反应是去掉输出中每一行最后面的空格,发现还是错了,第一次参加比赛嘛有点急,甚至把优化输入输出流的代码给删掉,把万能头文件也改掉了。T4:N首乐曲,每首都有一个特定频率Ai,一些乐曲频率都能被一个特定整数k整除,把k能整除的乐曲数量叫做音谐度。

2023-09-22 07:37:23 328 3

空空如也

空空如也

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

TA关注的人

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