首页 > 其他分享 >口胡记录

口胡记录

时间:2024-09-19 20:34:25浏览次数:9  
标签:nxt 顺序 记录 元素 最后 枚举 字符串

先开个坑,不一定填。

主要记录一些口胡了但是没写的题。

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 是否成立即可。

Pack

题面:

给定一个长度为 \(n\),元素只有 \(1\), \(2\) 元素的序列,你需要将这些元素按顺序装箱,每个箱子的大小为 \(w\),你可以进行一次操作:取出若干个元素将其随意排序放到最后。问最少需要多少个箱子?

做法:
一个细微的转化,将取出若干个元素将其随意排序放到最后,转化为选出若干元素,按顺序放入,剩下的元素放到最后做决定。(真的是如转化啊)

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

f[i][j] 表示前 \(i\) 个数选 \(j\) 个按顺序填所需要的最少车辆数。

g[i][j] 表示前 \(i\) 个数选 \(j\) 个按顺序填最后一辆车最多能剩下多少空间。

转移显然。

前面的所有元素装好之后,因为剩下的元素我们可以按任意顺序放,所以我们贪心的放,先放 \(2\),放不了了我们再放 \(1\),再继续放 \(2\)......。

标签:nxt,顺序,记录,元素,最后,枚举,字符串
From: https://www.cnblogs.com/huangweiliang/p/18421142

相关文章

  • Android NotificationListenerService的实操记录
    文章目录背景介绍主要方法技术细节背景介绍Android在4.3的版本中(即API18)加入了NotificationListenerService,根据SDK的描述(AndroidDeveloper)可以知道,当系统收到新的通知或者通知被删除时,会触发NotificationListenerService的回调方法。同时在Android4.4中新增......
  • 记录一次首页优化的经历
         公司最近要进行多品牌合一,原来五个品牌的app要合并为一个。品牌立项、审批、方案确定,历史数据迁移、前期的基础工程搭建,兼容以及涉及三方的交互以及改造,需求梳理等也都基本完成,原来计划9月中旬进行上线,但是上线后服务端的压测一直通不过-首页抗不过太高的并发。 ......
  • vue项目记录每个页面保持滚动条的位置
    路由元信息增加keepAlive:true,scrollTop:{top:0},{path:'/**/**',name:'**',component:()=>import('@/views/**/index.vue'),meta:{title:'**',affix:fals......
  • flutter开发将项目从flutter版本3.19.6升级到3.24.3过程遇到问题记录Type 'Unmodifiab
    1.androidstudio修改当个项目的flutter版本,不影响其他项目工程的flutter编译版本1.1项目右上角点击‘设置’图标,选择Settings...进去到项目的设置页面,选择fluttersdk路径1.2项目右上角点击‘设置’图标,选择Settings...进去到项目的设置页面,选择dartsdk路径2.点开打开......
  • Hackademic.RTB1 打靶记录
    第一次打靶机,思路看的红队笔记https://www.vulnhub.com/entry/hackademic-rtb1,17/环境:kaliLinux-192.168.75.131,靶机-192.168.75.132主机发现和端口扫描扫描整个网络有哪台机子在线,不进行端口扫描nmap-sP192.168.75.0/24StartingNmap7.93(https://nmap.or......
  • 记录奇思妙想
    引言生活中总会发现一些奇思妙想,但是又得不到科学验证,我一直想记录这些东西。奇思妙想1.有没有一种感觉,感冒病毒传染给别人了,自己就好了?仿佛病毒有一个主病毒,这个主病毒是有思想的一样。2.飞机是通过空气动力学来运作的,而不是模仿鸟类,但是模仿鸟类是不是会更简单一些?能不能做......
  • 使用 PowerShell 管理 DNS 服务器,你可以执行多种操作,如添加、删除和修改 DNS 记录,以及
    使用PowerShell管理DNS服务器,你可以执行多种操作,如添加、删除和修改DNS记录,以及管理DNS区域。以下是一些常用的cmdlet示例:查看所有DNS区域powershellCopyCodeGet-DnsServerZone添加新的DNS区域powershellCopyCodeAdd-DnsServerPrimaryZone-Name"yourdomai......
  • 摄像头抓取保存帧成视频随笔记录
    cv2间隔指定秒抓取视频以上为一些常见编码格式:I420,YUV编码,视频格式为.aviPIM1,MPEG-1编码,视频格式为.aviXVID,MPEG-4编码,视频格式为.aviTHEO,OggVorbis,视频格式为.ogvFLV1,Flash视频,视频格式为.flvAVC1,H264编码DIV3,MPEG-4.3编码DIVX,MPEG-4编码MP42,MPEG-4.2编码MJPG,motion-......
  • 易优eyoucms网站安装时数据库提示写入表ey_archives记录失败,请刷新重试
    遇到安装时数据库提示“写入表 ey_archives 记录失败,请刷新重试”的问题,可能是由于多种原因导致的,包括数据库连接问题、权限问题、数据冲突等。以下是详细的解决步骤:解决步骤清空数据库重新安装切换数据库版本手动导入数据库1.清空数据库首先尝试清空数据库,确保数据库......
  • Hugging Face NLP课程学习记录 - 2. 使用 Hugging Face Transformers
    HuggingFaceNLP课程学习记录-2.使用HuggingFaceTransformers说明:首次发表日期:2024-09-19官网:https://huggingface.co/learn/nlp-course/zh-CN/chapter2关于:阅读并记录一下,只保留重点部分,大多从原文摘录,润色一下原文2.使用HuggingFaceTransformers管道的内部......