随笔分类 - OI
摘要:vjudge真好用。。。 一句话的题意:给你一个数组,求无重复元素的最长区间长度。 可以发现:区间越长,重复元素会越多。反之亦然。 直接使用two pointers就可以求解。 具体实现思路是:先移动右端点直至出现重复元素,然后再移动左端点直至没有重复元素。 复杂度依然十分优美。 PS:这道题没跟数
阅读全文
摘要:pjT3翻车了,怕是连pj组都不如 这道题一看上去就是用bfs的啊,用dfs还怕爆栈。 然后就手动地打了个非常暴力的bfs,只拿到了25pts。 翻了题解才知道这个东西居然还能用spfa! 总结性话语: 搜索题不会做的,试着转换成图论题,用图论题的思路解决暴力模拟也许会更方便 。 所以我们可以类似于
阅读全文
摘要:扫描线+线段树求矩形并的面积和周长算法 扫描线其实十几天前就听说过了。但是不知道具体的实现方法。 这次专门刷了扫描线+线段树的模板题,好好地体会了一下。 一般会给你一些矩形的两个对角点的坐标,而这些坐标正常情况就会很大或者有负数,需要我们的离散化。 离散化这么一个操作就不多说了,排序去重,找个数组存
阅读全文
摘要:随机算法。真香! 这道题一看上去好像很可怕的样子,根本想不出什么算法。 全部情况都枚举一遍显然不可能,铁铁的T掉。 没办法全都枚举,那就随机乱搞! 我们可以使用 这个函数,每次打乱a数组,然后每一次添加数据的时候贪心地往当前组内和最小的加就是了。 一次极小概率碰到正解,但这种随机算法你能跑20000
阅读全文
摘要:毒瘤月赛题,暴力没有分系列。。。 这道题不知道为什么,我打暴力应该是没问题的,用一个类似于莫队的思想来处理询问。然后就爆零了。。。 这道题的正解是这样的: 你模拟一下题意,就会发现一个神奇的系数问题。 这就是个yh三角咯。所以你可以$O(2000^2)$地打出整个杨辉三角,然后就可以很便捷地处理所有
阅读全文
摘要:第一道扫描线+线段树题。 这道题还耗了我很久的时间,因为不懂得扫描线到底要怎么做而一直翻了很多dalao的题解。 这道题求的是一个指定大小的矩形可以框住多少颗星星,他们的亮度总和最大。 直接移动矩形不可行,我们将每颗星星转换为每颗星星能被矩形框住的响应区域,不难发现也是矩形。 为了不重复计算,我们只
阅读全文
摘要:数据结构优化dp是最骚的。。。 看到区间和,常用的技巧就是前缀和了。所以我们弄出一个前缀和数组b。 那么这个答案就能转化为$max(a_i a_j)$。 我们每一次就只枚举i,那么这个max可以把$a_i$拿出来,也就是$a_i min(a_j)$。 所以转换为区间最小值。直接转化为RMQ问题,使用
阅读全文
摘要:菜鸡面对大数据范围瑟瑟发抖。。。 我本来看到这道题有多个数据点,然后预处理一个函数就差不多快超时了,还以为不可做呢。。。 看来其实是我太菜了。。。 有个很重要的东西: 这道题中$0 \leq a \leq 100$! 说明当这个函数是二次的时候一定是开口向上的! 大概可以发现:我们要求的这个$F(x
阅读全文
摘要:ddd出的noip+模拟赛的T1 好难啊! 我的思路是用过河卒那样的加法原理算出1000 1000之内的两个点之间的距离,然后一个一个豆子来吃,吃到终点,方案数就乘法原理一个一个乘。 但是很不幸,评测的时候五颜六色,只有45pts。 正解是这样的: 你把人的坐标设为$(x,y)$,因为人只能往右或者
阅读全文
摘要:暴力出奇迹!!! 昨晚很积极地拿手机看这道题的题面,还挺易懂的。 然后写了第二发程序,用优先队列再弄个delta轻轻松松85pts。。。 要是过几天考试能像这样该多好啊。。。 显然那个人挑出所有蚯蚓的最长的,就是堆的基本操作了。 然后想到没有挑出来的蚯蚓是会长长的,但是他们已经在堆里面,用优先队列不
阅读全文
摘要:dfs+小剪枝+背包方案数的一道题 这道题有一个前置技能:你要会求那$n m$个砝码能表示多少的重量。 因为在这道题里面每个砝码只能取一次,所以相当于一个少了一个属性的01背包方案数。套上相应内容即可求解。 这应该也能有所帮助:https://www.cnblogs.com/Garen Wang/p
阅读全文
摘要:暴力不会写,直接抄题解系列。。。 这道题人云亦云说是贪心。但是重点是如何证明贪心是对的。 需要给定一定的排列来使拿到最多钱的大臣拿的最少,其实就是个排序。 我们讨论两个前后关系的大臣,如何才能使答案最小。 设两位大臣一位叫$a$,一位叫$b$,把他们前面的人(包括国王)的左手的乘积统称为$tot$。
阅读全文
摘要:背包方案数模板题练习 第一道题是另一道也叫做“砝码称重”的前置技能,第二道题是我搜背包方案数的时候出来的。 两道题有一点区别,就是多重(01)背包和完全背包。 第一道题因为数据水,所以多重背包也能过。但是也要学会如何写多重背包!!! 第二道题是完全背包,每一种货币可以拿无穷多次。 这种背包可以理解为
阅读全文
摘要:bitset优化传递闭包模板题 这种关系直接用图论来建模就是了,其实就是一个传递闭包。 传递闭包有一个朴素的做法就是floyd。 而这道题的范围是$n \leq 1000$,$n^3$的暴力显然会T。 而使用bitset,听说可以优化到原做法的$\frac{1}{32}$甚至更好! 直接给代码~~其
阅读全文
摘要:图论日常不会系列。。。 题意:给定有向边和无向边,然后给每一条无向边定向,使得到的图无环。 我本来想缩一下点的,但是越想越晕。 然后就翻了题解,恍然大悟。。。 其实只需要给只有有向边的图跑一次toposort。然后把无向边的定向看做是在添加有向边。 显然不要违反拓扑序来添加有向边,这个图就不可能有环
阅读全文
摘要:毒瘤数据卡普通莫队!! 这道题跟普通的莫队题目差不多,但是多了一个修改操作。 所以带修莫队就横空出世了。 普通莫队记录左端点和右端点,那么这里就再记录一个时间轴,表示当时已经执行过几次修改。 之后莫队模板就有六个while,前四个是一样的。 最后两个判断当前修改次数和目标修改次数的关系。这个就是灵魂
阅读全文
摘要:Flappy Bird真好玩(逃 这道题我一看上去好像是搜索啊,但是发现起点和终点都有点多了吧。。。 然后我就懵圈了。 其实这道题是一个套着皮的背包dp。 其实用dp想,很多问题就简单了。比如多个起点,我初值都设为0就行了;多个终点,我都找一遍就行了。 我自己试着不看题解自己用传统dp的思路(不夹杂
阅读全文
摘要:two pointers练习题。 这道题求的是一个最短的区间长度,满足其中所有的数字都出现。 暴力的做法是两次枚举,复杂度$O(n^2)$。 更优美的是尺取法,英文名叫two pointers。(两个指针。。。) 算法大概的过程是这样的: 其实真的是很优美的,代码也很短。 希望我能真的学会吧。。。
阅读全文
摘要:刷普及 打基础系列。。。 我的第一思路是把这个数组排序并去重,顺便算出去重后的每个数字在原数字中出现多少次。 发现我不会做。。。 然后其实可以有另一种做法: 把这些值扔进一个map里面,统计每个值出现的次数。 然后还是排序去重,在数组中挑出唯一的一个$B$,在map中找出$A$和$B$出现的次数。所
阅读全文
摘要:两种解法都解决了。。。 这道题有两种解法。 第一种是并查集补集,就是开两倍并查集空间,要隔离,就把一人的原集和另一个人的补集合并。 从大到小排序,直到无法合并的时候就输出,这个时候就是答案。 我之前做(chao)过,这里就不写了。 第二种是二分答案+二分图判定。 显然,答案希望是越来越小,因为被隔离
阅读全文

浙公网安备 33010602011771号