test0705

test0705

T1 强迫症

得分情况

期望:100

实际:20

改后:100

题意

给一个串,问至少加入几个字符可以变成回文串

犯傻原因

也不晓得……思路是对的,然后WA的点都是大了1……

正解

直接反转原串

然后求最长公共子串

然后答案就是 \(n\) 减去最长回文子串

T2深意

得分情况

期望:100

实际:100

题意

现给出一段话 \(s\) ,和一个单词 \(t\) ,已知单词 \(t\) 有别有深意,
也就是说有两个意思,求 \(s\) 可能有多少个意思?答案对 \(1000000007\) 取模。

正解

先求KMP,然后DP

设当前长度为 \(n\) 的答案为 \(f[n]\) 那么,显然 \(f[n]=f[n-1]\)

然后,如果当前位置是匹配串的结尾处,那么设匹配串长度为 \(l\) 那么 \(f[n] = \max (f[n],f[n-l])\)

T3 斐波那契子序列

得分情况

期望:100

实际:100

题意

询问最长斐波那契子序列……

正解

首先考虑暴力,设 \(f[i][j]\) 为当前处理到了 \(i\) ,是从 \(j\) 转移过来的,那么显然 \(f[i][j] = f[j][k]+1 (a_k + a_j = a_i)\)

然后这就要 \(O(n^3)\)

然后我们通过数据范围可以想到肯定是 \(O(n^2\log_2n)\)

然后我们发现,对于相同的 \(a_k\) 显然越靠近后面的队答案贡献越大

那么我们可以预处理当前 \(a_i,a_j\) 时对应的 \(k\) 在哪个位置

这里可以使用 std:map 预处理(开了 \(O2\) 嘻嘻)

然后就可以过了……

考试总结

这次考试T1炸了,可能也是考虑不周全的问题,导致答案都小了 \(1\) 而且全场就这道题没有多拍……

以后考试如果时间充裕的话还是可以写下对拍差错,然后就可以保证自己代码的正确性……

(话说这两天考试这难度还是挺舒服的嘻嘻嘻)

posted @ 2020-07-05 15:34  ztz_cpp  阅读(136)  评论(0编辑  收藏  举报