标签:code Contest 题解 KEYENCE Programming 常数 倍增
比赛链接:https://atcoder.jp/contests/keyence2021
F - Keyence Repetition
设 \(f_i\) 是第 \(i\) 个字符再哪个循环里。显然 \(f_i\le f_{i+1}\),那么我们只需要确定有几个严格 \(<\) 即可,其他都取等。这样方案数就是 \(\binom{n}{m}\),其中 \(m\) 是不同的数的个数。那么这个显然可以 \(dp[l][r][state_l][state_r]\) 代表 \([l,r]\) 这一段,左边在循环中的状态是 state_l,右边是 state_r 的多项式。这样直接分治复杂度 \(O(27nlog^2n)\) 勉强能冲。
然后发现除了 e 的部分都不需要那个 27 的常数,而 e 的部分又可以倍增,于是常数就下来了。然后又发现倍增可以和枚举状态分开了,于是就 \(O(kn+n\log n)\) 了。
code(当然是前者,后者狗都不写)。
标签:code,Contest,题解,KEYENCE,Programming,常数,倍增 来源: https://www.cnblogs.com/zcr-blog/p/15807859.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。