P11284 「GFOI Round 2」Strings 题解

发布于 2026-08-05 21:06 1777 字 9 min read

AGC047E Product Simulation 题解AGC041C Domino Quality 题解P17781 千早爱音不是罪过 题解P17802 [CXOI2026] 想要变成鹰的鱼 题解P17801 [CXOI2026] 大潘小潘向前 p 题解P17800 [CXOI R7-D] 使一颗心不免哀伤 题解P17798 [CXOI R7-B2] 晴涵梦(Hard Version) 题解P17796 [CXOI R7-A] 追忆岁月 题解P17797 [CXOI R7-B1] 晴涵梦(Easy Version) 题解P3838 [IOI 2017] Toy Train 题解P14238 [CCPC 2024 Shandong I] 三角形 题解P15942 [JOI Final 2026] 赌场 / Casino 题解P13184 [GCJ 2017 Finals] Teleporters 题解P17571 「FAOI-R(-2)」数列计数 2024 题解P17618 [Math+Girl×1] dancing With Myself in the sunset / Wheels Mst 题解CF2262E Paired Bracket Sequences 题解CF2246F Whoname and Unsorted Array 题解CF2248F Matrix Elimination 题解AT_arc227_f [ARC227F] Erase and Raise 题解P15992 [PA 2026] 原题加强 2 / Wersja dla profesjonalistów 2 题解P14490 [集训队互测 2018] 小修和小栋猜数字 题解P15001 摧毁时间线 题解CF955F Heaps 题解AT_arc226_d [ARC226D] Penta-Queue 题解AT_arc086_c [ARC086E] Smuggling Marbles 题解P13708 [NWERC 2023] Isolated Island 题解P9483 [NOI2023] 合并书本 题解CF2245G NPC Challenge 题解CF1354G Find a Gift 题解CF1266F Almost Same Distance 题解CF1976F Remove Bridges 题解CF1633F Perfect Matching 题解CF1303G Sum of Prefix Sums 题解CF1307F Cow and Vacation 题解CF1413F Roads and Ramen 题解CF1957F2 Frequency Mismatch (Hard Version) 题解P10546 [THUPC 2024 决赛] 采矿 题解P11018 Monochrome Tree 题解P11149 [THUWC 2018] 城市规划 题解P12692 BZOJ3784 树上的路径 题解P14828 彻彻崩 题解P15076 [ICPC 2024 Chengdu R] Disrupting Communications 题解P17141 [NOI 2026] 传送 题解P5327 [ZJOI2019] 语言 题解P6018 [Ynoi2010] Fusion tree 题解CF1572D Bridge Club 题解CF1268E Happy Cactus 题解CF1299D Around the World 题解P14383 [JOISC 2017] 港口设施 / Port Facility 题解P14019 [ICPC 2024 Nanjing R] 地铁 题解AT_utpc2023_p Priority Queue 3 题解CF1264E Beautiful League 题解AT_agc036_f [AGC036F] Square Constraints 题解P11613 [PA 2016] 覆盖 / Pokrycia 题解P13153 [GCJ 2018 Finals] Jurisdiction Restrictions 题解P10896 移言丁真:Unavoided linyue 题解P11284 「GFOI Round 2」Strings 题解AT_agc029_f [AGC029F] Construction of a tree 题解AT_agc038_f [AGC038F] Two Permutations 题解AT_agc056_c [AGC056C] 01 Balanced 题解AT_arc158_d [ARC158D] Equation 题解CF1061E Politics 题解CF1146G Zoning Restrictions 题解CF1278F Cards 题解CF1286E Fedya the Potter Strikes Back 题解CF1525F Goblins And Gnomes 题解CF1548C The Three Little Pigs 题解CF1762E Tree Sum 题解CF1765C Card Guessing 题解CF1766F MCF 题解CF1842G Tenzing and Random Operations 题解CF2068K Amusement Park Rides 题解CF708D Incorrect Flow 题解CF843E Maximum Flow 题解P10573 [JRKSJ R8] C0mp0nents 题解P10992 [蓝桥杯 2023 国 Python A] 最长同类子串 题解P11531 [THUPC 2025 初赛] 检查站 题解P13583 [NWRRC 2023] Colorful Village 题解P14170 二分图最大匹配期望 题解P14368 [JOISC 2018] 修行 / Asceticism 题解P4055 [JSOI2009] 游戏 题解P4152 [WC2014] 时空穿梭 题解P5287 [HNOI2019] JOJO 题解P5770 [JSOI2016] 无界单词 题解P6031 CF1278F Cards 加强版 题解P6698 [BalticOI 2020] 病毒 (Day2) 题解P7361 「JZOI-1」拜神 题解P9374 「DROI」Round 2 单图 题解P9523 [JOIST 2022] 复制粘贴 3 / Copy and Paste 3 题解P9682 Electro Master 题解P12468 [Math×Girl] 距离 题解CF1101F Trucks and Cities 题解CF1392G Omkar and Pies 题解CF1442D Sum 题解CF1780E Josuke and Complete Graph 题解CF845F Guards In The Storehouse 题解P10084 [GDKOI2024 提高组] 计算 题解P10085 [GDKOI2024 提高组] 染色 题解P11425 [清华集训 2024] 路南柯 题解P11444 [Code+#6] 祖玛 题解P11458 [USACO24DEC] All Pairs Similarity P 题解P11459 [USACO24DEC] It's Mooin' Time P 题解P11678 [USACO25JAN] Watering the Plants P 题解P12074 [OOI 2025] The arithmetic exercise 题解P12706 蜜蜂构造题 题解P13691 [CEOI 2025] highest 题解P13939 [EC Final 2019] Black and White 题解P14106 [ZJCPC 2017] Yet Another Game of Stones 题解P14198 [ICPC 2024 Hangzhou R] Let's Go! New Adventure 题解P14344 [JOISC 2019] 两道料理 / Two Dishes 题解P14347 [JOISC 2019] 灯 / Lamps 题解P14388 [JOISC 2017] 长途巴士 / Long Distance Coach 题解P15077 [ICPC 2024 Chengdu R] Double 11 题解P15108 白井黑子 题解P15301 [ROI 2012 Day 2] army 汗国军队 题解P16160 [ICPC 2016 NAIPC] Jewel Thief 题解P16329 bloom 题解P3665 [USACO17OPEN] Switch Grass P 题解P5400 [CTS2019] 随机立方体 题解P6965 [NEERC 2016] Binary Code 题解P7843 「C.E.L.U-03」布尔 题解P7985 [USACO21DEC] Paired Up P 题解P9139 [THUPC 2023 初赛] 喵了个喵 II 题解P9225 「PEOI Rd1」寻宝(treasure) 题解P9338 [JOIST 2023] 合唱 / Chorus 题解P9962 [THUPC 2024 初赛] 一棵树 题解P3421 [POI 2005] SKO-Knights 题解P13540 [IOI 2025] 羊驼的坎坷之旅(obstacles) 题解P6794 [SNOI2020] 水池 题解P5101 [JOI 2017 Final] 绳 / Rope 题解P9499 「RiOI-2」change 题解P2145 [JSOI2007] 祖玛 题解CF2245F Familiar? 题解CF1239B The World Is Just a Programming Task (Hard Version) 题解P10803 [CEOI 2024] 文本编辑器 题解CF1312G Autocompletion 题解AT_agc049_d [AGC049D] Convex Sequence 题解AT_abc257_h [ABC257Ex] Dice Sum 2 题解AT_abc270_h [ABC270Ex] add 1 题解AT_arc165_e [ARC165E] Random Isolation 题解CF1025G Company Acquisitions 题解CF1349D Slime and Biscuits 题解CF1392F Omkar and Landslide 题解CF1733E Conveyor 题解CF1819D Misha and Apples 题解CF1823F Random Walk 题解CF1919F2 Wine Factory (Hard Version) 题解CF436E Cardboard Box 题解CF850F Rainbow Balls 题解CF869E The Untended Antiquity 题解P10587 「ALFR Round 2」C 小 Y 的数 题解P11191 「KDOI-10」超级演出 题解P11660 我终将成为你的倒影 题解P12479 [集训队互测 2024] 长野原龙势流星群 题解P12587 「KTSC 2019 R2」外星仙人掌 题解P13552 鱼类考古学 题解P13780 「o.OI R2」愿天堂没有分块 题解P14268 [ROI 2015 Day2] 路灯 题解P14761 [Opoi 2025] CCD 的序列 题解P15672 [ICPC 2024 Jakarta R] Narrower Passageway 题解P17145 [NOI 2026] 彩虹树 题解P2235 [HNOI2002] Kathy函数 题解P2284 [HNOI2003] 密室之门 题解P2305 [NOI2014] 购票 题解P3345 [ZJOI2015] 幻想乡战略游戏 题解P3546 [POI 2012] PRE-Prefixuffix 题解P3706 [SDOI2017] 硬币游戏 题解P3920 [WC2014] 紫荆花之恋 题解P4098 [HEOI2013] ALO 题解P4220 [WC2018] 通道 题解P4292 [WC2010] 重建计划 题解P5278 算术天才⑨与等差数列 题解P5524 [Ynoi2012] NOIP2015 充满了希望 题解P5953 [POI 2018] Różnorodność 题解P7215 [JOISC 2020] 首都 题解P8684 [蓝桥杯 2019 省 B] 灵能传输 题解P9965 [THUPC 2024 初赛] 转化 题解P14606 [NWRRC 2025] Games of Chess 题解P11164 [BalkanOI 2023] Permutations 题解P14211 [ROI 2016 Day2] 快递服务 题解P13618 [ICPC 2024 APC] Bánh Bò 题解CF2242F Summer Vacation 题解CF2242E Product of Closures 题解P17064 [JRKSJ R10 热身赛] Infinite Strife, 题解P10103 [GDKOI2023 提高组] 错排 题解CF1033E Hidden Bipartite Graph 题解P17002 [NWERC 2019] 无用交换机 / Disposable Switches 题解CF493E Vasya and Polynomial 题解P11812 [PA 2015] 精确打击 / Kontrmanifestacja 题解P16942 「LAOI-18」铃喵 题解P11815 [PA 2019 Final] 领地 / Terytoria 题解CF1450E Capitalism 题解CF1654F Minimal String Xoration 题解P1001 A+B Problem 题解P14510 夜里亦始终想念着你 miss 题解P16910 「MierOI R2」靈 题解P15419 「yrOI R1」冬日永恒 题解CF1884E Hard Design 题解P15421 像你这样的朋友 题解P16637 春季限定独立集问题 题解P15479 [CERC2012] Non-boring sequences 题解CF1107F Vasya and Endless Credits 题解CF1260F Colored Tree 题解CF1129C Morse Code 题解P5904 [POI 2014] HOT-Hotels 加强版 题解P12866 [JOI Open 2025] 抽奖 / Lottery 题解P12441 [NERC2023] Joy of Pokémon Observation 题解CF1418F Equal Product 题解P16362 [BalticOI 2026] Sort 题解P16433 [APIO 2026 中国赛区] 上升 题解CF1325F Ehab's Last Theorem 题解P12293 [蓝桥杯 2024 国 Java A] 合并小球 题解P11288 [COTS 2017] 模板 Z1 题解P12936 [NERC 2019] Cactus Revenge 题解P16357 [BalticOI 2026] Blocks 题解P13233 [GCJ 2015 Finals] Costly Binary Search 题解AT_arc136_d [ARC136D] Without Carry 题解CF1508E Tree Calendar 题解P9850 [ICPC 2021 Nanjing R] Ancient Magic Circle in Teyvat 题解P6766 [APIO2020] 有趣的旅途 题解CF1444C Team-Building 题解P6009 [USACO20JAN] Non-Decreasing Subsequences P 题解AT_arc122_d [ARC122D] XOR Game 题解AT_abc450_g [ABC450G] Random Subtraction 题解P15502 [ICPC 2025 APC] Book Sorting 题解P15555 [CCPC 2025 哈尔滨站] 比赛 题解CF850D Tournament Construction 题解CF1404D Game of Pairs 题解CF1545C AquaMoon and Permutations 题解CF1830D Mex Tree 题解CF1379E Inverse Genealogy 题解CF1612G Max Sum Array 题解CF1613F Tree Coloring 题解CF1620F Bipartite Array 题解CF1622F Quadratic Set 题解AT_arc127_e [ARC127E] Priority Queue 题解CF1632E2 Distance Tree (hard version) 题解CF1582G Kuzya and Homework 题解CF1623E Middle Duplication 题解CF1679F Formalism for Formalism 题解CF1626F A Random Code Problem 题解CF1734F Zeros and Ones 题解P15653 [省选联考 2026] 星图 题解AT_agc071_c [AGC071C] Orientable as Desired 题解CF1097G Vladislav and a Great Legend 题解CF1579G Minimal Coverage 题解CF1598F RBS 题解CF1614D1 Divan and Kostomuksha (hard version) / CF1614D2 Divan and Kostomuksha (hard version) 题解CF1768E Partial Sorting 题解CF2204G Grid Path 题解CF521D Shop 题解CF852A Digits 题解P15741 [JAG 2024 Summer Camp #2] Max Sum of GCD 题解P15761 [JAG 2025 Summer Camp #1] Colored Tree and Path 题解P3644 [APIO2015] 巴邻旁之桥 题解CF1656F Parametric MST 题解CF1906C Cursed Game 题解CF331D3 Escaping on Beaveractor 题解CF1975G Zimpha Fan Club 题解CF641F Little Artem and 2-SAT 题解CF1344F Piet's Palette 题解CF1381D The Majestic Brown Tree Snake 题解CF1411F The Thorny Path 题解CF1408H Rainbow Triples 题解P15416 「yrOI R1」夏日已逝 题解P15265 [USACO26JAN2] Dynamic Instability P 题解AT_awc0001_a バクテリアの増殖実験 题解P15235 「CROI · R3」浣熊的小游戏 题解P10741 [SEERC 2020] Fence Job 题解AT_ajo2024_final_c Final Exam 题解P9535 [YsOI2023] 连通图计数 题解P15191 [SWERC 2019] Pseudo-Random Number Generator 题解SP27098 FN16OIL - Oil 题解P1691 [ICPC 2016 WF] Oil 题解CF1776I Spinach Pizza 题解P15164 [SWERC 2022] Spinach Pizza 题解CF1730D Prefixes and Suffixes 题解CF1693D Decinc Dividing 题解CF1144G Two Merged Sequences 题解CF1600F Party Organization 题解CF1929E Sasha and the Happy Tree Cutting 题解P5172 [清华集训 2014] Sum 题解P12417 基础构造练习题 1 题解CF1691F K-Set Tree 题解CF2048G Kevin and Matrices 题解P10871 [COTS 2022] 皇后 Kraljice 题解P14610 [NWRRC 2025] Keys and Grates 题解P14564 圆环 题解P14421 [JOISC 2014] 拉面比较 / Ramen 题解P14300 [JOI2023 预选赛 R2] 货物列车 / Freight Train 题解P14415 [JOISC 2015] 遗产继承 / Inheritance 题解P7974 [KSN2021] Delivering Balls 题解P10665 [AMPPZ2013] Bytehattan 题解P9920 「RiOI-3」变换,反演 题解P10045 [CCPC 2023 北京市赛] 线段树 题解P6012 [P5087] 数学 加强版 题解CF2085F2 Serval and Colorful Array (Hard Version) 题解P10756 [COI 2023] Sličnost 题解P3641 [APIO2016] 最大差分 题解P6790 [SNOI2020] 生成树 题解P10832 [COTS 2023] 传 Mapa 题解P14449 [ICPC 2025 Xi'an R] Catch the Monster 题解P14315 [Aboi Round 2] Faputa 题解P5667 拉格朗日插值2 题解CF2163D1 Diadrash (Easy Version) 题解CF2163D2 Diadrash (Hard Version) 题解CF622F The Sum of the k-th Powers 题解P11536 [NOISG 2023 Finals] Curtains 题解P11620 [Ynoi Easy Round 2025] TEST_34 题解P14455 [ICPC 2025 Xi'an R] Imagined Holly 题解P1993 小 K 的农场 题解P3430 [POI 2005] DWU-Double-row 题解P5290 [十二省联考 2019] 春节十二响 题解P5395 第二类斯特林数·行 题解P5396 第二类斯特林数·列 题解P5408 第一类斯特林数·行 题解P6130 随机红包 题解P6898 [ICPC 2014 WF] Metal Processing Plant 题解P7624 [AHOI2021初中组] 地铁 题解P7962 [NOIP2021] 方差 题解P8321 『JROI-4』沈阳大街 2 题解P7315 [COCI 2018/2019 #3] Sajam 题解P5621 [DBOI2019] 德丽莎世界第一可爱 题解P14224 [ICPC 2024 Kunming I] 子数组 题解CF720A Closing ceremony 题解P14303 [GCJ 2011 Finals] Runs 加强版 题解P13382 [GCJ 2011 Finals] Runs 题解SP3912 MTREECOL - Color a tree 题解CF946E Largest Beautiful Number 题解AT_agc003_e [AGC003E] Sequential operations on Sequence 题解P5955 [POI 2018] Pionek 题解P10671 BZOJ1278 向量 vector 题解P12766 [POI 2018 R3] 完备数 Complete numbers 题解P10664 BZOJ3328 PYXFIB 题解P14185 回文子串划分计数 题解CF932G Palindrome Partition 题解AT_abc230_g [ABC230G] GCD Permutation 题解CF870E Points, Lines and Ready-made Titles 题解P7561 [JOISC 2021] 道路の建設案 (Road Construction) (Day2) 题解P14162 [ICPC 2022 Nanjing R] 完美匹配 题解P14154 [ICPC 2022 Nanjing R] 索道 题解P14153 [ICPC 2022 Nanjing R] 停停,昨日请不要再重现 题解P14159 [ICPC 2022 Nanjing R] 邪恶铭刻 题解P14156 [ICPC 2022 Nanjing R] 聊天程序 题解P14161 [ICPC 2022 Nanjing R] 完美回文 题解P14158 [ICPC 2022 Nanjing R] 三角形 题解P9849 [ICPC 2021 Nanjing R] Xingqiu's Joke 题解P9847 [ICPC 2021 Nanjing R] Crystalfly 题解CF794E Choosing Carrot 题解P13509 [OOI 2024] Almost Certainly 题解AT_arc116_f [ARC116F] Deque Game 题解AT_agc029_b [AGC029B] Powers of two 题解P4347 [CERC2015] Book Borders 题解CF185D Visit of the Great 题解P9841 [ICPC 2021 Nanjing R] Puzzle in Inazuma 题解CF729F Financiers Game 题解CF403D Beautiful Pairs of Numbers 题解CF2133E I Yearned For The Mines 题解CF1513E Cost Equilibrium 题解CF317B Ants 题解CF1789F Serval and Brain Power 题解P6122 [NEERC 2016] Mole Tunnels 题解CF1458D Flip and Reverse 题解P13536 [IOI 2025] 神话三峰(triples)(Part 1) 题解P13271 [NOI2025] 机器人 题解AT_agc017_e [AGC017E] Jigsaw 题解P5481 [BJOI2015] 糖果 题解P3805 【模板】Manacher 题解P1943 Local Maxima 题解CF830E Perpetual Motion Machine 题解P3412 仓鼠找sugar II 题解P11073 Game King 题解CF1131G Most Dangerous Shark 题解CF2089D Conditional Operators 题解P12055 [THUPC 2025 决赛] 一个 01 串,n 次三目运算符,最后值为 1 题解P3278 [SCOI2013] 多项式的运算 题解P3272 [SCOI2011] 地板 题解P12179 DerrickLo's Game (UBC002B) 题解CF979E Kuro and Topological Parity 题解CF1919D 01 Tree 题解P4484 [BJWC2018] 最长上升子序列 题解AT_arc195_e [ARC195E] Random Tree Distance 题解B4269 [朝阳区小学组 2019] square 题解CF2091G Gleb and Boating 题解P8456 「SWTR-8」地地铁铁 题解P11952 [科大国创杯初中组 2023] 行走 题解CF2081D MST in Modulo Graph 题解CF1045C Hyperspace Highways 题解P6335 [COCI 2007/2008 #1] STAZA 题解AT_joisc2016_i 電報 题解CF2077B Finding OR Sum 题解P3050 [USACO12MAR] Large Banner G 题解P11856 [CSP-J 2022 山东] 吟诗 题解P11854 [CSP-J 2022 山东] 宴会 题解P11855 [CSP-J 2022 山东] 部署 题解CF804E The same permutation 题解CF1420D Rescue Nibel! 题解CF1996G Penacony 题解CF1951E No Palindromes 题解CF1815F OH NO1 (-2-3-4) 题解CF1977E Tensor 题解CF1943C Tree Compass 题解CF837E Vasya's Function 题解AT_arc149_c [ARC149C] Avoid Prime Sum 题解CF629D Babaei and Birthday Cake 题解CF1042F Leaf Sets 题解CF97D Robot in Basement 题解AT_arc193_a [ARC193A] Complement Interval Graph 题解P11604 [PA 2016] 卡牌 / Gra w karty 题解CF812E Sagheer and Apple Tree 题解CF1310D Tourism 题解CF1693C Keshi in Search of AmShZ 题解CF1137B Camp Schedule 题解CF1270E Divide Points 题解CF1029E Tree with Small Distances 题解CF1943B Non-Palindromic Substring 题解CF446D DZY Loves Games 题解CF1592F2 Alice and Recoloring 2 题解CF1839E Decreasing Game 题解CF1732D2 Balance (Hard version) 题解CF1732D1 Balance (Easy version) 题解CF1981D Turtle and Multiplication 题解CF40E Number Table 题解CF51E Pentagon 题解CF732F Tourist Reform 题解CF793C Mice problem 题解CF126D Fibonacci Sums 题解CF1705E Mark and Professor Koro 题解CF425D Sereja and Squares 题解CF300E Empire Strikes Back 题解CF364C Beautiful Set 题解CF898F Restoring the Expression 题解CF908G New Year and Original Order 题解CF460D Little Victor and Set 题解CF895E Eyes Closed 题解CF1967C Fenwick Tree 题解CF607C Marbles 题解CF1411E Poman Numbers 题解CF1623D Robot Cleaner Revisit 题解CF178F3 Representative Sampling 题解CF1605D Treelabeling 题解CF2056D Unique Median 题解CF1983F array-value 题解CF1238E Keyboard Purchase 题解CF1553F Pairwise Modulo 题解CF484B Maximum Value 题解CF1470D Strange Housing 题解CF1498E Two Houses 题解CF1923E Count Paths 题解CF2049E Broken Queries 题解CF147B Smile House 题解CF1712E1 LCM Sum (easy version) 题解CF1646E Power Board 题解AT_tdpc_tree 木 题解AT_tdpc_lexicographical 辞書順 题解CF2036G Library of Magic 题解CF1834D Survey in Class 题解CF1884D Counting Rhyme 题解CF1886D Monocarp and the Set 题解CF1617D1 Too Many Impostors (easy version) 题解CF1780D Bit Guessing Game 题解CF1804D Accommodation 题解CF1796D Maximum Subarray 题解CF2030B Minimise Oneness 题解CF2030D QED's Favorite Permutation 题解CF1731E Graph Cost 题解CF1442C Graph Transpositions 题解CF1165F1 Microtransactions (easy version) 题解CF1165F2 Microtransactions (hard version) 题解CF1481D AB Graph 题解AT_joi2018ho_e 毒蛇の脱走 (Snake Escaping) 题解P7670 [JOI 2018 Final] 毒蛇越狱 / Snake Escaping 题解P7669 [JOI 2018 Final] 月票购买 / Commuter Pass 题解AT_joi2018ho_d 定期券 (Commuter Pass) 题解CF1358E Are You Fired? 题解CF1453E Dog Snacks 题解P11078 「FSLOI Round I」迷雾 题解P2998 [USACO10NOV] Candy S 题解P10895 选择困难症 题解CF1619E MEX and Increments 题解CF888D Almost Identity Permutations 题解CF863E Turn Off The TV 题解
编辑文章

隐藏/恢复文章

P11284 「GFOI Round 2」Strings 题解

仅站主 0103abc 可操作。创建 GitHub 令牌,只授权此仓库的 Contents 读写权限。

部分内容参考了该题解。 大的来了。 题目的条件可以看作是存在整数 $l$ 满足 $3l\le k$ 且前 $2l$ 个数构成回文串,因此问题可以看作是统计长度不超过 $n$ 的序列中存在一个足够短的偶数长度回文前缀的序列数量。 考虑 dp,设 $fi$ 表示长度为 $2i$ 且最短偶回文串恰好为整个串的序列的数量。长度为 $2i$ 的回文串一共有 $m^i$...

部分内容参考了该题解。

大的来了。

题目的条件可以看作是存在整数 ll 满足 3l≤k3l\le k 且前 2l2l 个数构成回文串,因此问题可以看作是统计长度不超过 nn 的序列中存在一个足够短的偶数长度回文前缀的序列数量。

考虑 dp,设 fif_i 表示长度为 2i2i 且最短偶回文串恰好为整个串的序列的数量。长度为 2i2i 的回文串一共有 mim^i 个,但是其中某些回文串可能有更短的偶回文前缀。假设最短回文前缀的长度为 2j2j,则序列的前 2j2j 位有 fjf_j 种填写方案,为了将其补全成长度为 2i2i 的回文串,中间还有 i−2ji-2j 个位置可以随便填,因此该类的不合法方案数就是 fjmi−2jf_jm^{i-2j} 种。

把上面东西合起来写可以得到递推式 fi=mi−∑j=1⌊i2⌋fjmi−2jf_i=m^i-\sum\limits_{j=1}^{\lfloor\frac i2\rfloor}f_jm^{i-2j}。

然后考虑枚举最短回文前缀的长度 2l2l。序列的总长度为 kk 时因为要求 3l≤k3l\le k,而前 2l2l 位有 flf_l 种填法,后 k−2lk-2l 位随便填,方案数就是 flmk−2lf_lm^{k-2l}。

因此总的答案就是 ∑i=1⌊n3⌋fi∑k=3inmk−2i\sum\limits_{i=1}^{\lfloor\frac n3\rfloor}f_i\sum\limits_{k=3i}^nm^{k-2i},直接算时间复杂度是 O(n2)O(n^2) 的,考虑优化。答案内层是一个等比数列求和的形式,因此还可以被表示为 ∑i=1⌊n3⌋fimi−mn−2i+11−m\sum\limits_{i=1}^{\lfloor\frac n3\rfloor}f_i\frac{m^i-m^{n-2i+1}}{1-m} 的形式,也就是 11−m(∑i=1⌊n3⌋fimi−∑i=1⌊n3⌋fimn−2i+1)\frac1{1-m}(\sum\limits_{i=1}^{\lfloor\frac n3\rfloor}f_im^i-\sum\limits_{i=1}^{\lfloor\frac n3\rfloor}f_im^{n-2i+1}),求和部分可以优化到线性时间复杂度。

(我想到这里就不会了)

记 S(n,t)=∑i=1nfimtiS(n,t)=\sum\limits_{i=1}^nf_im^{ti},则答案可以表示为 S(⌊n3⌋,1)−mn+1S(⌊n3⌋,−2)1−m\frac{S(\lfloor\frac n3\rfloor,1)-m^{n+1}S(\lfloor\frac n3\rfloor,-2)}{1-m} 的形式。

先考虑怎么优化递推的时间复杂度。已知 fl=ml−∑i=1⌊l2⌋fiml−2if_l=m^l-\sum\limits_{i=1}^{\lfloor\frac l2\rfloor}f_im^{l-2i},则把递推公式直接带入到 S(∗,∗)S(*,*) 中,可得 S(n,t)=∑l=1n(ml−∑i=1⌊l2⌋fiml−2i)mtl=∑i=1nmlmtl−∑l=1n∑i=1⌊l2⌋fiml−2imtl=m(t+1)l−∑l=1n∑i=1⌊l2⌋fim(t+1)l−2iS(n,t)=\sum\limits_{l=1}^n(m^l-\sum\limits_{i=1}^{\lfloor\frac l2\rfloor}f_im^{l-2i})m^{tl}=\sum\limits_{i=1}^nm^lm^{tl}-\sum\limits_{l=1}^n\sum\limits_{i=1}^{\lfloor\frac l2\rfloor}f_im^{l-2i}m^{tl}=m^{(t+1)l}-\sum\limits_{l=1}^n\sum\limits_{i=1}^{\lfloor\frac l2\rfloor}f_im^{(t+1)l-2i}。

现在考虑怎么优化算 ∑l=1n∑i=1⌊l2⌋fim(t+1)l−2i\sum\limits_{l=1}^n\sum\limits_{i=1}^{\lfloor\frac l2\rfloor}f_im^{(t+1)l-2i} 的值。考虑交换求和顺序,可得 ∑i=1⌊n2⌋∑l=2infim(t+1)l−2i=∑i=1⌊n2⌋fim−2i∑l=2inm(t+1)l\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}\sum\limits_{l=2i}^nf_im^{(t+1)l-2i}=\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}f_im^{-2i}\sum\limits_{l=2i}^nm^{(t+1)l}。换元记 q=mt+1q=m^{t+1},则内层求和可以看作是 ∑l=2inql=q2i−qn+11−q\sum\limits_{l=2i}^nq^l=\frac{q^{2i}-q^{n+1}}{1-q},因此双重和式的值为 ∑i=1⌊n2⌋fim−2iq2i−qn+11−q=11−q(∑i=1⌊n2⌋fim−2iq2i−qn+1∑i=1⌊n2⌋fim−2i)\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}f_im^{-2i}\frac{q^{2i}-q^{n+1}}{1-q}=\frac{1}{1-q}(\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}f_im^{-2i}q^{2i}-q^{n+1}\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}f_im^{-2i})。

然后考虑分别算两个求和的值。第一个求和中,m−2iq2i=m−2i(mt+1)2i=m2tim^{-2i}q^{2i}=m^{-2i}(m^{t+1})^{2i}=m^{2ti},因此第一项可以变为 ∑i=1⌊n2⌋fim2ti=S(⌊n2⌋,2t)\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}f_im^{2ti}=S(\lfloor\frac n2\rfloor,2t);第二个求和中 ∑i=1⌊n2⌋fim−2i=S(⌊n2⌋,−2)\sum\limits_{i=1}^{\lfloor\frac n2\rfloor}f_im^{-2i}=S(\lfloor\frac n2\rfloor,-2)。又因为 qn+1=m(n+1)(t+1),∑l=1nm(t+1)l=mt+1−m(n+1)(t+1)1−mt+1q^{n+1}=m^{(n+1)(t+1)},\sum\limits_{l=1}^nm^{(t+1)l}=\frac{m^{t+1}-m^{(n+1)(t+1)}}{1-m^{t+1}},因此可得整个双重和式的值为 S(n,t)=mt+1−m(n+1)(t+1)1−mt+1−S(⌊n2⌋,2t)−m(n+1)(t+1)S(⌊n2⌋,−2)1−mt+1S(n,t)=\frac{m^{t+1}-m^{(n+1)(t+1)}}{1-m^{t+1}}-\frac{S(\lfloor\frac n2\rfloor,2t)-m^{(n+1)(t+1)}S(\lfloor\frac n2\rfloor,-2)}{1-m^{t+1}},边界情况是 S(0,t)=0S(0,t)=0。

考虑分析一下时间复杂度。看上去很爆炸,但是考虑使用记忆化搜索来优化,设递归深度为 depdep 则每次递归 nn 的值都会除以 22,因此有 dep∼O(log⁡n)dep\sim O(\log n)。而在第 dd 层可能出现的不同 tt 值的状态也只有 O(d)O(d) 级别,因此总状态数就是 ∑d=0O(log⁡n)O(d)=O(log⁡2n)\sum\limits_{d=0}^{O(\log n)}O(d)=O(\log^2n) 的。每次递归内层还需要做快速幂和记忆化(需要开 map 维护)等操作,因此总时间复杂度可以近似看作是 O(log⁡3n)O(\log^3n) 级别的。

需要单独处理 mt+1≡1(mod109+7)m^{t+1}\equiv 1\pmod{10^9+7} 的情况,这个时候不能直接套上面的公式除过去,需要做一些特殊的处理。

递推过程中可能出问题的地方有下面三类:1m,11−m,11−mt+1\frac 1m,\frac1{1-m},\frac1{1-m^{t+1}},考虑什么时候会出现问题:

第一类显然当且仅当 m≡0(mod109+7)m\equiv 0\pmod{10^9+7} 时会出问题,第二类显然当且仅当 m≡1(mod109+7)m\equiv 1\pmod{10^9+7} 时会出问题,第三类比较困难,可以想到如果 m≡1(mod109+7)m\equiv 1\pmod{10^9+7} 或 m≡−1(mod109+7)m\equiv -1\pmod{10^9+7} 时会出问题。下面可以证明会出问题的情况只有这两类,即证明除了 m≡±1(mod109+7)m\equiv \pm 1\pmod{10^9+7} 不存在其余 mm 满足 mt+1≡1(mod109+7)m^{t+1}\equiv 1\pmod{10^9+7}。考虑上述做法一开始递归的时候只会调用 S(L,1)S(L,1) 和 S(L,−2)S(L,-2) 两个值,在递归的过程中会从 S(n,t)S(n,t) 开始不停的调用 S(⌊n2⌋,2t)S(\lfloor\frac n2\rfloor,2t) 和 S(⌊n2⌋,−2)S(\lfloor\frac n2\rfloor,-2) 两个函数,因此所有可能取到的 tt 只有 t=2j(j∈N)t=2^j(j\in\mathbb N) 和 t=−2j(j∈N+)t=-2^j(j\in\mathbb N_+) 两类情况。因为递归每次回将 nn 除以 22,而题目中保证 n≤1018n\le 10^{18} 因此这里可能出现的 jj 不会超过单 log⁡\log 级别也就是 6060。

现在假设 m≢0(mod109+7)m\not\equiv 0\pmod{10^9+7},设 mm 在模 109+710^9+7 意义下的乘法群中的阶是 dd(也就是最小的满足 md≡1(mod109+7)m^d\equiv1\pmod{10^9+7} 的正整数 dd),根据费马小定理可知 d∣1000000006d\mid 1000000006,而 10000000061000000006 的质因数分解形式为 2×5000000032\times 500000003,因此 dd 的所有可能取值只有 1,2,500000003,10000000061,2,500000003,1000000006 四种。

当 d=1d=1 时显然只能取 m≡1(mod109+7)m\equiv 1\pmod{10^9+7},当 d=2d=2 时有 m2≡1(mod109+7)∧m≢1(mod109+7)m^2\equiv 1\pmod{10^9+7}\land m\not\equiv 1\pmod{10^9+7},因此只能取 m≡−1(mod109+7)m\equiv -1\pmod{10^9+7}。

比较复杂的情况是 dd 的后两个取值。如果有 mt+1≡1(mod109+7)m^{t+1}\equiv 1\pmod{10^9+7},则必有 d∣t+1d\mid t+1。当 dd 是 500000003500000003 或者 10000000061000000006 时都必然有 500000003∣t+1500000003\mid t+1。考虑对 tt 的值做分类讨论:

如果 t=2jt=2^j,则必须满足 2j+1≡0(mod500000003)2^j+1\equiv0\pmod{500000003} 即 2j≡−1(mod500000003)2^j\equiv-1\pmod{500000003};如果 t=−2jt=-2^j 则必须满足 1−2j≡0(mod500000003)1-2^j\equiv0\pmod{500000003} 即 2j≡1(mod500000003)2^j\equiv 1\pmod{500000003}。因为 ord⁡500000003(2)=500000002\operatorname{ord}_{500000003}(2)=500000002(500000002=2×412×148721500000002=2\times 41^2\times 148721 对三个质因子 q∈{2,41,148721}q\in\lbrace 2,41,148721\rbrace 验证都有 2500000002/q≢1(mod500000003)2^{500000002/q}\not\equiv 1\pmod{500000003}),因此此时必须满足 500000002∣j500000002\mid j。而 2j≡−1(mod500000003)2^j\equiv -1\pmod{500000003} 必须满足 j≡250000001(mod500000002)j\equiv 250000001\pmod{500000002}。而因为在题目限制下递归满足 j≤60j\le60,因此不需要处理后两种情况。

现在考虑特判这三个 corner case:

  • m≡0(mod109+7)m\equiv 0\pmod{10^9+7}:此时答案显然为 00。
  • m≡1(mod109+7)m\equiv 1\pmod{10^9+7}:在模意义下只有一种字符,长度 k≥3k\ge 3 的唯一序列一定满足条件,取 l=1l=1 即可。因此长度从 33 到 nn 的序列都符合条件,答案即为 n−2n-2。
  • m≡−1(mod109+7)m\equiv-1\pmod{10^9+7}:相对比较复杂的情况。设 F(x)=∑i=1xfiF(x)=\sum\limits_{i=1}^xf_i,当 m≡−1m\equiv -1 时 fi=(−1)i(1−F(⌊i2⌋))f_i=(-1)^i(1-F(\lfloor\frac i2\rfloor)),因此对 i≥1i\ge 1 有递推式 f2i=1−F(i),f2i+1=F(i)−1=−f2if_{2i}=1-F(i),f_{2i+1}=F(i)-1=-f_{2i}。因此前缀和满足 F(2i+1)=−1,F(2i)=−F(i)F(2i+1)=-1,F(2i)=-F(i)。此时再定义 G(i)=∑j=1iF(j)G(i)=\sum\limits_{j=1}^iF(j) 则因为奇数位置的 FF 都为 −1-1,偶数位置的 FF 都满足 F(2i)=−F(i)F(2i)=-F(i),因此又有递推公式 G(x)=−⌈x2⌉−G(⌊x2⌋)G(x)=-\lceil\frac x2\rceil-G(\lfloor\frac x2\rfloor)。
  • 然后考虑算答案。当 m≡−1m\equiv -1 时固定 ll 值后剩余部分的贡献为 ∑k=3ln(−1)k−2l=∑k=3ln(−1)k\sum\limits_{k=3l}^n(-1)^{k-2l}=\sum\limits_{k=3l}^n(-1)^k,只有 l≡n(mod2)l\equiv n\pmod 2 时上式的值不为 00。此时考虑进一步分类讨论:
    • 如果 2∣n2\mid n 则只需要枚举偶数 l=2il=2i,最终的答案可以表示为 ⌊L2⌋−G(⌊L2⌋)\lfloor\frac L2\rfloor-G(\lfloor\frac L2\rfloor) 的形式,其中 L=⌊n3⌋L=\lfloor\frac n3\rfloor。
    • 如果 2∤n2\nmid n 则只需要枚举奇数 l=2i+1l=2i+1,最终的答案可以表示为 ⌊L+12⌋−G(⌊L−12⌋)\lfloor\frac{L+1}2\rfloor-G(\lfloor\frac{L-1}2\rfloor) 的形式,其中 L=⌊n3⌋L=\lfloor\frac n3\rfloor。
  • 很显然 G(n)G(n) 可直接递归 O(log⁡n)O(\log n) 时间复杂度求解,因此该部分算答案的总时间复杂度也是 O(log⁡n)O(\log n) 的。

:::success[Code]

namespace lowspeed_song {

inline void init() {
}

int n, m;
map<pair<int, int>, int> mp;

inline int S(int n, int t) {
    if (!n) return 0;
    if (mp.count({n, t})) return mp[{n, t}];
    int a = power(m, ((t + 1) % (mod - 1) + mod - 1) % (mod - 1), mod), b = power(m, ((i128)(n + 1) * (t + 1) % (mod - 1) + mod - 1) % (mod - 1), mod);
    return mp[{n, t}] = inversion(mod + 1 - a) * (a - b - S(n / 2, t * 2) + mod * 2 + b * S(n / 2, -2) % mod) % mod;
}

inline int sumF(int n) {
    if (!n) return 0;
    return (mod + mod - sumF(n >> 1) - (n + 1) * i2 % mod) % mod;
}

inline int calc(int n) {
    if (n & 1) return ((n / 3 + 1) / 2 % mod + mod - sumF(n / 2)) % mod;
    return (n / 3 % mod + mod - sumF(n / 2)) % mod;
}

inline void sol() {
    cin >> n >> m; m %= mod;
    if (!m) cout << 0 << '\n';
    else if (m == 1) cout << (n - 2) % mod << '\n';
    else if (m == mod - 1) cout << calc(n) << '\n';
    else {
        mp.clear();
        cout << inversion((1 - m + mod) % mod) * (S(n / 3, 1) - power(m, n + 1, mod) * S(n / 3, -2) % mod + mod) % mod << '\n';
    }
}

} // namespace lowspeed_song

:::

喜欢的话,留下你的评论吧~

随机文章

加载中...