自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 洛谷模拟赛题解

首先我们可以想到一个很显然的方法,就是暴力去枚举你要执行操作1 的位置,对于在区间里的位置,我们对他进行操作3,然后不在的我们把1都进行操作2,这就是20pts。枚举操作1的右端点是非常浪费的,因为我们可以用一个很简单的递推来求出每个。显然,这个很丑陋的代码还能继续优化,我们发现每次用。但是,时间复杂度还是不够优秀,我们很容易转换到。为把序列全为0变为满足题意的最小答案。全为1改变到满足题意的最小答案。的最小代价,这就是一个小优化。我们有两种转移的方法,分别是。全变为0,然后再进行更改,

2023-10-15 21:56:19 111

原创 P4231 三步必杀

最近复习差分发现了一个差分解决区间加等差数列的骚操作。的一个等差数列时,一维差分和二维差分数组的影响。所以说这个二维差分数组被影响的只有。四个位置,最后两次前缀和就完活了。看下面这个表格,我们在。可以看一下这位dalao的。这个区间加上一个首项是。

2023-10-03 12:39:19 52

原创 [AGC010E] Rearranging

高桥君想让序列在青木君打乱后是字典序最小的。好,这个时候,我抛出一个性质:因为青木君每次只能交换相邻的两个互质的数,那也就是说高桥君先手把不互质的数排好后,它们的相对位置是不会改变的(因为青木君动不了它们),所以我们一开始把不互质建立双向边(就是标记一下),然后把序列从小到大排序,这样就完美解决了小连大的任务~好我们现在满足了高桥君的需求,接下来满足青木君的。青木君的话,也就是求这个。的一个最大拓扑序,魔改一下topsort,用优先队列来维护即可。字典序最小,而后手青木君希望字典序尽量大,求最终序列。

2023-10-03 10:16:06 44

原创 [ABC254Ex] Multiply or Divide by 2

求最少需要多少次才能使。本题中有两个操作,分别是①。纪念我人生中的第一发紫题!一个下位紫,代码极短。

2023-10-02 22:04:47 40

原创 P4551 最长异或路径

一个很费脑子的性质:两个点的异或最长路=两个点分别到根节点异或值的异或值,因为在0-1trie这两个点LCA除外的路径是重复的,一个数异或自己为0。所以思路就是把输入的点用dfs求一遍到根节点的异或值,然后建立0-1trie 后找最大值。

2023-10-02 20:30:48 23 1

原创 P6812 「MCOI-02」Ancestor 先辈

这个题大力线段树,但是可以偷鸡,就是如果一个序列是先辈的话,那它是严格不下降序列的,那这个放到差分,这个段区间的差分数组都必须大于等于0,否则不是先辈。然后这个区间加法就可以转化为单点修改,也就是修改。,此时就真是大力出奇迹了。

2023-10-02 11:50:56 25 1

原创 P1083 [NOIP2012 提高组] 借教室

提供两种简单易懂的方法。

2023-10-02 10:56:29 34 1

原创 P6503 [COCI2010-2011#3] DIFERENCIJA

(当前这一位)的第一个位置,那可以得到状态转移。这个题比较喜欢榜一的做法,既简单常数又小(

2023-10-01 08:26:46 27

原创 Progressions Covering

数组来存储当前位置需要多少个k来消耗,然后往前转移的时候,比如说前进了一位,那么它的消耗就比它的后一位-k(通过变量来实现)首先这个题你从右往左开始贪心是最优的,因为在把最后数给操作完时前面的数也被多少消耗了亿点,所以这个题的思路就出来了。

2023-09-30 19:37:36 26

原创 P1002过河卒

(前dp[j]为step2中的第2行,而后边的dp[j]就是第一行了,因为我们顺序枚举,所以dp[j-1]已经转移好了,所以直接用无大碍)题目是非常简单的,类似数字三角形一样,遇见马的时候dp数组就清零就行,然后就dp出来的,解这篇博客就是督促自己提升一下自己的滚动数组。考虑滚动优化,最好想的就是dp数组开两行,既然直接消维不太好想,那直接存上一状态,然后dp就行。你想你一共都能开两行了,那肯定能开一行,状态自然而然的变成了。

2023-08-30 14:46:32 38 1

原创 洛谷P1967 货车运输

但是我觉得对我这种蒟蒻很不友好,就是他的细节很多(OZT),现在公开处刑一下我自己。思路很简单就是求一个最大生成树,然后用倍增LCA维护路径最小值,属于那种一眼题。额自己用的kruskal+倍增LCA,AC后看大佬都是用的什么LCT。、树链剖分这些我这个蒟蒻不会的算法。

2023-08-24 16:24:29 43 1

原创 洛谷P1714切蛋糕

最初的时候别忘了把0压进队列,因为有这样的hack数据5 2 1 -10 -10 -10 -10 -10。这个题现在是个对我来说是个橙题了 但是我自己写卡住的原因是维护最大值有点懵 这也体现出了我对单调队列理解的匮乏。既然单调队列维护的是你当前区间的最小值,那直接用区间的右端点减去最小值维护最大值就行了。这不就是让我们维护m为区间长度上限的最小值吗?感觉对单调队列的理解已经是小学生水准了%%%这个题呢是要求最大不定长子序列。kkk的题解启发了我。

2023-08-23 11:54:22 29

原创 排序算法梳理

这个排序但凡有点生活经历的人都会,因为你打扑克(假设只有你一个人摸牌)的时候就是从待排的扑克堆里拿出一张,然后在从你手里的牌中找个合适的位置插入,复杂度。的顺序排序(只能按照这个顺序,因为如果按照最高位排序的话后面会出问题的),它的时间复杂度取决于你所选择的k。就是跟分块一样,按值域分成若干个桶,然后进行排序(桶内插排,因为范围小)):在这个算法执行的过程中,较小的元素会像是气泡慢慢地浮出水面。非常之easy,因为涉及swap这个操作,这个排序不稳定。因为这份代码基于插排,所以是稳定的。

2023-08-22 16:56:30 35 1

原创 Tarjan算法学习笔记

连通图的极大连通子图就是他自己,非连通图有多个极大连通子图(说傻话就是分拨,连着的分一拨,每拨都是极大连通子图)(极大:能包含的边都包含进去了e)在有向图G中,如果两个顶点u,v间有一条从u到v的有向路径,同时还有一条从v到u的有向路径,则称两个顶点强连通。,从图中删去节点x以及与x关联的边之后,G分裂成两个或两个以上不相连的子图,则称x为。一般无向图(不一定连通) 的“割点”和“桥”就是它的各个连通块的“割点”和“桥”,从图中删去边e之后,G分裂成两个不相连的子图,则称e为G的桥或割边。

2023-08-21 18:07:26 48 1

原创 分层图学习随笔

一般来说,分层图完全可以用魔改dij做(不知道是我太狭隘了),反正我在没学分层图之前,分层图的套路题都是用二维dij类似dp写的,但是觉得分层图很有意思,就学了一下放道例题(个人觉得分层图是个套路,直接看题分析学习即可)初来乍到,像我这样的蒟蒻直接开题(jie ,然后发现自己理解也不理解(大雾再看了几遍,我觉得分层图可以总结为一句话(针对此题):把一个点强行拆分为k个,原图层代表使用0次升级路的机会,其他的图分别表示使用了1次、2次…k次升级路的机会。

2023-08-20 16:20:40 107 1

原创 并查集详解(点权、边权、种类)

若某个家族人员过于庞大,要判断两个是否是亲戚,确实很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。规定:x 和 y 是亲戚,y 和 z 是亲戚,那么 x 和 z 也是亲戚。如果 x,y 是亲戚,那么 x 的亲戚都是 y 的亲戚,y 的亲戚也都是 x 的亲戚。第一行:三个整数 n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有 n 个人,m 个亲戚关系,询问 p 对亲戚关系。以下 m 行:每行两个数 Mi,Mj,1<=Mi,Mj<=N,

2023-07-18 17:16:54 218

原创 最短路问题详解

因为每一轮都会选择距离1最近的点来更新距离,然后dis[2]就光荣的变成了2并被打上了标记,实际上到dis[2]的距离是-4,这就是为什么dijkstra解决不了负权图的原因。(由抽屉原理,在 n 个点的条件下,从 1 到 y 至少经过 n 条边时,则说明该路径中至少有 n +1 个点,那么一定有点是重复使用的。对任意一条边 u->v,只有 d[u]值改变时,v 的 d[v]值才有可能被改变,所以用一个queue把值改变的点存起来,就万事大吉了😆。进行n - 1次遍历,每次遍历对所有边进行。

2023-07-16 15:14:12 48

原创 欧拉路(有/无向图的欧拉回路)

哥尼斯堡(Koenigsberg)七桥问题【欧拉图】区分一些概念:欧拉路径、欧拉回路、欧拉图欧拉路径:给定一个连通图,若存在一条路径,(一笔画)欧拉回路:在欧拉路径的基础上,需要欧拉图:具有的图,称为欧拉图在无向图下:(1)欧拉路径的充要条件:奇点为0个或者是2个(2)欧拉回路的充要条件:奇点为0个有向图:(1)欧拉路径的充要条件:要么所有点的出入度都相等;要么除了起点和终点外,所有点的出入度相等,起点的出度比入度多1,终点的入度比出度多1。

2023-07-15 11:02:21 686

原创 BFS的优先队列优化

使用二元组(city,fuel)表示每个状态,其中city为城市编号,fuel为邮箱中剩余的油量,使用d[city][fuel]表示最少的费用。对于第一次询问:可以选择在0号点加满油,此时花费了100元,然后走到1号点,加7单位的油,花费70元,然后走到2号点,再走到3号点,到达目的地。然后输入K行,每行表示一次询问,每次询问包含三个整数q,w,e,为一辆容量为q的车子从w到e需最少需要花费多少钱。然后输入M行,每行包含三个数字a,b,c,表示从a城市到b城市存在一条油耗为c的道路。

2023-07-14 16:19:19 91

原创 带剪枝的深搜

首先,暴搜看起来异常简单,在一看数据范围似乎确实可以 但细算一下,按上限n=7,此时一共有49个格点,每一个格子有上下左右四种选择——4。看此图,我们已经走到了点B(然后标记掉),然后点A四周就只有往左的方向没有走过,所以点A只能通过点B走过,所以称点A为点B的。往左走,右边的死胡同就进不去了,因为题目规定所有点都得遍历一遍,所以遇到这种情况就剪枝得了。看下面的图 ,走了一圈进了一个死胡同,所以我们的目标就是从死胡同上做文章,but how?根据刚才的定义,三面都被标记的点即为必经点,直接计数器++

2023-07-12 13:12:40 41

原创 对顶栈and双端队列

细想一下,光标左半边是一部分,光标右半边是一部分,这不就两个栈吗?Ask k表示光标之前的序列为 a ​1 ​​ ,a ​2 ​​ ,a ​3 ​​ …a ​k ​​ ,输出前面序列最大的子序列和。编辑器是运行在Linux命令行下的,因此只能通过指定的指令进行操作。有一个序列,共有n个数字,请你求出以每个数字开始的长度为k的区间中的最小值。输出题面描述的答案,如果i>n-k,则无法查找到最小值,不进行输出。100%的数据,Q不超过1000000,且x不超过1000。第一行一个整数N,表示有N个操作。

2023-07-11 13:06:21 61

原创 线性数据结构--单调栈

11入栈时,栈顶元素4比11小,4出栈,此时栈顶元素为7,仍比11小,栈顶元素7继续出栈,此时栈顶元素为10,仍比11小,10出栈,此时栈为空,11入栈,栈内元素为11。给定一个N,表示一个序列的长度,然后输入这个序列,输出序列每个元素的左边最近的比它小的数字,如果不存在则输出-1。7入栈时,栈顶元素3比7小,则栈顶元素出栈,此时栈顶元素为10,比7大,则7入栈,栈内元素为10,7。4入栈时,栈顶元素7比4大,则入栈,栈内元素为10,7,4。3入栈时,栈顶元素10比3大,则入栈,栈内元素为10,3。

2023-07-10 12:23:16 38

原创 快读快写模板

【代码】快读快写模板。

2023-07-09 11:16:00 43

原创 map用法详解

作为STL库中一个关联容器,它的两个关键字存在一对一的**映射关系**。内部实现自建红黑树,具有对数据**自动排序**的功能。

2023-07-09 10:53:35 151 1

空空如也

空空如也

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

TA关注的人

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