暂无
无
无
没有
没有
这一周在刷AC自动机的题来着,所以没有新的东西
翻出来以前写的一道模拟退火入门题,温习了一下。
洛谷P1337:平衡点
模拟退火,数学
给出桌面上n个洞的坐标,n个重物系绳分别穿过n个洞,求绳结最后的平衡位置。
绳结平衡,即所受n个力达到平衡。
而当绳结处于一个非平衡点时,其所受合力方向必指向最后的平衡点,因此我们将绳结向该方向移动一段距离。
循环上述过程,每次移动的距离逐渐减少,最终绳结将“逼近”最后的平衡点。
比较入门的一道题,复习的时候却调了好久=。=
关于模拟退火还在学习当中…
本周完全摸鱼
AC自动机 DP
给出一些模式串和一个长度,求出给定长度下至少包含一个给出的模式串的文本串数量。
这道题可以通过计算不包含任何一个模式串的文本串数量间接求解。
主要是在Trie树上运用dp。
在这里我想做题的人需要对文本串在Trie树上匹配的过程有一个直观而清晰的认识——匹配到当前的树上的位置代表一切其fail一串上的均可以匹配,但以该点为fail的位置不能被匹配。
运用dp,dp[i][j]表示 长度为i、结点序号为j的位置不包含任何一个模式串的文本串数量。
状态转移方程为:dp[i+1][son[j][k]]+=dp[i][j] (!flag[son[j][k])
这里面需要注意的是,如果一个结点是一个模式串的末尾,那么以其为fail关系的子孙的结点都要标记flag,原因如上。
还算是有点复杂的,当时调了一段时间。