P4965 薇尔莉特的打字机
题目背景
只要客人有意向,不论身在何处,都能上门服务。我是自动手记人偶服务——薇尔莉特·伊芙加登。
题目描述
薇尔莉特的打字机用了太久,按键已经开始老化了,因此有时候按键会没有反应。而薇尔莉特总是盲打,因此按键没反应她也不会注意到。一天,她用这台打字机继续完成一封还没写完的信。
现在告诉你这封信已经写好的部分以及薇尔莉特想进行的操作,薇尔莉特想进行的操作有两种:
- 在信的末尾输入一个大写字母
- 进行一次退格
退格用小写字母 \mathrm{u}u 表示,即删除当前信中的最后一个字符,当然,在信为空时退格没有任何作用。
薇尔莉特会按顺序按下她想按的按键,而每次薇尔莉特按下一个键(输入一个大写字母或进行一次退格),都有可能没有反应(即这次操作无效)。请问,最后打出来的信有多少种可能呢?(空信也算信)
当然薇尔莉特只想知道可能数对
0x125E591
(十六进制) 取模的结果。输入输出格式
输入格式:
第一行两个正整数 n,\ mn, m 分别表示已经写好的信的长度和薇尔莉特想进行的操作数(字符个数+退格个数)。
第二行一个长度为 nn 的字符串表示已经写好的信,保证该串中的每个字符都为大写字母。
第三行一个长度为 mm 的字符串表示薇尔莉特想进行的操作,保证该串中的每个字符都为大写字母或 \mathrm{u}u。
输出格式:
一个整数表示答案对
0x125E591
取模的结果。输入输出样例
输入样例#1: 复制2 4 AB AuAB输出样例#1: 复制9输入样例#2: 复制10 5 AABBAACBAC ABAAC输出样例#2: 复制20输入样例#3: 复制1 3 U uUu输出样例#3: 复制3说明
1\le n,\ m\le 5\times 10^61≤n, m≤5×106
样例解释
样例一:可能的 99 种信为:
A
,AA
,AB
,AAB
,ABA
,ABB
,ABAA
,ABAB
,ABAAB
。样例二:
太多了,略。样例三:可能的 33 种信为:
空
,U
,UU
。
这题的模数为什么这么奇怪应该不用我解释了注:在本文中序列加法定义为拼接两个序列成一个序列。如:\{A,B\}+\{C\}=\{A,B,C\}{A,B}+{C}={A,B,C}
思路
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 6 using namespace std; 7 8 const int maxn=1e7+10; 9 const int mod=0x125E591; 10 11 char s[maxn],t[maxn]; 12 int n,m,list[300],pre[maxn],pos,cnt,dp[maxn],ans; 13 int DP(char x) 14 { 15 if(list[x]) 16 { 17 return mod-dp[pre[list[x]]]; 18 } 19 else 20 return 1; 21 } 22 int tot=0; 23 24 int main() 25 { 26 memset(dp,0,sizeof(dp)); 27 int i; 28 cin>>n>>m; 29 scanf("%s%s",s,t); 30 for (i=0;i<m;++i) 31 { 32 if(t[i]=='u') 33 { 34 tot++; 35 } 36 } 37 //cout<<cnt<<endl<<tot<<endl; 38 for (i=m-1;i>=0;--i) 39 { 40 if (t[i]!='u') 41 { 42 pre[i]=pos; 43 dp[i]=(2*dp[pos]+DP(t[i]))%mod; 44 pos=list[t[i]]=i; 45 } 46 else 47 { 48 if (n-tot>=0) 49 { 50 ans=(ans+dp[pos]+DP(s[n-tot]))%mod; 51 } 52 --tot; 53 } 54 } 55 ans=(ans+dp[pos]+1)%mod; 56 cout<<ans<<endl; 57 return 0; 58 }
转载于:https://www.cnblogs.com/2529102757ab/p/10913839.html
P4965 薇尔莉特的打字机相关推荐
- 洛谷4965 薇尔莉特的打字机(Trie,DP)
神仙题. 考虑在一棵 Trie 上进行染色,将可能出现的串的末尾染成黑色.答案就是黑点的个数.一开始只有 \(A\) 的末尾点是黑色. 当出现一个字符(不是退格)\(c\) 时,就要将每个黑点的 \( ...
- Stable Diffusion:使用Lora用二十张图片训了一个简易版薇尔莉特头像生成器(不作商用,纯纯个人兴趣,狗头保命)
目录 一.系统环境 二.数据准备及预处理 三.使用Stable Diffusion获取图像信息 四.安装训练图形化界面 五.参数设置及训练过程 六. 效果测试 七.常见报错处理 一.系统环境 同上一篇 ...
- CSS和HTML做的二次元薇尔莉特(伪),新手上路,请多关照!!!!
想来想去还是在CSDN上写了第一个博客!!! 请指教!!!! 这是在我做好的效果: 在CSBN用不来上传视频的我 由于我喜欢薇尔莉特,再加上血了css和html,于是做了个这玩意!! 新手上路,请多关 ...
- Android图灵聊天机器人-薇尔莉特
智能聊天机器人-图灵机器人项目说明 文章目录 智能聊天机器人-图灵机器人项目说明 1.项目介绍 2.项目用到的技术 3.项目的开发环境 4.开发步骤 1.首先编写主界面(activity_main.x ...
- luogu[U103720]薇尔莉特 题解
题面点这里 概括一下题目,就是维护矩阵or,要求最后整个矩阵的和,异或和 考虑对需要操作的值valvalval进行二进制拆分,由于or对于一个二进制位上的操作是永久性的,那我们对每一位进行二维差分,最 ...
- 周赛-薇尔莉特的委托-并查集应用
题目链接 思路: 分别对所有路建立前缀并查集和后缀并查集,破坏L到R的路时,只需合并L-1,和R+1的集合. Code: #include <bits/stdc++.h> #define ...
- python 小案例
1.生成随机验证码 介绍:验证码是由数字和字母组成的 import random from PIL import Image, ImageDraw, ImageFont, ImageFilter (1 ...
- HTML入门学习-含代码和配套资料
前段时间学习了一下HTML和简单的网页制作,非常有意思,这里把笔记和代码梳理一下.无论是否看过配套视频的,都比较容易理解,供大家参考学习,文章末尾附上可以下载运行的代码,有兴趣的小伙伴请自行下载运 ...
- 心理测量?预知犯罪?AI可以减少京都之殇吗?
全文共5213字,预计学习时长9分钟 图源:齐鲁网 一场火,两行泪.当地时间7月18日上午约10点30分,日本知名动画制作公司京都动画遭人纵火.事发时,工作室内共有74人在工作.截止目前,大火已造成3 ...
最新文章
- python爬虫工程师-Python-爬虫工程师-面试总结
- 四旋翼飞行器旋转矩阵公式推导!
- 【转】 vi常用操作
- 安装不文件不完全_冬日不偷懒 跑步机不完全使用指南
- ySQL挑战搭建一个简易的成绩管理系统的数据库
- Win7下的内置FTP组件的设置详解
- Eclipse里做JBPM工作流gpd.xml中文乱码问题解决
- sql注入之——sql注入防御方法
- win与安卓同步剪切板 快传照片
- 树莓派3B+安装官方原版系统
- 大型网站架设,LMP+Nginx负载均衡+Keepalived热备+Ceph存储集群架构+Web动静分离架构
- 如何修改网易邮箱大师电脑端的消息提示音?超简单
- 取石子问题--威佐夫博弈(Wythoff‘s game)
- 武汉光谷国际人工智能产业论坛之学习
- 鸿蒙os和vivo新系统,跳过鸿蒙系统后,中兴给出新选择,魅族和vivo却坐不住了...
- 录用了一篇 Omega
- 回滚机制有多少种?它们的实现原理是什么?这些你确定都知道?
- 阿里云对象存储OSS标准型(LRS)存储包详解
- where条件中有权限校验的自定义函数优化方法
- Streambox Ripper的问题
热门文章
- python之turtle风轮绘制
- STC8H_硬件IIC
- php怎么字符串转成json对象_php中json字符串转换为对象?
- DRM系列(14)之writeback_job分析
- RPC——RPC协议介绍及原理详解
- php 电话中转 保护用户隐私,打车APP的隐私保护通话是如何保护用户号码隐私的...
- “gjw” is of a model that is not supported by this version of Xcode. Please use a different device.
- AVFoundation 播放器实例
- extjs6.0 动态加载_Extjs入门之动态加载树代码
- 微博VS知乎:争夺大V是场隐形的战争