![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hdu
文章平均质量分 71
bababaab
QwQ
展开
-
斜率优化模板题 HDU3507:Print Article
首先看出是DP 方程 dp[i]=min{dp[j]+(sum[i]-sum[j])^2+m}. n的范围是 那末,下面是斜率优化: 在做状态i的时候,我们会比较在i前面的状态j和状态k 我们假设j>k; 那末,如果状态j更优,就有(dp[j]+(sum[i]-sum[j])^2)>(dp[k]+(sum[i]-sum[k])) 经移项得((dp[j]+sum[j]^2)-(dp[k原创 2015-11-13 16:50:08 · 659 阅读 · 0 评论 -
HDU 1711 Number Sequence
大意是给两个序列,求第二个序列在第一个序列中的最小位置,无解输出-1。 朴素算法O(m*n),m 所以就要用到KMP算法,俗称看毛片算法(我是不喜欢这么叫的。。) KMP算法是预处理出目标串的失配边,然后遇到不匹配的就顺着失配边走,直到找到匹配。 看起来很难理解,那末举个例子: 1 b[i]=(1 2 3 1 2 5 6 1 2 3 4) 那末它的失配数组是 1 f[i]=(1原创 2015-11-13 21:12:17 · 372 阅读 · 0 评论 -
HDU 2222 Keywords Search
ac自动机,大意是求一个长串中有含有给出的多少种串 照着标程打了一遍 思想和KMP差不多,关键是建立失配边,我们用BFS做这个 首先要建立trie树,第一次用指针 NULL是大写的,坑爹的我一开始全小写了 #include #include #include using namespace std; struct node { node *fail; //失配指针 node *ne原创 2015-11-20 13:11:24 · 292 阅读 · 0 评论