随笔分类 -  题解

题目的题解,不包括算法讲解和打比赛
摘要:题目 题目 做法 这个做法用了38ms,比y总慢。 看到第一眼,嗯~ o( ̄▽ ̄)o,迭代加深,然后按着这个思路往下打,T飞了。 然后加了几个优化,过了???? 首先还是那个迭代加深,但是我们还要加几个优化。 减少重复搜索。 看这个规则:\(a->b\),还有字符串:\(aa????\),那么他很有 阅读全文
posted @ 2020-10-02 18:12 敌敌畏58 阅读(106) 评论(0) 推荐(0)
摘要:题目 题目 参考资料 小蓝本(算法进阶) 做法 前置芝士:有向无环图的最小路径点覆盖。 我们证明有向无环图的可重复点集的最小路径点覆盖的个数就是答案。 设路径集合为$path$,而藏身点集合为$hide$,$G'$为$G$传递闭包后的图,$fa[x]$为$x$路径上往上一条边的点(而$x'$是指往上 阅读全文
posted @ 2020-09-23 10:51 敌敌畏58 阅读(159) 评论(0) 推荐(0)
摘要:欧拉回路的证明我都没写,这个我却写了,哎。 题目 题目 做法 第一问其实就是让你求用强连通缩点之后入度为$0$的点。 不难证明的一件事情是,缩点之后是个$DAG$,而$DAG$必然存在入度为$0$的点(如果不存在,你从一个点出发一直走指向你的边,最后就会走成一个环。)。 入度为$0$的点是肯定需要放 阅读全文
posted @ 2020-09-20 20:52 敌敌畏58 阅读(133) 评论(0) 推荐(0)
摘要:题目 这道题目的话,按$r$从小到大排序,然后如果对于当前的区间没有满足至少$c_i$个的话,就尽量选右边的没有选过的数字。显而易见是正确的 正确性证明: 对于当前这个区间$i$而言,如果前面$i-1$个区间已经是用了最少的数字,且尽量的把数字凑到$i$区间的$l$的的话,如果想要让前$i-1$的区 阅读全文
posted @ 2020-09-18 10:14 敌敌畏58 阅读(228) 评论(0) 推荐(0)
摘要:QAQ 237行的代码 QAQ 打了我一个下午啊啊啊啊。 题目 题目 我的做法 基础做法 机房大佬CLB提示我这道题目是虚树(当然我的做法不知道是不是虚树,反正虚就对了),于是我发现对于以下的图: 在对外显示上,两个蓝点的LCA是可以代替这两个蓝点的,然后,我们的做法出来了,对于两个点,维护他们两个 阅读全文
posted @ 2020-09-16 20:59 敌敌畏58 阅读(246) 评论(0) 推荐(0)
摘要:题目 题目 做法 首先,我们不难证明当K=2时,一定存在一种最小方案使得两个环之间不存在边的交集的。(但是需要注意,有交集不一定代表不是最优解,说不定是因为有交集但是选取了更大区域的边) 至于证明,看这张图: 第一张图表示重复部分可以通过上移解决,同时减少了所需距离,第二个图表示两个重复部分可以通过 阅读全文
posted @ 2020-09-15 11:14 敌敌畏58 阅读(135) 评论(0) 推荐(0)
摘要:题目 题目 做法 目前看下来貌似我的做法的复杂度是比较优秀,是$O(n^3)$ 当然,\(n=101\),首先,点的个数最多是边的个数加一,这个很好理解。 我们开始思考,走这么多边,肯定是要走环的,对吧,那么有一个假想,如果他就是在一条最短路上的最小边反复横跳呢? 我们用“表面否的算法”(Bellm 阅读全文
posted @ 2020-09-14 15:40 敌敌畏58 阅读(152) 评论(0) 推荐(0)
摘要:题目 题目 思路 这道题目思路不难,就是卡塔兰数,但是关键是要压位高精,而且如何快速计算组合数,这里把公式说一下:\(\frac{C_{2n}^{n}}{n+1}\)。 也就是:\(\frac{(2n)!}{n!*n!*(n+1)}\),较快的方法就是用https://www.acwing.com/ 阅读全文
posted @ 2020-08-06 09:16 敌敌畏58 阅读(193) 评论(0) 推荐(0)
摘要:题目 题目 题解 这里有一个十分重要的思路(其实贪心都不是特别重要),就是如何处理小岛和雷达的关系,我们观察好像很难搞,但是其实我们是能对于每一个小岛,在地平线求出一个区间,表示在这个区间放雷达能够覆盖这个小岛。 即: 至于区间$l$和$r$,用勾股定理不难求出。 然后就是问选最少的点覆盖这些区间了 阅读全文
posted @ 2020-08-03 09:55 敌敌畏58 阅读(124) 评论(0) 推荐(0)
摘要:题目 题目 做法 我们现在考虑一种贪心方法,我们把所有牛的按$l$排序一遍,然后从小往大遍历,如果现在我的所有的畜栏都在工作,那么就新建一个畜栏,否则随便挑一个畜栏(反正都是没在工作,都一样),其实不难想是对的,但是严谨证明吗,我还是炒一下yxc大大的吧QMQ。 证明: 反证法,假设存在一种方案,使 阅读全文
posted @ 2020-08-02 17:03 敌敌畏58 阅读(149) 评论(0) 推荐(0)
摘要:题目 题目 题解 又是一个简(e)单(xin)题,思路不难想,但是证明是真的难啊,不过yxc的视频讲解也是真的好啊。 我的思路是对于$r$从小到大排序,然后对于防晒霜也从小到大排序,然后对于目前的防晒霜看看有没有区间包括它的,包括就选。(优先选$r$小的) 当然,题解大量的思路都是$l$递减,然后看 阅读全文
posted @ 2020-08-02 15:26 敌敌畏58 阅读(127) 评论(0) 推荐(0)
摘要:题目 题目 题解 参考题解: https://www.acwing.com/solution/content/15458/ 很好。 首先考虑我们用贪心证明两个东西: 如果第$i$个可以归到前面的部分就归到前面的部分,不要放到后面的部分,反正放到后面也只会让校验值增大,还不如不放。 对于一个数列而言, 阅读全文
posted @ 2020-08-01 17:01 敌敌畏58 阅读(241) 评论(0) 推荐(0)
摘要:题意 题意 题解 艹,推逆序对推错了,艹 咳咳,依旧是两种做法。 做法1 考虑把整个图化成一条数列。(第二行拼到第一行后面,以此类推) 考虑整个图的逆序对数($0$也考虑上)。 左右交换会使逆序对数$+/-1$,那么上下交换呢? 由于$0$比所有数字都要小,所以肯定会$+-n$ 那么$x$在数列和中 阅读全文
posted @ 2020-07-31 14:09 敌敌畏58 阅读(251) 评论(0) 推荐(0)
摘要:题意 题意 思路 做法1 首先,这道题目有人可能会觉得第$i$个位置不能同时跟左边交换或跟右边交换,但是其实第$i$个位置想要向前回到它原来的位置,但是如果后面的有比$i$还小的数字就会既左旋又右旋了。那怎么看是不是最小操作次数呢?只要看每次操作有没有序列尽量有序,或者说这个操作有没有浪费就行了。 阅读全文
posted @ 2020-07-31 12:16 敌敌畏58 阅读(157) 评论(0) 推荐(0)
摘要:题意 题意 题解 注:本文的代码中的输出不严格正确,反正loj的数据也没多强,不会PE。如果后面加强了当我没说 做法1 没错,第一个还是我的做法。 记得是哪年的SCP还是NOIP初赛竟然程序题就是这个思路,然后我照搬了。 我们这道题目反着考虑,它让我们加数,我们就删除数字,从后往前删除数字,我们先建 阅读全文
posted @ 2020-07-31 10:59 敌敌畏58 阅读(249) 评论(0) 推荐(0)
摘要:题意 题意 题解 我们将喜欢的店铺称为点。 对于行和列,我们证明一下,如果我们$i,i+1$列的点的数量不同,那么一定可以让某一列的点$--\(,另一列的点\)++$。同时如果现在存在移动是第$i$列的一个点移动向了第$i+1$列,那么$i,i+1$列的点的数量肯定不一样,因为一样的话没有必要移动$ 阅读全文
posted @ 2020-07-31 09:05 敌敌畏58 阅读(90) 评论(0) 推荐(0)
摘要:题目 题目 讲解 假设我们现在这个货仓建立在$(a[i],a[i+1])\(之间(注意,不是\)[a[i],a[i+1]]\(),那么我们向右移动,整个距离变化是:\)(n-i)-i=n-2i$,而向右移动是$i-(n-i)=2i-n$,所以当$n-2*i=0$时,说明没有办法再让结果增大或者减少了 阅读全文
posted @ 2020-07-30 15:15 敌敌畏58 阅读(120) 评论(0) 推荐(0)
摘要:题意 题意 题解 都是用离散化的吗?这么神奇? 我的思路就是对于$a$排序,对于语音和字幕的也分别排序,然后三个指针一起从小到大跳得到每个电影的语音和字幕能让多少个人高兴起来。 时间复杂度:\(O(nlogn+mlogm)\) 代码 #include<cstdio> #include<cstring 阅读全文
posted @ 2020-07-30 14:51 敌敌畏58 阅读(109) 评论(0) 推荐(0)
摘要:题目 题目 题解 会告诉我们$a,b$的大小关系,也就是$>\(或者\)<$的比较关系,然后排序,不就是根据比较进行排序吗?然后看数据范围,发现最多只能比较$nlogn$次,所以我们要选择通过比较进行排序的算法中时间复杂度是$O(nlogn)$(因为比较排序的比较次数就差不多等于时间复杂度)的才可以 阅读全文
posted @ 2020-07-30 14:19 敌敌畏58 阅读(141) 评论(0) 推荐(0)
摘要:题意 题目 做法 做法1 没错,这个时间复杂度垃圾的做法就是我的做法。 我们用double进行二分,二分可能的平均值,这个平均值是否满足要求是满足二分性的。 但是$check$函数怎么打呢?也就是说我们要确认一个数列能否构成这样的平均值$x$,该怎么做呢?我们只需要把每个数字减去$x$,然后判断是否 阅读全文
posted @ 2020-07-30 11:04 敌敌畏58 阅读(178) 评论(0) 推荐(0)