2021.10.27

    早上先回教室了,请了个假就上楼了,我以为有模拟来着

    写了个kmp板子复习一下,然后就到7:30了

    啊欧,所以今天没有模拟赛,哈哈

    决定先把扩展kmp及z函数学完(见1025);

    所以说其实是有模拟赛的

    先看了一会题

    做题顺序:3 1 2 4

    T3

    主要的难点就是输出的每行字符串字符数不能超过500,于是抱着拿20分的想法去写了

    思路:

     其实最开始是抱着打表也能得几分的想法去写的,但当我打了三个数以后,发现打表的话脑子真的不够用,不如试着写写暴力。于是想到了只用加减法,每次数字循环到它可循环的最大值以后break,进行下一次循环。写好之后发现估计要超过500,所以决定加入乘法(除法,括号什么的根本没打算写,首先是太复杂了,其次是我也不会T-T),在写乘法的过程中,主要调试了乘以1的问题,因为乘以一对答案根本没有贡献,反而会增加字符串长度(得不偿失),在加法乘法结束后,发现会缺少1~4的价值,(因为可使用数字中最大为5),所以在这里只对1-4又进行了一个打表,注意的是六个数字必须循环,所以要打6*4个的表。

    然后在考试要结束的20分钟前,我发现它不能用减法,我的算法就此失效了,尝试改正,未果。

    期望得分:0()

    T1

    运用了一下哈希,应该能得一点分,样例是错的就太离谱了。总而言之目前暂时未发现太大问题。

    期望得分:10(救命

    考试结束了

    得了总共十分

    第九名()

    T1 string

    正解:

    写个暴力DP, f[i][j]表示长度i,当前a 串上匹配到j , b串上匹配最多能到哪。

    注意到出现最少的字母至多出现n/26 次,所以答案不超过n/13+1 。所以暴力转移(每次26 )复杂 度就是(On^2) 。

    原本的哈希代码经修改可得20分。

    T2 forest

    正解:

    二分答案。

    正解需要卷积,所以我不会‘——’;

    T3 reek

    题解表述不清晰,(对我自己来说),

    我无法理解,正解居然是打表

    T4 path

    对于每个询问我们将询问点建出虚树,将初始路径(就一个一个走)每个点经过几次算出来。

     如果一个点被经过了超过v+1 次那么没救了,否则我们找到任意一个经过超过 1次的点,那么经过它 的路径必须要整掉一条。我们枚举整掉哪一条(只有 ≤v+1个选择),更新贡献然后递归到v-1 。 

     也可以用链剖代替虚树,不过应该会难写很多,也不一定会更快。

 

    本次模拟没学过的知识点:虚树,链剖,卷积

     扩展 KMP 算法 - 刘毅的个人博客 (ethsonliu.com)

posted @ 2021-10-27 11:50  kanateta  阅读(77)  评论(0)    收藏  举报