那么,就到此为止吧,再做就不礼貌了
D题没出来我是真没想到,还剩45分钟的时候基本改对了,上下界推的基本没问题,但是下界算错了,我是脑瘫
只写 A - D 这种白痴题解,嗯,我就是在水博客,我是废物 (理直气壮.jpg
A. Grass Field
|
B. Permutation
$d=2$ 然后贪一下就好了
|
C. Schedule Management
复读了一下题意,因为对应的人干活恰好+1,所以可以二分
莫名其妙爆了一次long long,不知道为什么
// 有 n 个工人 m 个任务 |
D. Permutation Restoration
$\forall i \in [1,n]$ 对于 $b[i]=0$ 的情况,$a[i]$ 上界为 $n$,下界为 $i+1$,若 $b[i]\ne0$,则下界为 $i/(b[i]+1)+1$,上界为 $i/b[i]$
我后者的下界推错了,嗯,小学学了除法和余数就能算出来的东西,我弄错了..
剩下的就是区间排个序然后分配一下,没了,这场主要难度在E、F,明天回家补
|
在家里慢悠悠的开始写E F,丝毫不为网络赛 多校和没学的东西没做题的担忧、、
这样下去可要怎么办捏
E. Text Editor
给定一个长为 $n$ 的字符串 $s$ 和一长为 $m$ 的字符串 $t$
给定一个指针,一开始在 $s$ 的末尾,支持 左移、右移、跳到开头、跳到结尾、删除指针前的字母五种操作,问最少几次操作将 $s$ 变成 $t$
可以知道最优的操作一定是先从后面往回删,然后可能跳到开头,往后删,也可能不跳
枚举断点 $pos$
得到两个串 $s[0,pos)$ 和 $s[pos,n)$
考虑可以得到的 从 $s[pos,n)$ 中得到的$t$的后缀
令其为 $t[m-suf,m)$ $suf$从$0$到$m$
用$SUF[i]$记录$s$从后往前拿到$t[i]$的位置
显然如果$m-suf<=SUF[pos]$ 那都是可以匹配的
而且这一段的操作数就是 $n-i$
然后来考虑 $s[0,pos)$ 这里我们按了一次 home,除非 $pos=0$
我们需要知道的是从 $s[0,pos)$ 中拿到$t[0,m-suf)$的最小代价
显然我们要让 $s[0, pos)$ 的后半部分和 $t[0,m-suf)$ 尽可能的匹配
因此 LCP 最长公共前缀是影响答案的东西,这里可以用 $Z$ 函数处理
$pos - suf$ 是前缀中我们需要删掉的字符数 $pos - lcp$ 是需要移动的数量 还有一个 press home
代码看的Jiangly的,题解都看半天,我是fw..
|
F. Points
$f_i$表示点$i$存在时,$[i+1,i+d]$中点的个数
答案就是 $\displaystyle\sum\limits_{i\in S}\frac{f_i(f_i-1)}{2}$
考虑增加一个点$i$,答案先加上 $\frac{f_i(f_i-1)}{2}$,然后对于$[i-d,i-1]$中所有存在的点$j$,$f[j]$++,每个点对答案的影响是$\frac{(f_j+1)f_j}{2}-\frac{f_j(f_j-1)}{2}=f_j$,所以答案增加一个$f_j$的区间和,然后区间+1
删除点的时候,每个$j$的影响是$-(f_j-1)$,所以删除的时候先区间修改然后区间求和
|