49周作业

2025.12.7-2025.12.13

link

A. Painting With Two Colors

link

B. Alice and Bob

link

C. Maximum Sum

link

D. Matching Numbers

link

E. Add, Divide and Floor

link

F. Did We Get Everything Covered?

link

$ Solution: $

贪心。

可以发现整个子序列越靠后,接不上的可能越大。

所以子序列的每一个字母一定是位置越靠后越好。

子序列第一个字母一定是前 $ k $ 个字母中第一个出现的位置最靠后的那个字母....依次类推。

实现上可以用 $ f_{i,j} $ 表示$ i \(以后第\) j $个字母出现的最早位置。

每次选取\(f_{i,j}\)最大的$ j $,然后令 $ i=f_{i,j} $。

G. Alice's Adventures in Cutting Cake

link

\(Solution:\)

贪心。

可以发现,答案一定是一个连续区间。

所以就是要在满足$ m $合法后,剩余的一段和最大。

而总数\(m\)不变,可以枚举在答案左边的区间数\(k\),则右边的区间数为\(m-k\)

对于这两段前缀和后缀,必定要使其长度和最小,使得答案区间长度最大。

可以贪心地维护一个指针前后扫一遍求出当有\(i\)段合法区间的最小左端点和最大右端点。

最后枚举左右区间数,取答案的最大值即可。

H. Quiz Master

link

$ Solution: $

双指针。

首先对\(a\)序列升序排序。

然后再\(a\)序列上双指针,对于每一个\(l\),求出最大的\(r\)

可以发现\(r\)不降,故双指针正确。

如何求呢?

对于每一个数可以\(O(\sqrt{n})\)枚举因子,时间复杂度\(O(n\sqrt{n})\)

还可以用埃氏筛预处理出每一个数的因子,时间复杂度\(O(n log^2 n )\)

I. Lucky Permutation

link

排列经典套路。

首先对\(i\)\(p_i\)连边。

然后就是要求 使图中仅有一个点数为2的环且这两个点在序列中相邻的 最小操作数。

重要性质:
1.交换两个同一个环上的点,相当于将一个环分裂成两个环。
2.交换两个不同环上的点,相当于将两个环合并成一个环。

所以可以先求出将整张图变成\(n\)个自环的操作数为$ k = n - c $。

然后检查原图的每一个环中是否存在两个点在序列中相邻。

有的话,答案为\(k-1\);否则为\(k+1\)

J. Different Arrays

link

posted @ 2025-12-15 22:15  Lmx__qwq  阅读(0)  评论(0)    收藏  举报