洛谷刷题记录
m0_73035684
这个作者很懒,什么都没留下…
展开
-
P5522 [yLOI2019] 棠梨煎雪
知识点:线段树,位运算,状态压缩这个题用网络用语说就是挺一眼的,只要搜索做了不少的题就能一眼看出来这个怎么做,首先这个题的线段树就是最最基本的线段树,单点修改,区间查询,然后每个位置都有一个字符串,都是登长的,区间查询问当前区间所有的字符串是不是都可能相等,以及那个可能相等的字符串的个数,这个个数就是查询要的结果,然后取异或和就行了,学了bitset之后做这种题就方便很多了,线段树除了维护区间左右端点,再维护两个bitset,没学的话应该是两个整数的,因为字符串的位数很小,那么其中一个bitset维原创 2024-05-09 14:28:44 · 71 阅读 · 0 评论 -
HDU1394 Minimum Inversion Number
看完了别人的代码瞬间想到这个东西,真的是感觉自己学傻了,啥都要套线段树了,这里思维的部分,明明是不用的。原创 2024-05-07 07:50:01 · 159 阅读 · 0 评论 -
P2161 [SHOI2009] 会场预约
然后思考一下为什么这个题可以用树状数组做,单点增加不必说,求区间和也是,关键就是那个区间置零操作,很显然这个题我们输入的点的个数最多也就是n,那么删除的点最多也就这么多,如果删除的时候我们能够具体知道要删除的是拿个,单点操作一个一个删除显然是可以的,就是不知道如果把那些需要删除的点一个一个找出来,索性用线段树的区间修改一下推平,原创 2024-05-05 22:38:55 · 260 阅读 · 0 评论 -
P2471 [SCOI2007] 降雨量
现在就学了线段树,这个题用线段树来做,发现年份其实就是类似于数组下表的作用,可以离散化,然后记录一下离散化之后对应的值,然后我们发现这个题需要分类讨论,那么中间不连续的年份,或者说输入没有给出的年份,那么一段没有给出的年份我们离散化之后至少要有一个,所以离散化的时候是当前年份加上他的减一加一来离散化,显然线段树要维护区间最值,同时再维护一下当前区间里面有几个点是降雨量未知的,这个用前缀和应该也行,但是就顺便用线段树来维护了,之后就是分类讨论了,我在演草纸上写了一下,打代码对着打的,竟然一次性过了,原创 2024-05-05 22:18:25 · 86 阅读 · 0 评论 -
P4344 [SHOI2015] 脑洞治疗仪
知识点:线段树,线段树上二分。原创 2024-05-03 09:57:42 · 46 阅读 · 0 评论 -
P1438 无聊的数列
这个题应该用树状数组也可以写,但是思维转化比线段树多一些,用线段树还是比较好的,但是这个题我还是没有一次过,这个题我的思路也很简单,维护原序列的差分序列,然后在差分序列上面进行修改,区间第一个点加上首项,区间剩下的点都加上公差,然后就是我错误的地方,那就是我前面差分序列操作之后,序列后面的第一个点没有减去前面加上的数的和,这个是我错的地方,至于为什么,我们要通过差分序列求前缀和,所以差分序列我们最后要减去一个数消除影响,这个题总的来说就是加深差分的印象和理解。知识点:线段树,差分。原创 2024-05-01 23:23:21 · 3 阅读 · 0 评论 -
P3908 数列之异或
【代码】P3908 数列之异或。原创 2024-04-24 13:18:19 · 92 阅读 · 0 评论 -
P6474 [NOI Online #2 入门组] 荆轲刺秦王
第二个问题是优化搜索顺序,这个也是看题解才学会的,一个很简单的理所应当的想法,我们这四种走路方法,先放进去的最后就会被先出队用到,而当距离比较远,数据比较大的时候,我们应该先入队瞬移这两种走路方式,这样可以更快的靠近终点,加快搜索的速度,我也是加上了这个优化才完全过了这个题。这个一眼是无权图最短路问题,是BFS大模拟题,状态很好想,当前状态向相邻状态遍历也很好想,就是普通,隐身,瞬移,隐身+瞬移4种,答案的统计也很好想,这个题难度最起码是蓝题的平均,或者蓝题中上,知识点:BFS,差分。原创 2024-02-22 17:45:03 · 186 阅读 · 0 评论 -
P1381 单词背诵
这个题算是不错的尺取法练习题,稍微比逛画展那个题难一点,就是有一个地方要想清楚,那么就是我们背文章的时候,我们要统计我们背了多少不同单词,然后不同单词数等于输入的时候我们要更新统计答案,这里需要注意的是文章里面有的但是不是我们要背的单词,也就是第二次输入有第一次输入没有给的单词,是不对我们背了多少不同单词做出贡献的,它只是影响了区间的长短,所以这里需要对它进行处理,我是用0来表示这些单词的,觉得还是比较方便的,然后就是第七个点re,这个是真的没想到的,看了看洛谷的讨论区是特判,然后这个题就过了。原创 2023-12-28 07:22:13 · 415 阅读 · 0 评论 -
P1843 奶牛晒衣服
知识点:贪心,优先队列。原创 2023-12-27 09:48:21 · 403 阅读 · 0 评论 -
P5837 [USACO19DEC]Milk Pumping G
这个题的正解应该是枚举+最短路,枚举每个边的流量,然后求起点到终点的最短路,当然小于枚举的流量的边其实就是不连通的,这样这个题就做出来了,但是一开始我写的是深搜,加了剪枝,用邻接矩阵存储,勉强过了,但是这个枚举+最短路确跑的快很多,明明复杂度也有1e7了,可能是因为实际中有很多断边的原因把,深搜的代码就不放了。知识点:枚举,最短路。原创 2023-02-02 10:54:27 · 184 阅读 · 0 评论 -
P3393 逃离僵尸岛
这个题感觉还是比较简单的,以后可能降为绿题,首先我们要来一个BFS,处理,将所有的城市分为3类,安全,危险,感染,然后求起点到终点的最短路就行了,这里用的是优先队列BFS,因为目前就学了这个求最短路的方法,一开始用的双端队列BFS,但是错了,也就是说双端队列只能求01最短路,而不是二权最短路,这个算是我对双端队列BFS理解的不透彻的地方,其它的就没什么说的地方了,算是一道水蓝了。原创 2023-02-01 15:29:34 · 68 阅读 · 0 评论 -
P1849 [USACO12MAR]Tractor S
【代码】P1849 [USACO12MAR]Tractor S。原创 2023-01-28 11:48:33 · 70 阅读 · 0 评论 -
P8088 『JROI-5』Autumn
【代码】P8088 『JROI-5』Autumn。原创 2023-01-27 10:43:05 · 53 阅读 · 0 评论 -
P1496 火烧赤壁
这个题的数据范围比较大,看起来也有点像区间贪心,但是最近在学线段树,就拿来练习离散化,用的是离散化+差分的做法,就是先离散化,如果排好序中的数组,相邻两个不同的元素不连续,那么在其中加一个元素,这样需要的空间是4倍,然后就开始用差分数组,进行区间加一,然后求前缀和,然后再线性扫描一遍记录答案就行了,感觉写的还是有点麻烦的,不像有些思维方法代码看起来那么短,优点是这种方法不需要动脑子,流程化拿来就能写。知识点:离散化,差分。原创 2023-01-18 20:04:44 · 84 阅读 · 0 评论 -
P2184 贪婪大陆
这个其实可以用权值线段树来做,代码也不长,就是肯定是跑不过树状数组的,开两个权值线段树,一个记录左端点出现的次数,一个记录右端点出现的次数,每次输入查询的时候,我们求两个值,查询左端点左边的右端点的个数是多少,查询右端点右边的左端点个数是多少,这些是不会相交的,拿总数减去这两个值就是答案了,这个问题可以简化一下,就是我们查询的时候输入区间,看看前面已经输入的区间有几个区间和这个区间相交,那么我们刚才减去的就是不可能相交的区间的个数,减完之后,剩下的就是和查询区间相交的个数了,也就是答案地雷的总数。原创 2023-01-17 19:35:50 · 82 阅读 · 0 评论 -
GSS5 - Can you answer these queries V
【代码】GSS5 - Can you answer these queries V。原创 2023-01-17 01:52:53 · 90 阅读 · 0 评论 -
P1627 [CQOI2009] 中位数
这个虽然题目是中位数,但是感觉是个思维题,以某值为中位数的奇数长度的序列的个数,仿照离散化的思想,我们只关心其它数字和中位数的相对大小的关系,那么把中位数设置为0,小于它的设置为-1,大于它的设置为1,然后我们从中位数的位置向边遍历记录连续的区间和,最后遍历左区间,看看右边有多少个等于它的负数就行了,最后要加上左边为0的个数,右边为0的个数以及1,因为一个中位数也能构成一个序列,这样这个题就完成了,是个思维题并且有点小小的构造的成分,入手点就是我们只关注相对大小不关注绝对大小,这种题还是要多消化消化。原创 2023-01-17 00:53:57 · 48 阅读 · 0 评论 -
SP11578 CITY2 - A Famous City
这个是单调栈,我只知道用单调栈可以解决,这个和一个刷海报的题的处理方法一模一样,那个是问最少刷几次,这个是问最少有几个建筑,方法就是维护一个从栈底到栈顶的单调递增栈,到每个元素都和栈顶比较,小于等于栈顶就把栈顶出栈,小于栈顶那么就答案加一,等于栈顶答案不加一,为了栈里面没有剩余的元素,多遍历一个,最后一个赋值为0,这样这个题就完成了。原创 2023-01-16 18:11:13 · 46 阅读 · 0 评论 -
P6327 区间加区间sin和
这么简单的题竟然过了小半天我再一次看的时候才写出来,就是推一下三角函数的式子就发现了,需要维护区间的正弦余弦和,这样,加上一个角度值的时候就可以方便的更新了,然后向下传递的时候这个角度也是直接累加的,总之还是很简单的一道题,适合刚入门线段树的新手。没有卡常,就是他们说的可以先预处理需要求三角函数的值,用的时候直接查询,三角函数的调用好像还费点时间,最后也没有四舍五入啥的,就直接过了。知识点:线段树,数学。原创 2023-01-14 01:33:34 · 49 阅读 · 0 评论 -
P1471 方差
这个题还是比较简单的,属于刚入门线段树就可以做的那种题,因为太明显了,不论是使用线段树还是推式子,这个方差的式子也很好推,推完发现区间需要维护的数据就是区间和,还有区间数的平方和,这样就可以求方差了,然后是懒标记的传递,这个自己举个例子就知道向下传递的时候下面一层的懒标记直接加上面的就行了,然后输出的时候也没有四舍五入,直接向下取整,就过了。原创 2023-01-13 03:57:04 · 37 阅读 · 0 评论 -
P3369 【模板】普通平衡树
知识点:离散化,线段树。原创 2023-01-12 23:22:16 · 82 阅读 · 0 评论 -
P1637 三元上升子序列
这个题一般当作树状数组的练习题,但是最近在学线段树,就拿来练习了线段树,是线段树里面的权值线段树基础题,这个问题就是正着求一下顺序对,逆着求一下逆序对,然后相乘累加就可以了,以前我居然觉得这种题难,现在看来是很简单的,需要注意的是我们第二次的时候对线段树的更新,要让所有结点的值都为零,这是一个需要注意的点。原创 2023-01-12 19:07:47 · 43 阅读 · 0 评论 -
P3373 【模板】线段树 2
【代码】P3373 【模板】线段树 2。原创 2023-01-11 23:59:06 · 52 阅读 · 0 评论 -
P1878 舞蹈课
一个不错的入门级的数据结构练习题,练习了链表和堆两种入门数据结构,难度在黄题里面是偏难的,这个题的关键点就是要想到用堆来维护每一对男女,只要想到这个,这个题就不难了,输入的时候往堆里面插入元素,然后遍历输出,输出了一对人,要用散列数组表示这一对人已经处理过了,同时也要判断需不需要往堆里面加入新的元素,总之这个题一开始看的时候没有想起来,过了这个久终于过了这个题。原创 2023-01-09 18:57:10 · 104 阅读 · 0 评论 -
P3799 妖梦拼木棒
做题要看数据的范围,一看木棍的长度那么小,就可以枚举长度,然后正三角形一定是两个相等的长边,然后两个短边拼成一个长边,枚举这两个短边就行了,然后就知道长边的长度了,用计数排序的思想,然后需要注意一下两个短边相等的情况,这个题就没了,还是比较简单的。原创 2023-01-09 13:19:23 · 37 阅读 · 0 评论 -
UVA11228 Transportation system.
属于是黄题里面比较不错的最小生成树,考察对最小生成树的理解,那就是求解最小生成树的时候,维护的是一个森林,森林里面每个树都是一个最小生成树。最后需要注意的时候是要四舍五入输出整数。原创 2023-01-08 00:55:55 · 38 阅读 · 0 评论 -
P5691 [NOI2001] 方程的解数
这个题除了双向搜索,那么就是浮点数向整数转换,以及我把结果的统计放在参数里面比我递归到最后统计的再统计要慢很多,可能是那些数学函数比较费时间把。原创 2023-01-07 01:37:05 · 54 阅读 · 0 评论 -
P1189 `SEARCH`
【代码】P1189 `SEARCH`原创 2023-01-06 17:38:16 · 85 阅读 · 0 评论 -
SP4580 ABCDEF - ABCDEF
这个题,在双向搜索的题单里面,其实不是特别准确,准确的说法应该是折半枚举,然后配上二分查找,紫书有个绿题跟这个很像,当时说的是中途相遇的思想,折半枚举应该就是中途相遇思想的一种具体体现。需要注意这个题有个坑点,就是其中有一个除数是不为0的,这个需要注意。原创 2023-01-06 13:39:41 · 44 阅读 · 0 评论 -
P4799 [CEOI2015 Day2] 世界冰球锦标赛
这个是双向深搜,也是我的第一道双向搜索,所以挑了一个简单的题来写,还是比较简单的,以及要了解双向搜索是怎么降低时间复杂度的。原创 2023-01-06 12:53:19 · 117 阅读 · 0 评论 -
P4047 [JSOI2010]部落划分
这个题可以用二分+并查集做,这里用了最小生成树的做法,就是用kruskal算法,当加边的时候连通块的个数变成目标个数减一的时候,就是答案了,边的排序是要按照从小到大排,这个不要搞错了。原创 2023-01-04 09:41:19 · 57 阅读 · 0 评论 -
P3619 魔法
这个题耗时一天中间做做停停总算是自己推出来了,这个就是一个邻项交换的贪心,这种贪心的题目需要排序,除此之外觉得比较独立,和别的没什么交集,这种题的做法就是首先读题,感觉是要用邻项交换了,然后观察,取中间任意相邻两项,交换两项不影响其它的元素的优劣或者对答案的贡献,那么就可以开始推式子了,就是排序的依据,首先一个元素放前面,得到一个优劣度或者说贡献,然后把这两个元素互换再得到一个,第一个优于第二个就得到了排序的依据了,不会打数学公式,如果能打数学公式的话比我说的要明白的多。原创 2023-01-03 20:06:00 · 60 阅读 · 0 评论 -
[ABC137D] Summer Vacation
这个是和supermarket完全一样的题,输入的时候稍微转换一下就行了,题目有说截至时间,然后告诉你每个任务几天后才能拿到工资,那么意思就是这个任务想拿到工资就要在多少天之前开始干,然后也是一天的时间干一个,所以,完全是和超市一样的反悔贪心+堆。注意开始天数小于1到不能算进结果。原创 2023-01-03 19:55:40 · 68 阅读 · 0 评论 -
[ABC123D] Cake 123
这个很明显就是进阶指南上面的那种类型的题目,是3个序列合并的,这个数据范围很小,可以直接暴力,但是那样的时间复杂度就太高了,用堆优化和数学归纳法可以很快的做出来,就是先合并1和2序列,然后拿着合并好的序列去和3序列合并,这里需要注意的地方就是1和2合并完序列的长度是多少,这个点注意一下这个题就没什么了。原创 2023-01-03 16:01:24 · 94 阅读 · 0 评论 -
P1645 序列
这个应该是属于区间贪心,做法是,我们首先按照区间包含的情况去进行排序,也就是第一标尺是右端点从小到大,第二标尺左端点从大到小,然后开始遍历每个区间,首先统计一下这个区间已经有的点个数,然后我们让这个区间需要有的点的个数减去已经有的个数,就是这个区间还需要的点的个数,这里需要注意的是这个可能是负数,所以要和0去最大值,区间还需要的点的个数不会是负数,然后就是我们从区间的末尾开始,倒着向前遍历,如果是这个位置有点了跳过,没有的话加上点,用散列数组来记录每个点的状态,等到加的个数够了就退出就行了。原创 2023-01-03 15:23:09 · 50 阅读 · 0 评论 -
P1801 黑匣子
并且这是第二次写这个题,明显比上次思路清晰,代码简短效率还高,上次也是写的对顶堆结果代码不能看。原创 2023-01-01 14:09:25 · 106 阅读 · 0 评论 -
P1396 营救
这个题我看到了用的是二分+并查集的做法,这个题还是比较简单的,但是其实可以用求最小生成树的方法来做这个题,不需要求出来一个最小生成树,我们合并顶点的时候,第一次s和t在一个集合里面了,那么这个边的长度就是答案,这个是我看题解发现的最惊艳的思路,没想起来可能也是因为我还没学最小生成树的算法吧。知识点:二分,并查集。原创 2023-01-01 11:30:04 · 40 阅读 · 0 评论 -
CF1213G Path Queries
知识点:离线,并查集。原创 2022-12-30 08:19:58 · 45 阅读 · 0 评论 -
CF873C Strange Game On Matrix
这个题还是比较简单的,唯一的难点在于题意,我看翻译都看的一愣一愣的,只能看完之后自己猜意思,这个题的意思是给一个01矩阵,每一列,从上往下,遇到第一个1开始,在长度不超过k的区间里面,1的个数就是这一列的分数,总的分数就是每一列的分数相加,现在可以把任意个1变成0,求最大的分数以及相应的最小的转换次数,感觉这个不是很难,要我看难度就是在于题意,贪心,定长区间滑动窗口,都很好想。原创 2022-12-28 10:49:58 · 43 阅读 · 0 评论