![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
要用bug来打败bug
这个作者很懒,什么都没留下…
展开
-
树上启发式合并入门-Lomsat gelral
简述:树上启发式合并又叫 dsu on tree ,是解决可以离线的子树问题的一种方法。优点:时间复杂度优秀O(nlogn)O(n logn)O(nlogn),在一些可以使用 dfs 序 + 莫队 算法O(nn)O(n\sqrt{n})O(nn)的题目中有很强的优越性,相比线段树码量要小的多。...原创 2022-05-17 10:07:17 · 292 阅读 · 0 评论 -
E. Martian Strings (kmp)
原题链接思路:和普通的匹配问题稍有不同的是本题匹配到的字符串在母串上可以不相连,但也不能相交。主体思路不难想,考虑记录字符串的所有前缀匹配到的最小位置,记录字符串的所有后缀匹配到的最大位置,只要不相交就可以了,在实现时可以不这么麻烦,直接记录当前缀匹配的最大长度,当前后缀匹配的最大长度,只要合大于等于匹配串的长度就可以了。注意特判长度为1的字符串不满足题意。代码是KMPCode:#include <iostream>#include <map>#in原创 2022-05-09 10:41:09 · 97 阅读 · 0 评论 -
F. Xor-Paths(折半搜索)
题目链接思路:矩形最大是20乘20,不算太大,但爆搜会T!其实这是折半搜索的板题,可以发现我们的搜索树是深度越深情况越多,每次都要乘二。很多搜索树是到不了终点的,起点和终点我们是知道的,如果对起点和终点各搜索一半的深度,在相遇点记录答案,问题就解决了。可以发现这样时间复杂度最多会少半个幂次!Code:#include <iostream>#include <map>#include <set>#include <queue>原创 2022-04-14 15:19:39 · 156 阅读 · 1 评论 -
华华开始学信息学(分块思想+树状数组)
题目链接思路:区间一个数的倍数的个数,我们可以 O(1)算出的,问题在于要找的倍数有很多,考虑分块思想,把修改操作分为两类。大于 sqrt(n) :直接在树状数组中暴力 add小于 sqrt(n) :先记录下来,在每次查询操作时暴力计算时间复杂度:一次查询约是 O(sqrt(n))Code:#include <iostream>#include <map>#include <set>#include <queu...原创 2022-04-06 10:19:20 · 250 阅读 · 0 评论 -
数星星 Stars(思维+树状数组)
题目链接写在前面:题目卡内存,离散化+二维树状数组 爆内存。思路:观察到一个点的左下部分,x和y一定是小于等于这个点的。题目数据已经排序了,按 y 单调递增的顺序每次查询比当前比 x 小的点的个数就是左下部分的个数 ,再add(x) 即可。Code#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#i.原创 2022-04-04 17:13:15 · 321 阅读 · 0 评论 -
Caesar Cipher(线段树维护哈希)
https://codeforces.com/gym/102798/problem/G解题思路:1.和普通线段树维护哈希不同的是,这里要求原数组对一个数模mod,观察发现区间一次只加1,线段树记录区间最大值,在查询时如果区间的最大值大于等于mod,重建这部分线段树。2.其他部分和普通的线段树维护哈希就一样了,建议写双哈希,以免被卡。Code:#include <iostream>#include <map>#include <set>#incl原创 2022-04-02 21:56:05 · 636 阅读 · 0 评论 -
[HEOI2012]采花 (离线树状数组)
原题链接思路:本质是求区间数量大于1的数的个数,考虑一个 next 数组记录相同数最近的下一个位置(经典套路)查询区间离线后 l 从小到大排序,要删掉 l 上的数 如果下一个数存在就要减去下一个数的贡献,如果下下一个数存在就要加上下下一个数的贡献,实现用树状数组,具体看代码一些注意点:数组位置建议从1开始,如果从0开始,树状数组遇到0要特判这个问题是不满足区间相减相加的,很多文章在查询答案时把ans=query(q[i].r);写成了ans=query(q[i].r)-q原创 2022-03-23 17:01:50 · 119 阅读 · 0 评论 -
牛客挑战赛58C1(二分+贪心)
原题链接解题思路:一条线段可以站多个人,容易想到是二分+贪心贪心思路不太好想,线段可以相互转移故放在一起考虑,尽量要 1 中的线段大,按照 b 的大小升序排序(这样他前面的最大值一定可以转移到他自身,线段相交问题),尽量要 2 中的线段小,2 中线段记录当前时刻排序判断即可参考代码:#include <iostream>#include <map>#include <set>#include <queue>#include &原创 2022-03-21 10:21:42 · 228 阅读 · 0 评论 -
D. Sea Battle(贪心)
原题链接刚开始写的时候把连续的0块单独考虑了,实际上要放在一起考虑思路:找到连续0且等于b的个数num,只能放a个,故最差情况下num-a+1个就一定可以代码:#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include <algorithm>#include <vector>原创 2022-03-16 20:22:00 · 94 阅读 · 0 评论 -
可达性(tarjan)
原题链接:https://ac.nowcoder.com/acm/contest/22353/M思路1:kao原创 2022-03-12 10:16:11 · 511 阅读 · 0 评论 -
最大化平均值(二分)
小咪买东西思路:求最大平均值的板题考虑二分答案+贪心思想 把每个分母减去答案和分子的积再从大到小排序参考代码:#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include <algorithm>#include <vector>#include <string>#原创 2022-03-09 21:25:43 · 67 阅读 · 0 评论 -
[HEOI2014]南园满地堆轻絮
原题链接思路一 (二分+贪心):二分答案 ans 每个数就变成一个区间 a[i]-ans,a[i]+ans ,问题转化为 判断n个区间各任选一点是否可以形成一个非严格递增的序列 ,解决这个问题贪心即可 。 具体看代码参考代码:#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include <algorit原创 2022-03-09 15:53:27 · 96 阅读 · 0 评论 -
神奇盘子(圆上暴力)
原题链接题目大意:给定圆内的两点(x1,y1),(x2,y2) , 求两点的最短距离,特别的在圆的某个直径的一端的时候,可以瞬间传送至直径的另一端思路:题目要求误差在1e-6之间,考虑枚举角度 ,时间复杂度是O(n) 。具体看代码参考代码#include <iostream>#include <map>#include <set>#include <queue>#include <stack>#include原创 2022-03-09 10:24:46 · 114 阅读 · 0 评论 -
POJ-3154
原题链接:Graveyard题目大意:原本n个墓碑均匀分布在一个周长为10000的圆周上,现在加入m个,如果要使得n+m个墓碑都均匀分布的话,那么原来的墓碑最少的移动总距离是多少解题思路:原书上讲的很好,因为加入m个之后m+n个墓碑的位置是固定的,要使移动距离最少可以设一个点不动,使每个点尽量少移动就行。标准代码:#include <iostream>#include <cstdio>#include <algorithm>#include原创 2021-11-17 15:29:28 · 86 阅读 · 0 评论 -
codeforces-1538-f(思维)
写在前面:参考博客:live4m很有意思的一个题。---------------------------------------------------------------------------------------------------------------------------------原题链接:F. Interesting Function题目大意:给你两个整数l和r,其中l<r。我们将在l上加1,直到结果等于r为止。对于每一个这样的加法,让我们看看在原创 2021-08-15 17:28:13 · 162 阅读 · 0 评论 -
Running Median(动态中位数)
原题链接牛客原题链接acwingacwing 的数据量要比牛客少好多可以先写acwing的,牛客的还卡空间。。。。原题目:解题思路:要求在输入每一个奇数个数时输出中位数,由于是奇数位,中位数的左右个数相同,我们可以用两个优先队列分别记录中位数的左边和右边的数。可以假设小根堆的队头(左边最大)是中位数,在偶数位的时候,维护以小根堆的队头为中位数时的左右区间(暂不维护左右区间数的个数差),在奇数位的时候,维护左区间的size-右区间的size=1(左区间的最大值是中位数)。AC.原创 2021-08-01 09:34:32 · 182 阅读 · 0 评论 -
Sunscreen(算法竞赛进阶指南-贪心+优先队列)
原题链接:Sunscreen题目大意:题目本身不好理解,大致题意是:有C头牛L瓶防晒霜,每一头牛有一个区间,一头牛可以涂一瓶防晒霜,如果可以涂在这头牛的区间内,是好的.(一瓶防晒可以涂多个牛),答案尽可能大.主要思路:万能的排序。。。。牛:按照牛的左区间从小到大排序,如果左区间一样则按照右区间从小到大排序防晒霜:按照防晒值按照从小到大排序优先队列:定义从小到大排好后按顺序遍历每一个防晒霜,和牛,如果当前防晒霜的值小于牛的左端点(说明可能是答案),将牛的右端点放入队列(将.原创 2021-07-31 08:52:04 · 254 阅读 · 0 评论 -
谜一样的牛(AcWing-244)
写在前面:参考大佬博客Initialize.题目大意:有nn头奶牛,已知它们的身高为1∼n1∼n且各不相同,但不知道每头奶牛的具体身高。现在这nn头奶牛站成一列,已知第ii头牛前面有AiAi头牛比它低,求每头奶牛的身高。输入格式第11行:输入整数nn。第2..n2..n行:每行输入一个整数AiAi,第ii行表示第ii头牛前面有AiAi头牛比它低。(注意:因为第11头牛前面没有牛,所以并没有将它列出)输出格式输出包含nn行,...原创 2021-07-16 14:52:04 · 151 阅读 · 0 评论