- 博客(5)
- 收藏
- 关注
原创 DAY14 8.4
最短路的交集里,我们现建出最短路径生成树,而答案边一定在里面,我们不会算少。然后我们发现,次短路应该只会有一条路不在最短路径树里,否则肯定会有更优的路径(证明不难)。所以我们考虑把最短路径图建出来,找出里面所有的割边(桥),然后扔到一个 map 里。,此时树被分成了两个集合,由于两个集合一个只增加,一个只减少,我们可以快速的维护是否出现了从上面集合走一条非树边到下面集合且比最短路恰好多。集合中最外面的连起来,应该是类似一个阶梯状的东西,其中这个东西的右下角必须全部是。但是这样我们会计算多的答案,思考:从。
2025-08-07 12:07:18
314
原创 DAY12 8.2
模拟赛A:首先显然无单调性,无法二分。发现好像根本无法优化,因为只能暴力枚举每个可能值,然后跑一次暴力模拟选取器材。所以考虑证明时间复杂度,发现体积W的下限,显然是⌈ksum⌉。再思考上界,发现下界的问题是有时候会空出导致浪费,所以我们不妨加上一个maxnvi中的最大值)。这个时候我们无论如何都可以多拿一个进来,显然是可以满足要求的。其中模拟过程可以使用 set 优化至Onlogn。所以时间复杂度为Onlogn∣V∣。B:确实是简单题。
2025-08-07 12:06:17
1071
原创 DAY9 7.30
所以不难发现一种策略,即贪心的断开区间,能不断就不断,直到必须要断的时候,最后判断一下首尾两个区间是否有重复,然后除以。但这个做法是错误的(我也不太知道为什么),因为其实首尾两个区间如果相同是要多一次操作的,所以我们并不能贪心的选择第一个区间。如果某个数大于一个后缀中的某些数,则如果想选择这一个后缀中的数,则必须要先把这个数选上,而把这个数删除,后面就能正常选择了。的 tag标记,然后我们会空缺一个位置,把前面的数拉过来补全即可。,说明这个首位是有重复的,要多跳一次。,并记录最后一个跳(断)的位置。
2025-08-07 12:05:34
1153
原创 DAY6 7.27
线段树维护是不难想到的。不难发现对于一个区间进入和出来的时间应该是如下的一个情况(数轴下面那段表示超时失败),而手玩后发现(甚至不用手玩,因为函数合并形状不变是必然的)下一个区间还是这样的。,去思考不状压是没有前途的。D题在肯定线段树且单点修改时,应该去思考如何设置每个点表示的东西,如何push_up。的值记录的也很差,不妨考虑交换值与状态,这是一个常用的技巧,可以很好的减少 dp 时间复杂度。表示字母出现状态为i,可以达成该情况的最小位置。分是自然地,考虑check。,每次简单 push_up 即可。
2025-08-07 11:59:34
521
原创 DAY1 7.22
接下来考虑如何构造,我们考虑一条折线超过了下界,显然是由于过多 “-1”,那我们删去一些使得他刚好接触下界,此时容易证明即使删去了这些-1,向上平移后最大的点也不会超过上界(如果有的话那么最大子段就不是最大的了,矛盾)。接下来考虑最后可能折线向下,并没有顶上去,那同样我们删去前面的几个-1,使他向上平移到线。出现的时间是连续的,即一旦有一次不行,后面的全都不行。此时我们构造完毕,我们选取了所有的1,删去了尽可能少的-1,是最大的。表示考虑 t 的 1~i,从 s 的位置 j 开始匹配,最小匹配完的位置。
2025-08-07 11:58:21
173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅