[luogu3294][背单词]
题意
读完题目就一个感受:这出题人tm不会说人话吗。真的感觉这个题理解题意比想出正解更难。
其实题目的意思就是,给出一些单词,给这些单词编个号,然后要求其他的单词中是这个单词后缀的词都在这个词的前面。每个单词的贡献是当前单词的标号减去他的后缀中标号最大的那个的标号。
希望我能表达明白吧233
思路
因为后缀不好考虑,所以先把字符串倒过来,就都变成了前缀
然后把这些字符串在全都挂到trie树上,每个字符串的结尾打的标记是这个字符串的标号。
删去trie树中的虚点(没有打标记的点)。就可以得到一棵新的树,然后发现,每个字符串的前缀肯定都是他的祖先。然后要求给这些节点编号,是的每个节点的祖先的编号都比这个节点的编号小。并且使得所有节点的编号与他父亲的编号的差值和最小。
用贪心的思想,先给子树大小最小的那棵子树编号。显然这样贪心是对的。
代码
/*
* @Author: wxyww
* @Date: 2018-12-17 11:02:04
* @Last Modified time: 2018-12-17 16:59:58
*/
#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
#include<ctime>
#include<bitset>
using namespace std;
typedef long long ll;
const int N = 110000;
ll read() {
ll x=0,f=1;char c=getchar();
while(c<'0'||c>'9') {
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9') {
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
vector<int>e[N];
int trie[N * 5][30];
char s[N * 5];
int siz[N * 5],tot,bz[N * 5];
void insert(int k) {
int len = strlen(s + 1);
int now = 0;
for(int i = len;i >= 1;--i) {
if(!trie[now][s[i] - 'a']) trie[now][s[i] - 'a'] = ++tot;
now = trie[now][s[i] - 'a'];
}
bz[now] = k;
}
void dfs1(int u,int fa) {
if(bz[u]) e[fa].push_back(bz[u]);
for(int i = 0;i < 26;++i) {
if(!trie[u][i]) continue;
if(bz[u]) dfs1(trie[u][i],bz[u]);
else dfs1(trie[u][i],fa);
}
}
bool cmp(int x,int y) {
return siz[x] < siz[y];
}
void dfs2(int u) {
int k = e[u].size();
siz[u] = 1;
for(int i = 0;i < k;++i) {
int v = e[u][i];
dfs2(v);
siz[u] += siz[v];
}
sort(e[u].begin(),e[u].end(),cmp);
}
int now,bh[N];
ll ans;
void solve(int u,int fa) {
ans += now - fa;fa = now ++;
int k = e[u].size();
for(int i = 0;i < k;++i) {
int v = e[u][i];
solve(v,fa);
}
}
int main() {
int n = read();
for(int i = 1;i <= n;++i) {
scanf("%s",s + 1);
insert(i);
}
dfs1(0,0);
dfs2(0);
solve(0,0);
cout<<ans;
return 0;
}
一言
书足以记名姓而已。剑一人敌,不足学,学万人敌。
[luogu3294][背单词]的更多相关文章
- 做中学(Learning by Doing)之背单词-扇贝网推荐
做中学(Learning by Doing)之背单词-扇贝网推荐 看完杨贵福老师(博客,知乎专栏,豆瓣)的「继续背单词,8个月过去了」,我就有写这篇文章的冲动了,杨老师说: 有时候我会感觉非常后悔,如 ...
- “我爱背单词”beta版发布与使用说明
我爱背单词BETA版本发布 第二轮迭代终于画上圆满句号,我们的“我爱背单词”beta版本已经发布. Beta版本说明 项目名称 我爱背单词 版本 Beta版 团队名称 北京航空航天大学计算机学院 拒 ...
- BZOJ4567[Scoi2016]背单词
4567: [Scoi2016]背单词 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 304 Solved: 114 [Submit][Status] ...
- 《我爱背单词》 Alpha版 发布说明
——发布地址(baidu网盘) http://pan.baidu.com/s/15omtB ——简介 <我爱背单词>是一款英语单词记忆和管理辅助软件,旨在帮助广大考生在短期内攻克GRE. ...
- [No000057]一个人默默背单词,小心被传染哦
不日凛冬将至,全国各地,已有多名少侠因季节变化,出现了不同程度的四肢不勤.bd不分的症状.具体表现为—— 包大人在此高能预警:不想背单词,有可能你已经被传染了. 好好的,怎么突然不想背单词了 哈佛医学 ...
- [No000014]听说不背单词,考英语会是这种下场-我们为什么必须背单词?
由于英语对于一个程序员来说,重要性你懂得.因此我会开始逐渐在博客上加入英语的一些东西. 听说不背单词,考英语会是这种下场 在中国, 「学英语」大抵遵循着这样一条 罗蒙诺索夫质量守恒定律 因为英语学着学 ...
- Supermemo背单词7周年纪念
从2007年2月1日开始,用Supermemo背单词7周年了,在2013年11月21日将单词表Reset,重新开始Review以前背过的单词,并慢慢加入听写VOA时遇到的生词.
- 使用Excel背单词-高效-简单
背单词是一个很纠结的事,想必那些走在留学路上的很多人都被英语这一关卡住了,这里,笔者就聊聊,不讲背单词的方法,只提供使用vb开发的产品和使用方法,有问题欢迎讨论. 简介:使用excel背单词,有一些人 ...
- 基于百词斩和扇贝单词的背单词APP软件测试
概述 背单词APP是非常受大学生青睐的手机应用,但它的发展尚未成熟,存在一些缺陷.我们决定深入地分析一组典型的背单词APP:百词斩(A产品).扇贝单词(B产品),寻找当前背单词APP中的提升空间.下面 ...
随机推荐
- vs2012密钥
Microsoft Visual Studio Ultimate 2012 旗舰版 有效注册密钥:YKCW6-BPFPF-BT8C9-7DCTH-QXGWC:KCW6-BPFPF-BT8C9-7DCT ...
- C# Note30: 软件加密机制以及如何防止反编译
参考文章: C#软件license管理(简单软件注册机制) 软件加密技术和注册机制 .NET中的许可证机制--License 背景 .net是一种建立在虚拟机上执行的语言,它直接生成 MSIL 的中间 ...
- 爬取B站视频
先安装you_get pip install you_get 爬取代码,爬了个ASMR的,学习困了自我催眠 import sys from you_get import common as you_g ...
- python数据结构与算法第十四天【二分查找】
1.二分查找的原理 对于已经排序的列表进行最快速度的查找 2. 代码实现 (1)递归实现 def binary_search(alist, item): if len(alist) == 0: ret ...
- webpack始出来
一直想好好整理一下webpack,现在就整理吧. 总结自己的实际搭建的整理情况,我还是要先对自己说一句,以后给文件夹起名字的时候不要用一些特殊的关键字,比如我在做这个demo的时候,我用的文件夹名称叫 ...
- Nginx tcp限制并发、IP、记日志
L:114 Syntax: limit_conn_zone key zone=name:size;//类似http limit_conn 需要开个共享内存 zone=name(共享内存名称):siz ...
- Nginx 返回响应过滤响应内容
陶辉94课 过滤模块 从下到上顺序 ngx_http_proxy_module 模块 Syntax: proxy_ignore_headers field ...; Default: — Contex ...
- 【RNN】资源汇总
wesome Recurrent Neural Networks A curated list of resources dedicated to recurrent neural networks ...
- CentOS 部署.net core 2.0 项目
上传项目到服务器 安装Nginx(反向代理服务器),配置文件 https://www.cnblogs.com/xiaonangua/p/9176137.html 安装supervisor https: ...
- form-layui
html <div id="formData"> <form class="layui-form formBtn" style="m ...