AT_abc_264_g

Posted xhr0817-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AT_abc_264_g相关的知识,希望对你有一定的参考价值。

题目:AT_abc264_g

链接:洛谷ATvjudge

题意

  • \\(n\\) 个小写字母字符串 \\(T_i(1 \\le i \\le n)\\) 和数组 \\(P\\),一个非空且只包含小写字母的字符串 \\(S\\) 的优美度为 \\(\\sum\\limits_i = 1^nT_i \\ 在 \\ S \\ 中的出现字数 \\times P_i\\)。问优美度最大值,可以无穷大输出 Infinity

  • 数据范围:\\(1 \\le n \\le 18278, T_i 长度不大于 3 且两两不同,-10^9 \\le P_i \\le 10^9\\)

思路

  • 首先 \\(n\\) 给了一个奇怪的数值,我们经过一些尝试发现 \\(18278 = 26 + 26^2 + 26^3\\),说明每个满足要求的 \\(T\\) 都可能在里面。

  • 闲言少叙,下面进入正题。可以发现有状态 \\((i, j, k, w)\\) 表示当前后三个字符为 \\(i,j,k\\) 那么 \\((len, i, j, k, w)\\) 可以转移到 \\((len + 1, j, k, l, w + W(k) + W(jk) + W(ijk))\\)\\(W(s)(s 为字符串)\\) 表示 \\(s\\)\\(n\\) 个字符中是否出现过,出现就返回对应 \\(P_i\\),否则返回 \\(0\\)。那么我们明显可以做 \\(DP\\)

  • 但是其实发现如果把 \\(W(k) + W(jk) + W(ijk)\\) 看做边权,我就是在做 bellman-ford,而我们发现如果答案为无穷大,就是出现了正环,而 bellman-ford 既然可以用最短路判负环,那当然可以用最长路判正环。

  • 但是这个算法的时间复杂度是不被接受的,bellman-ford 的时间复杂度为 \\(O(点数 \\times 边数)\\),在这里就是 \\(26^3 \\times 26^4\\)\\(w\\) 是最优化属性),是会炸掉的。

  • 那该怎么办呢。事实上我们发现 \\(26^5\\) 是可以过掉的,我们可以考虑一个新的状态:\\(f_i,j\\) 表示后两位为 \\(ij\\) 的最大答案。那么 \\(f_i,j\\) 可以转移到到 \\(f_j,k\\),正好也可以把后三位得到,时间复杂度过掉了。

  • 注意要把只有一个字符的字符串的答案处理好,\\(W()\\) 可以用进制得到。

  • 时间复杂度:\\((26^5)\\)

美国洛杉矶_16核_96G内存_250M_550元

▇ 美国洛杉矶,超高性价比
E3_16G_2TB_100M_390元
L5520*2_96G_4TB_250M_550元

▇ 新加坡100M带宽,延迟80ms
E3_8G_1TB_100M_5IP_800元

▇ 香港10M独享,混合CN2
L5520_8G_1TB_10M_3IP_800元
L5630*2_16G_1TB_10M_3IP_900元

▇ 马来西亚,独享带宽,延迟70ms
L5630_8G_160G_10M_550元
L5640_16G_1TB _30M_700元

更多促销好货,关注页面:
https://www.yunzz.net/p/specials.html?web

联系QQ: 610000152
推广员:ftp162618d

以上是关于AT_abc_264_g的主要内容,如果未能解决你的问题,请参考以下文章

AT_abc106_d [ABC106D] AtCoder Express 2 题解

x264

x264代码剖析:encode()函数之x264_encoder_close()函数

x264代码剖析:encode()函数之x264_encoder_encode()函数

FFmpeg 中不同的 h264 编码器

ffmpeg 3.2.4 + libx264 windows 编译总结