【WC2019模拟2019.1.12】总结

鉴于我比较菜,所以没有特别好的打题策略。
今天只打了3小时45分钟,所以时间短了。
T1
一个升序数列a,里面的数字互不相同。
要插入一个与数列的数中都不相同的数x,询问ai和x的大小关系,询问的代价为cost[i]。
通过一系列询问,你最终知道了x该插哪,总共花费了C的代价。
求C的最小值。
一眼看上去交互题,逃。
匆匆忙忙打了cost[i]全部等于1的,拿了10分。
不知道他们怎么拿20分的。。。
正解是一个DP。
T2
开场很多人就切了,听说是原题。
DP计数题。
求有多少个字符串,它长度为n,字符集大小为s,并且它不纯在长度>1的回文后缀。
显然设f[i]表示长度为i的回文串,并且它不纯在长度大于1且小于i的回文后缀。
O ( n 2 ) O(n^2) O(n2)转移。
l i m = ⌊ i + 1 2 ⌋ lim=\lfloor\frac{i+1}{2}\rfloor lim=2i+1
f [ i ] = s l i m − ∑ j = 2 l i m s l i m − j ∗ f [ j ] f[i]=s^{lim}-\sum_{j=2}^{lim}s^{lim-j}*f[j] f[i]=slimj=2limslimjf[j]
显然,这个DP符合不重不漏。因为一种不合法字符串刚好被统计到一次。
最后答案为 A n s = s n − ∑ j = 2 n f [ j ] ∗ s n − j Ans=s^n-\sum_{j=2}^{n}f[j]*s^{n-j} Ans=snj=2nf[j]snj
100分?不会定性分析,只会找规律。
由于数感好,所以设 g [ i ] = ∑ j = 2 l i m s l i m − j ∗ f [ j ] g[i]=\sum_{j=2}^{lim}s^{lim-j}*f[j] g[i]=j=2limslimjf[j]
g [ i ] g[i] g[i]竟然有规律?!一开始g[i]的规律有点恶心不想写,所以直接DP,但后面的数都是有规律的。
g [ i ] = g [ i − 1 ] ∗ s + f [ l i m ] , i 为 奇 数 g[i]=g[i-1]*s+f[lim],i为奇数 g[i]=g[i1]s+f[lim],i
g [ i ] = g [ i − 1 ] , i 为 偶 数 g[i]=g[i-1],i为偶数 g[i]=g[i1],i
交上去就AC了。
T3
某题原题,但是已经离上次AC过了很久了,忘了。
由于第二题花的时间较多,所以第三题没什么时间写50分,前两个数据点写挂了。
k=0,k=1,k=2很容易计算或找规律。
至于前两个数据点,考虑每个点对答案的贡献,也很容易求出。
A n s = n ∗ ∑ i = 0 n − 1 i k C ( n − 1 , i ) ∗ 2 C ( n − 1 , 2 ) Ans=n*\sum_{i=0}^{n-1}i^kC(n-1,i)*2^{C(n-1,2)} Ans=ni=0n1ikC(n1,i)2C(n1,2)

你可能感兴趣的:(总结,WC)