Codeforces Round 968 (Div. 2)

A. Turtle and Good Strings#

题意:确定是否存在一种方案使得 s=t1+t2++tm,满足 m>1 且任意 i<jti 的第一个字母不等于 tj 的最后一个字母。

s1sn 一定不属于一个子串,因此 s1=sn 是条件非法的必要条件。

那么反之是否能构造一组解呢?这是显然的,取 t1=s[1],t2=s[2,n] 即可。

submission

B. Turtle and Piggy Are Playing a Game 2#

题意:Alice 和 Bob 进行博弈,Alice 先手。

每次 Alice 可以选一个 i 并删掉 i,i+1 中较小的一个,Bob 可以选一个 i 并删掉 i,i+1 中较大的一个。

Alice 想最大化 a1,Bob 想最小化 a1,求两人都在最优策略下的 a1

策略很明了了,Alice 每次删掉全局最小,Bob 每次删掉全局最大,删到最后只剩整个序列的中位数。

submission

C. Turtle and Good Pairs#

题意:(i,j) 是好的当且仅当 i<j 且存在 k[i,j) ,满足 sksk+1sisksjsk+1。将 s 重新排序,最大化好的数对个数。

把字符串分为若干极长连续颜色段 [li,ri](如 aaabbcc=[aaa][bb][cc])。

容易发现 (i,j) 是好的的充要条件为 i,j 所在颜色段不相邻。

ai=rili+1,那么好的数对个数等于 n(n1)2aiai+1

目标转化为最小化 aiai+1

当字符集大小不为 1 时,可以证明 aiai+1n1 并且这个下界是可以达到的。

如果存在 ak=1

i=1m1aiai+1i=1k1ai+i=km1ai+1nak

如果 ak2aiai+11ai+ai+1

i=1m1aiai+1i=1m1ai+i=2mai>n

我们让前面所有 ai=1,最后一个连续段放多出来的相同字母(如 aaabbcc=ababacc),显然有 aiai+1=n1

时间复杂度 O(26n)submission

D1. Turtle and a MEX Problem (Easy Version)#

题意:给定 n 个序列 [ai]f(x) 定义为 x 经过若干次操作(可能不操作)达到的最大值。

一次操作定义为:选定一个序列 [ai]xmex(x[ai])。在简单版中,一个序列可以被重复选择。

给定 m109,求 x=0mf(x)

定义 ui=mex[ai], vi=mex([ai]ui)

我们发现不管是什么 x,不管对 [ai] 操作几次,能够达到且一定能达到的只有 viui

因此 f(x)=max(x,maxvi)submission

D2. Turtle and a MEX Problem (Hard Version)#

题意与 D1 相同,多了每个序列只能选一次的限制。

如果 x=ui,那么 x 能够走到 vi

不难想到 uivi 连边。

如果 x=ui,那么 xvi 后是可以继续走 vi 的出边的,因为一个序列只会产生一条边, vi 的出边对应的序列不是 i

定义 fi 表示 i 能到达的最大点坐标,可以逆拓扑序完成。

  • 一个 x 的答案至少是 fi
  • 一个 x 的答案至少是 maxui
  • 如果 i 只有一条出边,只有 x=i 能够到达 fi
  • 如果存在 i 有大于一条出边,那么对于任意 x,我们可以先走另一条出边对应的序列来达到 i,然后再走通向 fi 的出边。

submission

E1. Turtle and Inversions (Easy Version)#

题意:给定 m 个限制 [li,ri],表示存在 k[li,ri],记 ai=maxj=lkpj, bi=minj=k+1rpj,使得 maxai<minbi

求长度为 n5×103 的符合限制的排列的最大逆序对数。简单版保证限制互不相交。

把所有数分为两类:小数(0)和大数(1),满足 max{0}<min{1}

条件 i 被满足当且仅当 [l,r] 内所有 0 都在 1 前面,且 0,1 都至少出现一次。

如果最后的排列有 x0y1,贪心的使所有 0 从大到小排,1 从大到小排。

设有 z 个逆序对形如 (1,0),称之 10 对,那么最后的总逆序对数等于 x(x1)2+y(y1)2+z

f(i,j) 表示填完前 i 个数,其中 j 个是 1 的最大 10 对数。

  • 如果 i 是某个限制的右端点,枚举 [l,r] 之间有多少个 1
  • 否则讨论 i0 还是 1

最后答案是 maxf(n,i)+i(i1)2+(ni)(ni1)2

暴力转移看似是 n2 的,但由于区间不相交,第一种转移也是均摊 O(n) 的。时间复杂度 O(n2)

submission

E2. Turtle and Inversions (Hard Version)#

题意:与 E1 相同,不保证限制互不相交。

先只考虑两个限制相交的情况:[l1,r1][l2,r2],其中 l1l2r1

[l1,l2) 必然全为 0

类似的,令 r=min(r1,r2), r=max(r1,r2),则 (r,r] 必然全为 1

那么我们可以钦定这些位置,并新增限制 [l2,r]

考虑拓展到一个限制集合 S,满足 S 中限制之并是连续的(极大)。

我们发现,除了 S 中限制之交 [maxl,minr],其余位置都已经钦定。

经过这样的转换,所有限制保证不交,即 E1。submission

F. Turtle and Three Sequences#

题意:给出三个长度为 n3000 的序列 a,b,c

选出一个长为 m5 的序列 p 满足 1p1<p2<pmn,满足 apiapi+1 且所有 bpi 互不相同。

最大化 cpi 的值,其中 ai,bin

如果 b 的值域很小,可以状压 dp:

f(i,S,j) 表示考虑了 [1,i],被选中的 a 的最后一个数的值为 j,被选中的 b 的值的集合为 S 的最大价值。

由于 b 中被选元素互不相同,不需要额外记录序列长度,集合大小 = 序列长度。

树状数组优化,单次可以做到 O(nlogn2|S|)

考虑每次将 b 中元素向 [1,m] 随机映射,即保证原来相等的还是相等,原来不等的可能相等。

一次就得到答案的概率等于 m!mm(可以理解为最优解中 m 种颜色映射过后依然互不相同的概率)。

T=300 轮,得不到最优解的概率只有 106 级别,可以接受。

submission

posted @   Lu_xZ  阅读(317)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示