摘要: 首先看这个得分方式,容易发现就相当于分k段,每段的值和两两乘起来。 这样就很容易列出dp方程:设f[i][j]为到j分成分成i段,转移是 $$ f[i][j]=max { f[k][j]+s[k] (s[j] s[k]) } $$ 然后显然这个可以斜率优化,随便推一推式子,假设k选p大于选q,那么 阅读全文
posted @ 2018-04-18 14:52 lokiii 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 参考:http://hzwer.com/6888.html 把k条道路权值设为0,和其他边一起跑MST,然后把此时选中的其他边设为必选,在新图中加上必选变缩成k个点,把所有边重标号,枚举k跳边的选取情况,和其他边做MST,建出树,k条边的权值在树上取min cpp include include i 阅读全文
posted @ 2018-04-18 10:38 lokiii 阅读(180) 评论(0) 推荐(0) 编辑