自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 算法笔记————ST表

第一个图是预处理,时间复杂度nlogn,第二个图是查询,复杂度是O(1)遇上大数据的离线处理就只能用ST表。运用了倍增思想,从小到大处理。的图解释的比较详细,这里引用。

2024-04-06 00:07:31 491 1

原创 逆序对————权值线段树+离散化写法

今天写道这么一道题,鉴于不太熟悉归并和树状数组,还是用线段树水一下(

2024-04-02 21:38:22 295

原创 拓扑排序(习题笔记 思路整理)之一

这道题比上一道题要简单不少,与第一题思路相同,但这一题的想法就是维护一个max就好了,我其实没有太看懂提,但是这么操作不管有几个起始点,都可以获得最大的值(看来自各个方向哪个大就选哪个方向)3.由于指定了起始位置,还会存留一下入度为0的值,对后面的数字造成不良影响,对此,我们可以把这些先一步捞出来处理一下就好,见代码。这里使用拓扑排序的原因,我总结为:每一个的结局时间都是不确定的,要先确定前面的才能确定后面的,这个过程就是一个拓扑序。这道题比较板子,在操作的时候,如果pop就ans--即可,有几个坑点。

2024-04-02 01:50:21 765

原创 (思维题)堆————P1631 序列合并

这道题之所以能快速AC的原因是做过一道类似的题目,那道题的标签是对顶堆,这里其实大概也是同样的思路。然后对每一行,只要小于就入列,大于就break掉,如此一来,时间复杂度是nlogn。我们可以考虑开两个数组,我的思路是先将第一排全部入列,开一个优先队列。这道题其实有隐晦的提示,(已经进行了排序,单调不降,减少了思维量)

2024-03-31 20:16:01 490

原创 算法日记————对顶堆(4道题)

对顶堆的作用主要在于动态维护第k大的数字,考虑使用两个优先队列,一个大9999999999根堆一个小根堆,小根堆维护大于等于第k大的数字的数,它的堆顶就是堆内最小,第k大的数字,另外一个大根堆维护小于等于k的数字,堆顶是最大的,如此一来,就可以以排序的方式进行数字交换了。这里其实无需维护那个小根堆,直接维护大根堆即可,因为小根堆的作用是处理那个变化的m,这里的m是不变的。这道题反其行之,维护的是第k小,实际上是一样的,我们稍微想想就能发现,第k小的数字不就是大根堆的堆顶吗,稍微改一下代码就行。

2024-03-28 21:24:26 414

原创 约数个数(个人用)

【代码】约数个数(个人用)

2024-03-22 12:53:24 100

原创 线段树+暴力区修 P4145 上帝造题的七分钟 2 / 花神游历各国

这道题着实想了好久,本来想的是用数学方法找规律,结果写了好久,发现想假了,于是只好看思路,暴力区修!原因是被开根号一定次数就会变成1,是有限的,所以可以暴力区间修改,但是要优化一下,这里直接贴代码。

2024-03-22 01:50:24 462

原创 P4344 [SHOI2015] 脑洞治疗仪 线段树+二分

【代码】P4344 [SHOI2015] 脑洞治疗仪 线段树+二分。

2024-03-21 22:53:19 642

原创 P1937/P1607 线段树+贪心

第二道题思路差不多,要注意维护的区间右端减一就好,题解多是使用维护最大值的区间来计算,这里我用一个小二分+维护最小值也能做,贴一个维护最小值的代码。这两道题都是写完第一道题,用第一题的思路转化一下,第二题也能解决,所以放在一起整理。总而言之,实现代码难度不大,重在思维,好像不用线段树也能做话说(,数据有点水。在这里我就不再证明贪心了,只是直接的取最靠左的位置,这样是最优的(

2024-03-20 16:35:31 310

原创 P1712 [NOI2016] 区间 线段树+双指针

为什么最后直接返回tr[1].cnt?因为是最大重合数,如果多次重叠,相当于+1,不同区间pushup得到最大的重叠数,用懒标记(区间重叠数的统计)因为排序完后用双指针(尺取法)操作,距离近的已经是答案,排序顺序对答案没有影响。为什么双指针中右边的减左边的一定是同种?因为一直维护的大小是3,变动了就一定是最左和最优的原因。因为数据范围过大,但是数据量小。一道非常规的线段树,重在思想。

2024-03-18 18:58:04 393

原创 P2572 [SCOI2010] 序列操作 线段树维护连续子段和(01串)

4.用b,rb,lb,mb分别记录 区间中1个数 区间左边1连续个数 区间右边1连续个数 最大连续个数。考虑用tag来维护懒标记,tag=-1时没有操作,tag=0使执行0行为,1同样。维护的更多,可以说,在维护连续的1,实质上就是维护最大连续子段和。用rev记录是否反转(reverse简写)浅调两个钟,终于A掉了,还是不熟练啊。要进行如上的五种操作,我们考虑建立。len来记录区间长度(优化)。

2024-03-15 00:42:41 608

原创 单调队列 维护区间最值(板子+两道练手)

1.P1886 滑动窗口 /【模板】单调队列1.P1886 滑动窗口 /【模板】单调队列。

2024-03-14 01:25:06 777

原创 P4513 小白逛公园 习题笔记(线段树维护区间最大连续子段和)

区间和,最大左子段和,最大右子段和,与区间最大连续子段和(是不是感觉很眼熟呢),在我的印象中,吉司机线段树(用min直接维护区间)与这题思路相类似。这道题着实想了很长时间(新手),只能想到一个O(mn)的dp普通写法,那么遇上区间修改问题改怎么操作呢。答案很明显,线段树!这里的query还用了一种新的方式来维护。这道题的线段树主要维护四个信息。下面直接贴代码(见注释)

2024-03-13 01:33:21 592

原创 P6327 区间加区间 sin 和 (线段树+数学)

比较板子的一题,主要考啥公式。

2024-03-12 13:18:59 360

原创 P2184 贪婪大陆(习题笔记)

这道题一开始写的时候完全没想到解法。没有结合其他算法,算是一个思维题,运用了类差分思想和前缀和思想的处理方式。这道题的核心在于区间修改。但是我们发现没办法操控修改完之后怎么表示(不能用和的形式)这道题对3-5查询 实际上就是查询1-5的起点减去1-2的终点(前缀和思想)起点说明有这一段(因为只有端点,所以不会覆盖),终点说明没有这一段。我的印象中,这道题很经典(以前好像也见过但是没解出来),浅浅记下。更实质的说,这里是让1-5所有存在的线段减去在3之前就结束的。这样一来,局势就瞬间明了了。

2024-03-12 00:55:30 361

原创 线段树+差分 P1438 无聊的数列

这道题要求维护一个等差数列的区间加,我们可以将等差数列的问题转化成差分的问题(因为等差数列每次维护的复杂度使O(n) ,但是如果用差分就只用O(1)就可以解决。想好思路,维护并不难(就是板子随便套点东西)我写的时候没想到(差分题练少了)也就是只维护三个位置。

2024-03-11 00:27:24 394

原创 数学定理整理(小结论)

Cn1+Cn2+Cn3+……+Cnn=2的n次方-1。

2024-03-08 13:18:10 384

原创 [数据结构/并查集] 一篇文章带你通关并查集(题单)

这篇文章的所有题目均来自于自行整理,代码均来自于自行梳理调试(初衷在于整理练习思路,且起到督促自己学习的作用。

2024-03-07 22:25:00 2749 1

原创 线性dp P4310-绝世好题/P4933 大师【日记】

这道题我想了好一会儿,想到用创建一个f[1000][40000]大小的数组用来存每一个位置的差,这样一来,用一个n方复杂度的算法就可以全部遍历一遍。这种想法在我看到数据后戛然而止,于是直到最后我都没有再出现其他的思路。但是没有想到,f[1000][40000]占用内存并不多。一开始看错题,以为是求子串(还在想为啥考的纯位运算+枚举,比较考验思维的一道题目,码量和理解难度都不大,重在思维。后面发现是求子序列,犯难,只能想到n方的方法。写题的时候学习了一下空间大小的计算方式。多模拟模拟,该题还是有思维难度的。

2024-03-06 16:48:15 589

原创 线性dp 最长公共子序列(二分版本)

本题由于1e5的数据,n方的做法不再适用,但是简单的一维并不能满足动态转移。这时,我们就可以考虑引入最长上升子序列来处理。求公共子序列,我们可以发现上面的序列是递增的。实际上,我们只是在下面找一个最长上升子序列(上面已经递增了)

2024-03-05 18:09:57 407

原创 线性dp P1004 【方格取数】二维误区/四维正解/三维优化

在这个dp公式中,如果i不动,k-1,那么其实就是行数-1,否则就是列数-1,巧妙的表现了两种情况。例如这组数据,用上面的代码跑一下就会发现,不使用贪心(每次都取最大)的方法能获得更多的价值,于是,我们可以考虑使用一个四维dp来同时维护两次操作。我的最初思路是两次二维dp,即贪心的取,用pre记录前一个位置,只有80pts,要是是在蓝桥拿分就可以跑路了(bushi)这里的四维也比较好理解,其实就是枚举了两种路线分别经过每一个点的状态,并且放在一起考虑(相等要减掉val[i][j])

2024-03-05 00:28:32 728

原创 线性dp:P2679 子串

这道题我最初的疑惑点在于究竟是定住a串找b串,还是定住b串找a串。我在一开始的想法是定住b串找a串,因为这道题我们想要用a串中的子串来匹配b串。但是后来我发现这不可行,因为a串只能按照顺序来找,如果定住b串,就不能保证后面补充的是从前面来的了,如此一来并不好操作(子串间连接顺序不同)。这里还用到了一个优化,把第一维a串的遍历省掉了,因为每一次只与前一个位置的有关。这道题是公共子串问题的变种,但是我第一时间确实没想到转移方程(写少了)下面直接用代码来解释(有注释)

2024-03-03 01:58:43 468

原创 十进制转n进制

假设一个十进制数字为k。

2024-02-28 19:55:48 561

原创 区间dp-环形石子合并

这里需要注意(不只是因为环形)

2024-02-22 01:11:47 415

原创 导弹拦截--最长子序列问题(nlogn做法)

第二遍写这道题,写写新的体会,对于最长子序列问题虽然说可以用dp解决,但是这是n方的做法,同时,存在nlogn的更优的做法(更像是贪心一类的),可以自己想想。

2024-02-21 01:18:40 461

原创 最大公约数的应用,位运算 921 C思路整理

想了一小时没想到,究其原因是对公约数,分数的性质不熟悉,直接贴代码。

2024-02-21 00:22:09 500

原创 双向bfs P1032 字串变换

找一个最短方案,考虑用bfs(没试过单向,但是系数很大)

2024-02-19 01:10:50 457

原创 P1219 八皇后 (dfs 表格坐标关系)

一个正常的dfs(数据范围1-13),发现一条对角线上,分别符合和与差相等。因为有负数,这里我最开始开的是map,发现卡了最后一个点TLE,记录一下时间复杂度(

2024-02-16 23:02:51 359 1

原创 P1649 Obstacle Course S(dfs卡方向数组/bfs)

开始拿到题,发现数据范围是100,于是我尝试用dfs一做,写完后发现是90分,TLE一个点。于是乎观看题解(我还以为能剪枝掉),发现改一下遍历方向就能过了(我认为是数据不好)如图所以,将A拓展到的加入队列,然后将某一个作为队头继续扩展(注意 被访问过就不处理 接着拓展)该图片摘自洛谷 GNAQ的博客。

2024-02-16 18:05:26 483 1

原创 tuple的使用例题(三元组)

【代码】tuple的使用例题(三元组)

2024-02-15 20:54:54 838 1

原创 P5194 Scales S——dfs(前缀和剪枝)

手切第一遍,没想到可以用前缀和剪枝,并且是从小到大搜了,不出意外40分TLE+WA。

2024-02-15 01:01:54 663 1

原创 欧拉筛板子

造数组时间复杂度:O(n)

2024-02-13 21:06:12 364 1

原创 P5440 【XR-2】奇迹 (大模拟dfs+欧拉筛板子+闰年)

思路历程:很离谱的一题,在理论上并不困难,只要简单dfs+欧拉筛就能过。在一开始,我采用了倒着模拟的思路,用stoi函数,强转字符串,发现样例能跑,但是仍旧RE(现在仍未理解这样的原因),于是,我选择了另一种做法,反过来遍历。

2024-02-13 20:14:05 638 1

原创 P1506 拯救oibh总部---洪水填充问题(bfs解)

【代码】P1506 拯救oibh总部---洪水填充问题(bfs解)

2024-02-13 14:20:55 761 1

原创 bfs入门(颜色覆盖)-----P1162 填涂颜色

题目大意是给一个n*n的矩阵,矩阵中有1和0两种数字,现在要求将被1框起来的0全部变成2并输出(注意0不能贴边界)

2024-02-12 20:10:48 628 1

原创 dfs-字符串习题(P1019 单词接龙)

一道远古的NOIP,数据较水,直接上代码。

2024-02-12 00:22:17 580 1

原创 拼接数字后求36的倍数--习题笔记(数学)

将两个数字以字符串的形式进行拼接 18 18 ------1818,求36的倍数有多少(不能自己拼自己)大致题意:给一列数字,

2024-02-11 20:45:09 707 1

原创 线段树--P2471 [SCOI2007] 降雨量 习题日记

习题思路:一道题,看着夸张实则不难,一般用线段树或者ST表来解决(本道题并不用修改,大大减少难度和代码量),最开始我想的是设置一个mx和se分别表示最大和次大值,写了一个多钟,发现写假了,无奈看题解,没想到就只要模拟分类讨论一下就完事了,大雾。

2024-02-06 22:09:49 370 1

原创 线段树简单使用 P4588 数学计算 总结

于是,运用一点思维,我们发现可以把一个区间全设成1(大小就是查询次数),每一次修改就修改那个点,第二种除法就将那个点化成1,这样维护一个区间,区间根节点的值就是答案。一开始确实没想到能切换成线段树,毕竟它一无区间二无线段,我第一眼看到题以为是一个大大大模拟,但是这里不能用逆元(并不互质)

2024-02-05 22:49:21 441 1

原创 博弈论(整理中)

博弈论文章整理自上方两文。

2024-02-04 00:50:25 319

空空如也

空空如也

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

TA关注的人

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