UVa 517 Word

发布时间:2026/7/14 7:52:06

UVa 517 Word
题目描述题目要求模拟一个长度为nnn的循环单词的演化过程。单词由字母a和b组成循环意味着首尾相邻。每个位置iii的下一状态由该位置及其左右邻居位置i−2i-2i−2、iii、i1i1i1的当前字母共同决定共有2382^3 8238种可能组合每种组合对应一个输出字母a或b。给定初始单词和演化步数ssssss可达2×1092 \times 10^92×109输出经过sss步后字典序最小的循环等价单词。输入格式每个数据块包含第一行整数nnn2n162 n 162n16。第二行长度为nnn的字符串由a和b组成。接下来888行每行一个长度为444的字符串c1c2c3c4c_1c_2c_3c_4c1​c2​c3​c4​表示规则若模式c1c2c3c_1c_2c_3c1​c2​c3​匹配则输出c4c_4c4​。最后一行整数sss0≤s≤2×1090 \le s \le 2 \times 10^90≤s≤2×109。输入以文件结束符EOF\texttt{EOF}EOF终止。输出格式对于每个数据块输出一行即sss步后字典序最小的循环等价单词。样例输入5 aaaaa aaaa aaab aabb abab abbb baab bbab bbbb 1输出bbbbb题目分析本题的核心是模拟循环单词的演化并利用状态循环加速。状态表示由于n16n 16n16每个单词可以用一个161616位整数表示000表示a111表示b。总状态数最多216655362^{16} 6553621665536可以存储。演化规则对于每个位置iii需要获取三个位置的字母i−2i-2i−2、iii、i1i1i1模nnn。这三个位组成一个333位二进制数kkk然后根据规则表rules[k]\textit{rules}[k]rules[k]得到新位。所有位置同时更新。循环检测由于状态数有限经过一定步数后必然进入循环。使用数组steps[state]\textit{steps}[state]steps[state]记录每个状态首次出现的步数。模拟过程中若当前状态已出现过则进入循环可直接计算出sss步后的状态。否则继续模拟。输出最终状态表示为二进制字符串生成所有循环移位取字典序最小的输出ab。复杂度分析预处理规则O(1)O(1)O(1)模拟最多655366553665536步之后查询O(1)O(1)O(1)可接受。代码实现// Word// UVa ID: 517// Verdict: Accepted// Submission Date: 2016-12-24// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;constintMAXN116;intrules[8],steps[MAXN],indexer[MAXN];intmain(){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intn,s;string word,rule;while(cinn){cinword;intw0;for(inti0;iword.length();i){w*2;if(word[i]b)w;}for(inti1;i8;i){cinrule;intr0;for(intj0;jrule.length()-1;j){r*2;if(rule[j]b)r;}rules[r]rule.back()-a;}cins;memset(steps,-1,sizeof(steps));for(inti0;is;i){if(steps[w]0){intt(s-i)%(i-steps[w]);windexer[steps[w]t];break;}else{steps[w]i;indexer[i]w;intww0;for(intj0;jn;j){intk0;if((1(j2)%n)w)k4;if((1j)w)k2;if((1((j-1n)%n))w)k1;ww|(rules[k]j);}www;}}wordbitset16(w).to_string().substr(16-n);setstringwords;string wordwordwordword;for(inti0;iword.length();i)words.insert(wordword.substr(i,word.length()));word*(words.begin());for(inti0;iword.length();i){if(word[i]0)couta;elsecoutb;}cout\n;}return0;}

相关新闻

【QT】国产化编译指南7

【QT】国产化编译指南7

2026/7/8 2:54:21

qt-everywhere-opensource5.12.6.zip与.tar.xz的区别qt-everywhere-opensource-src-5.12.6.zip 和 qt-everywhere-opensource-src-5.12.6.tar.xz 是 Qt 5.12.6 开源完整源码包的两种不同压缩格式,核心内容(源码文件)完全一致,主要…

在 PMP(项目管理专业人士)考试中,“领导力、团队建设、冲突管理、利益相关者参与”构成了人(People)这一核心领域的核心考点

在 PMP(项目管理专业人士)考试中,“领导力、团队建设、冲突管理、利益相关者参与”构成了人(People)这一核心领域的核心考点

2026/7/8 12:58:27

在 PMP(项目管理专业人士)考试中,“领导力、团队建设、冲突管理、利益相关者参与”构成了人(People)这一核心领域的核心考点(在考题中占比高达 42%)。尤其在敏捷(Agile)和…

【QT】国产化编译指南6

【QT】国产化编译指南6

2026/7/8 16:59:17

rmp系统能用yum吗在 Linux 系统中,通常是 “RPM 包管理系统”(使用.rpm 格式包的系统,如 CentOS、RHEL、Fedora 等),这类系统可以使用 yum。yum(Yellowdog Updater Modified)是基于 RPM 包管理的…

光伏发电GHI估算的无监督学习方法与实践

光伏发电GHI估算的无监督学习方法与实践

2026/7/14 7:47:06

1. 光伏功率测量与全局水平辐照度估算的背景与挑战在光伏发电系统中,准确估算全局水平辐照度(GHI)是评估系统性能和预测发电量的关键环节。传统方法通常依赖地面气象站或卫星遥感数据,但这些方法存在成本高、空间分辨率有限等问题…

micro-analytics-cli API完全手册:掌握数据追踪与查询的核心方法

micro-analytics-cli API完全手册:掌握数据追踪与查询的核心方法

2026/7/14 7:47:06

micro-analytics-cli API完全手册:掌握数据追踪与查询的核心方法 【免费下载链接】micro-analytics-cli Public analytics as a Node.js microservice. No sysadmin experience required! 📈 项目地址: https://gitcode.com/gh_mirrors/mi/micro-analy…

Unity渐变纹理Shader:从原理到实战,打造高级UI与特效视觉

Unity渐变纹理Shader:从原理到实战,打造高级UI与特效视觉

2026/7/14 7:47:06

1. 项目概述:为什么渐变纹理是UI与特效的“氛围感”利器在游戏和交互应用的视觉呈现中,我们常常陷入一种“非黑即白”的困境:一个按钮要么是纯色,要么是静态贴图;一个特效要么是生硬的边缘,要么是突兀的闪烁…

Tobias插件架构设计:深入理解Flutter平台通道与支付宝SDK集成

Tobias插件架构设计:深入理解Flutter平台通道与支付宝SDK集成

2026/7/14 7:47:06

Tobias插件架构设计:深入理解Flutter平台通道与支付宝SDK集成 【免费下载链接】tobias AliPay For Flutter.支付宝Flutter插件 项目地址: https://gitcode.com/gh_mirrors/tob/tobias Tobias是一个专为Flutter开发者打造的支付宝集成插件,通过高效…

AI绘画角色一致性生成:从Stable Diffusion基础到实战应用

AI绘画角色一致性生成:从Stable Diffusion基础到实战应用

2026/7/14 7:47:06

最近在AI绘画圈子里,一个名为"少女与百合"的项目突然火了起来。不少开发者发现,这个看似简单的AI美女生成项目,实际上隐藏着不少值得关注的技术细节。如果你正在寻找一个既能快速上手,又具备一定技术深度的AI绘画实践案…

kspack-rust在微服务架构中的应用:分布式系统中的数据交换指南

kspack-rust在微服务架构中的应用:分布式系统中的数据交换指南

2026/7/14 7:36:58

kspack-rust在微服务架构中的应用:分布式系统中的数据交换指南 【免费下载链接】kspack-rust The components for structure data encode and decode with Rust 项目地址: https://gitcode.com/openeuler/kspack-rust 前往项目官网免费下载:https…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/13 7:41:16

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/13 20:43:10

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

2026/7/14 0:06:37

1. 项目概述:当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”,我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏,却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am…

2026普通文员学数据分析的价值

2026普通文员学数据分析的价值

2026/7/14 0:06:37

一、2026年普通文员学习数据分析的必要性随着数字化转型加速,数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力,并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公:通过数据分析工具&a…

2026从计划员到主管,生产管理者学数据分析有用吗?

2026从计划员到主管,生产管理者学数据分析有用吗?

2026/7/14 0:06:37

一、生产管理领域的职业发展路径 从计划员到主管的角色转变,是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作,而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&…