AGC046(F未做)

B

有个跟官方题解不同的,稍微讲一下
对于一个生成的矩阵\(R\times C\),由少一行或少一列的矩阵转移过来是有重复的
\(f_{i,j}\)为有多少个\(i\times j\)的矩阵:

\[f_{i,j}=f_{i-1,j}\times j+f_{i,j-1}\times i-f_{i-1,j-1}\times(i-1)(j-1) \]

C

看清楚题意

D

首先来思考给定\(T\),询问\(S\)是否可以生成
\(S'\)\(S\)的最长后缀使得其为\(T\)的子序列,显然这部分是可以不动的,那么我们仅需判断\(S_{1...|S|-|S'|}\)能否进行操作获得\(T_{1...|T|-|S'|}\)\(0/1\)数量

考虑若已知\(S_{1...i}\)进行操作能获得\(0/1\)数量分别为\(j,k\),那么要做的就是\(S_{i+1...|S|}\)中通过插入\(0/1\)的数量为\(j,k\)能生成多少个字符串
为了不重复计数,要使得\(S_{i,i+1}\)间插入的数与\(S_i\)不同,\(S_{i+1,i+2}\)间插入的数与\(S_{i+1}\)不同...\(S_{|S|}\)后插入的数与\(S_{|S|}\)不同

E

\(x,y\)分别为\(A_i\)最小与最大的
结论1:若\(2A_x<A_y\),则无解

证明:
考虑最后的序列单独提出\(x,y\),发现会出现首尾连续出现两次,或中间连续出现三次的情况,不合法

推论1:若\(2A_x\le A_y\),则有解

证明:
通过结论1的证明,不难发现通过大的数连续出现两次,以使得合法

考虑贪心的填数,这里不同于有些贪心的题是一个一个填数。
为方便考虑,在保证已填好的序列中最后\(k\)个是个置换的情况下,然后枚举新填的序列长度\(len\)
然后判断填好后是否可行,这里不同于空序列判解:

\(mi=A_x,mx=A_y\)
\(2A_x+1=A_y\),需要满足前面一个排列\(A_i=mx\)的全部排在\(A_i=mi\)的前面

posted @ 2020-06-26 20:02  Grice  阅读(461)  评论(0编辑  收藏  举报