题目背景

题目背景与题目描述无关。签到愉快。

「冷」

他半靠在床沿,一缕感伤在透亮的眼眸间荡漾。

冷见惆怅而四散逃去。经历嘈杂喧嚣,感官早已麻木。冷又见空洞而乘隙而入。从里向外,这不是感官的范畴。

他暗笑,笑自己多情。


「暖」

正恍惚,忽见她闪进门帘。

慢步,靠近,站定,俯身。一抹浅笑挟带着闪闪泪光刻印在时光里。

沉醉于这美好,四周空气开始有了温度,刚刚好的温度。


「坠」

起身,伸出手,他想轻抚过那朝思暮想的面颊。

但他做不到,他发现他在坠落,没有尽头。

深渊是主犯,不断向下延伸,贪婪地吞噬这尘世间最后一点温柔。迷雾是帮凶,裹住了一切,阻断最后一条希望的路。


「醒」

梦,惊醒。

他抬起头,时间停滞。他想到那深渊的血盆大口,又忆起梦中溜过的那丝美好。

他猛地抓起外衣,冲出自习室。

小花园的路灯,藏着栀子花的剪影。她也在那里,像在等待一个注定会来的人。

的确,来了。

命运接受了这一对相伴而行的身影和那个通往“永远”的约定。


题目描述

在等待那个注定会来的人时,可爱的她比较闲,伴着夜色写下了一张纸条。

纸条上有 \(n\) 段只包含小写字母的字符串和一个长度为 \(26\) 的整数序列 \(V\)。

月光不断推移,她看着迟来的中意之人,悄声道:“你可以任意使用操作 \((i, p)\) 以删除所有满足条件的字符串。所谓条件有两个。第一,长度至少为 \(p\)。”

“第二,只有长度大于等于 \(p\) 且前 \(p\) 位和第 \(i\) 个字符串的前 \(p\) 位完全相同的字符串(包含第 \(i\) 个)才算满足条件。”

“每一次操作 \((i, p)\) 的代价是 \(V_c\),\(V_c\) 中的下标 \(c\) 表示第 \(i\) 个字符串的第 \(p\) 位的字符在 az 的小写字母中的排名哦,例如:a1b2。”

“但愿,你可以告诉我删除所有字符串的最小代价叭?”


输入格式

共 \(n + 2\) 行。

第 \(1\) 行,一个正整数 \(n\)。

接下来有 \(n\) 行,每一行包含一个仅由小写字符组成的字符串。

最后一行,包含 \(26\) 个正整数,表示序列 \(V\)。


输出格式

共一行,一个正整数,表示删除所有字符串的最小代价。


样例输入

3
bcde
bcdefg
arena
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

样例输出

3

提示

记输入字符串总长为 \(|S|\)。

对于 \(20 \%\) 的数据,\(1 \leq n \leq 4, n \leq |S| \leq 20,1 \leq V_i \leq 10\)。

对于另外 \(10 \%\) 的数据,\(V_i = 1\)。

对于另外 \(20 \%\) 的数据,\(1 \leq n \leq 10^4, n \leq |S| \leq 5 \times 10^4, 1 \leq V_i \leq 10^9\)。

对于 \(100 \%\) 的数据,\(1 \leq n \leq 10^5, n \leq |S| \leq 3 \times 10^5, 1 \leq V_i \leq 10^9\)。

保证数据随机。


注意: 一个字符串可能会因为多次操作而被重复删除,这种情况就当作只删除了一次,后续的删除操作实际无效,但代价照常。

比如:

ab
cb

可以执行操作 \((1, a)\) 和操作 \((2, b)\),即使 ab 被删除了两次。


下面是题解


写在前面

题目初版太难了(?,以至于赶来救急的验题人不会。

紧接着,验题人反手一个逻辑分析,Hack 掉了出题人的 std。

然后出题人将错就错,胡出了这道题。签到愉快((


题解

从「条件」入手就非常好做。

两个条件一起限制了字符串的前缀和前缀结尾字符,这明确指向 Trie 树之类的。那么再来考虑操作能不能挂在 Trie 树上。

确实可以,操作 \((i, p)\) 就是在 Trie 树上删掉 \(p\) 这一深度上代表第 \(i\) 个字符串的第 \(p\) 位的字符的边。如果把这个字符的在小写字母里的排名记为 \(c\),则操作代价为 \(V_c\)。所以这是一颗带额外边权的 Trie 树。

而你的任务变成:删掉任意多条边,使得根节点与所有叶子节点都不连通,并满足删掉的边权和最小。

然后就可以树形 dp 了,当然你甚至可以最小割(因为考虑到一些因素,我们保留了最小割方法的通过性)。最小割是裸的,简单提一下树形 dp。

定义 \(dp_u\) 表示通过考虑节点 \(u\) 和它父亲的这条边(根节点没有)和节点 \(u\) 的子树内的边割一部分,使得整个节点 \(u\) 的子树内的叶子节点与根断开的最小代价。

转移分两种:

  • 枚举每一个儿子(注意叶子节点没有儿子,此时舍弃这类情况),它们单独控制自己的子树就可以了,代价即 \({\sum \limits _{u \to v}}dp_v\)。
  • 割 \(u\) 节点和它父亲的边,代价即边权。

两者取最小值向上转移即可,时间复杂度 \(O(n)\),空间复杂度 \(O(n)\)。根据实现不同可以会有 \(26\) 的常数。

总之就真的是签到啦。


写在后面

可以考虑一下,如果操作 \((i, p)\) 改成:记第 \(i\) 个字符串的第 \(p\) 个字符为 \(c\),排名为 \(r\)。每次操作删除所有有第 \(p\) 位,且第 \(p\) 位为 \(c\) 的字符串,代价为 \(V_r\)。

其它不变(或许数据范围可以作微调),该怎么做呢?

Solution -「原创」Destiny的更多相关文章

  1. Solution -「构造」专练

    记录全思路过程和正解分析.全思路过程很 navie,不过很下饭不是嘛.会持续更新的(应该). 「CF1521E」Nastia and a Beautiful Matrix Thought. 要把所有数 ...

  2. Solution -「GLR-R2」教材运送

    \(\mathcal{Description}\)   Link.   给定一棵包含 \(n\) 个点,有点权和边权的树.设当前位置 \(s\)(初始时 \(s=1\)),每次在 \(n\) 个结点内 ...

  3. Solution -「WF2011」「BZOJ #3963」MachineWorks

    \(\mathcal{Description}\)   Link.   给定你初始拥有的钱数 \(C\) 以及 \(N\) 台机器的属性,第 \(i\) 台有属性 \((d_i,p_i,r_i,g_i ...

  4. Solution -「LOCAL」二进制的世界

    \(\mathcal{Description}\)   OurOJ.   给定序列 \(\{a_n\}\) 和一个二元运算 \(\operatorname{op}\in\{\operatorname{ ...

  5. Solution -「SHOI2016」「洛谷 P4336」黑暗前的幻想乡

    \(\mathcal{Description}\)   link.   有一个 \(n\) 个结点的无向图,给定 \(n-1\) 组边集,求从每组边集选出恰一条边最终构成树的方案树.对 \(10^9+ ...

  6. Solution -「LOCAL」大括号树

    \(\mathcal{Description}\)   OurTeam & OurOJ.   给定一棵 \(n\) 个顶点的树,每个顶点标有字符 ( 或 ).将从 \(u\) 到 \(v\) ...

  7. Solution -「ZJOI2012」「洛谷 P2597」灾难

    \(\mathcal{Description}\)   link.   给定一个捕食网络,对于每个物种,求其灭绝后有多少消费者失去所有食物来源.(一些名词与生物学的定义相同 w.)   原图结点数 \ ...

  8. Solution -「JSOI2008」「洛谷 P4208」最小生成树计数

    \(\mathcal{Description}\)   link.   给定带权简单无向图,求其最小生成树个数.   顶点数 \(n\le10^2\),边数 \(m\le10^3\),相同边权的边数不 ...

  9. Solution -「LOCAL」过河

    \(\mathcal{Description}\)   一段坐标轴 \([0,L]\),从 \(0\) 出发,每次可以 \(+a\) 或 \(-b\),但不能越出 \([0,L]\).求可达的整点数. ...

随机推荐

  1. [还不会搭建博客吗?]centos7系统部署hexo博客新手入门-进阶,看这一篇就够了

    @ 目录 *本文说明 请大家务必查看 前言 首先介绍一下主角:Hexo 什么是 Hexo? 环境准备 详细版 入门:搭建步骤 安装git: 安装node: 安装Hexo: 进阶:hexo基本操作 发布 ...

  2. 【mq】从零开始实现 mq-06-消费者心跳检测 heartbeat

    前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...

  3. java、selenium、图片滑块验证,底部附本地可测试代码

    准备 本地Chrome版本对应WebDriver驱动:http://chromedriver.storage.googleapis.com/index.html maven包 <!-- sele ...

  4. linux篇-centos7搭建apache服务器(亲测可用)

    1安装apache yum install httpd httpd-devel -y 2开启服务器 systemctl start httpd.service 3开机自启 systemctl enab ...

  5. Proxmox 5.4使用vgpu_unlock,为GTX1060开启vGPU支持

    本文介绍如何为GTX1060显卡开启vGPU功能.消费级显卡不支持nvidia GRID vGPU功能.在2021年初,疫情激发了黑客的创作热情,给出了一个vgpu_unlock的补丁,可以让消费级显 ...

  6. IPC机制与线程的操作

    目录 Queue模块 IPC机制(进程间通信) 生产者消费者模型 线程理论 创建线程的两种方式 线程实现TCP服务端的并发 线程join方法 线程数据共享 线程对象属性和方法 守护线程 GIL全局解释 ...

  7. 【Unity Shader学习笔记】Unity光照基础-半兰伯特光照

    在光照无法达到的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看起来就像一个平面. 使用半兰伯特光照可以解决这个问题. 逐顶点光照技术也被称为兰伯特光照模型.因为它符合兰伯特定律 ...

  8. 【JNPF修改通告】fastjson≤1.2.80反序列化漏洞

    近日Fastjson Develop Team 发现 fastjson 1.2.80及以下存在新的风险,存在反序列化漏洞.攻击者可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大,请大家 ...

  9. 图解MySQL逻辑备份的实现流程

    1. 摘要 数据作为一家公司的重要资产,其重要程度不言而喻.数据库为数据提供存取服务,担任着重要的角色,如果因数据误删.服务器故障.病毒入侵等原因导致数据丢失或服务不可用,会对公司造成重大损失,所以数 ...

  10. 分享一款自带工作流引擎的NodeJS全栈框架,接单快手、创业神器

    CabloyJS是什么 CabloyJS是一款自带工作流引擎的Node.js全栈框架, 接单快手.创业神器, 基于koa + egg + vue + framework7 + mysql 在线演示 场 ...