首页 > 其他分享 >String

String

时间:2024-10-04 18:45:09浏览次数:1  
标签:nxt String 位置 枚举 答案 字符串

String

题面:

给定两个字符串 \(a\), \(b\), 我们称这两个字符串的所有子序列为坏字符串。求最短的非坏字符串。

做法

首先要解决一个问题,假设你有一个字符串你需要判断这个字符串是否是坏的,怎么快速判断?

我们预处理出 nxta[i][j] 表示 \(a\) 字符串中第 \(i\) 个位置之后第一个 \(j\) 字符出现的位置。

\(b\) 字符串同理。

我们判断时只需要扫一遍当前的字符串,并用 nxt 数组在 \(a\), \(b\) 上跳,如果都跳出去了,那么就是好串,反之坏串。

那么怎么算最短的这个串呢?

考虑 \(\text{dp}\)。

f[i][j] 表示最短的最后一位等于 \(a[i]\), \(b[j]\),的字符串长度。

假设当前字符串 \(a\) 枚举到位置 \(i\), \(b\) 枚举到位置 \(j\),第 \(i + 1\) 位填 \(x\),转移式子: f[nxt[i + 1][x]][nxt[j + 1][x]] = f[i][j]。最后我们要的答案就是 f[n + 1][m + 1]

但是这个很对的做法,时间复杂度是 \(O(26 \times n^2)\),只能获得 \(80\) 的高分。

\(100\) 分也很简单啊,直接将答案和第 \(2\) 位交换一下,注意到答案不会超过 \(\frac{n}{26}\)。

那么我们的转移式子要改变一下,假设当前字符串 \(a\) 枚举到位置 \(i\),答案字符串长度为 \(j\), 下一位 \(x\):

f[nxt[i + 1][x]][j + 1] = max{nxt[f[i][x] + 1][x]}。最后只要判断 f[i][j] >= m+1 是否成立即可。

标签:nxt,String,位置,枚举,答案,字符串
From: https://www.cnblogs.com/huangweiliang/p/18447119

相关文章

  • Set<String>和JTextField
    importjavax.swing.;importjava.awt.;importjava.util.HashSet;importjava.util.Set;importjava.util.Timer;importjava.util.TimerTask;publicclassSizeyunsuan{publicstaticvoidmain(String[]args){inti=1;SetgeneratedQuestions=newHashSet&......
  • C++ 额外的 string 操作
    string构造:▲《C++Primer》P321string裁剪:▲322修改string的操作:▲《C++Primer》P323string的搜索操作:▲《C++Primer》P325string的compare函数:▲《C++Primer》P327......
  • PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos(): Non-string needles
    当遇到PBootCMS附件上传失败,并报错 UNKNOW:Code:8192;Desc:stripos():Non-stringneedleswillbeinterpretedasstringsinthefuture. 时,这通常是因为PHP的版本更新导致某些函数的行为有所改变。在这个情况下,stripos() 函数在处理非字符串参数时会发出警告,因为它......
  • 37_初识搜索引擎_快速掌握query string search语法以及_all metadata原理揭秘
    1、querystring基础语法GET/test_index/test_type/_search?q=test_field:testGET/test_index/test_type/_search?q=+test_field:testGET/test_index/test_type/_search?q=-test_field:test一个是掌握q=field:searchcontent的语法,还有一个是掌握+和-的含义2、_allmetada......
  • ABC225F String Cards
    题意给你\(n\)个串\(s_i\),你需要选出\(k\)个串并按照某个顺序拼接起来形成的字符串字典序最小。\(n,k,|s|\le50\)。分析由于顺序不固定,所以我们无法直接DP。而状压的复杂度也太高了,怎么办呢?考虑钦定一个顺序,使得按照这个顺序排列字符串一定最优。一个经典的错误想法......
  • 【常用API】Object、Objects、包装类、StringBuilder、StringBuffer、StringJoiner
    API:应用程序编程接口就是java帮我们已经写好了一些程序,如:类、方法等,直接拿过来解决一些问题。1.Object它常用的方法:toString():返回对象的字符串形式;存在意义,让子类重写,以便返回子类对象的内容。equals():默认比较两个对象的地址是否相等;存在意义,让子类重写,以便用......
  • 【C++ STL】深入理解string类的底层实现
    string类的模拟实现一.string的构造与析构函数1.普通构造函数与析构函数2.拷贝构造的浅拷贝所带来的问题3.如何实现深拷贝二.运算符重载1.赋值运算符重载2.大小比较相关的运算符重载三.迭代器的实现四.string常用操作的实现1.静态const成员npos的定义2.插入操作3.查找......
  • WPF Progrss bar stringformat {} {0}% IsDetermined
    //xaml<Windowx:Class="WpfApp425.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.mi......
  • JS实现String.Format
    js实现string.format功能<scripttype="text/javascript">varerrorHtml="<atitle=\"{1}\"href=\"#\"onclick=\"\"class=\"ml-5\"style=\"text-decoration:none;color:#FF3C3......
  • C++ string的基本运用详细解剖
    string的基本操作一.与C语言中字符串的区别二.标准库中的string三.string中常用接口的介绍1.string中常用的构造函数2.string类对象的容量操作函数3.string类对象的访问及遍历操作4.string类对象的修改操作5.string类的非成员函数6.string中的其他一些操作一.与C语言......