cf965e Short Code
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <vector>
using namespace std;
int n, tot, dfn[100005], s[100005][26], dep[100005], idx, siz[100005], ans;
bool iss[100005];
char ss[100005];
vector<int> vec[100005];
void insert(){
int u=0;
int len=strlen(ss);
for(int i=0; i<len; i++){
int t=ss[i]-'a';
if(!s[u][t]) s[u][t] = ++tot;
u = s[u][t];
}
iss[u] = true;
}
void dfs(int x, int d){
dep[x] = d;
dfn[x] = ++idx;
siz[x] = 1;
for(int i=0; i<26; i++)
if(s[x][i]){
dfs(s[x][i], d+1);
siz[x] += siz[s[x][i]];
}
}
void faq(int x){
for(int i=0; i<26; i++)
if(s[x][i]){
faq(s[x][i]);
if(vec[x].size()<vec[s[x][i]].size()) swap(vec[x], vec[s[x][i]]);
for(int j=0; j<vec[s[x][i]].size(); j++){
vec[x].push_back(vec[s[x][i]][j]);
push_heap(vec[x].begin(), vec[x].end());
}
vec[s[x][i]].clear();
}
if(!iss[x] && x && vec[x].size()){
pop_heap(vec[x].begin(), vec[x].end());
vec[x].pop_back();
vec[x].push_back(dep[x]);
push_heap(vec[x].begin(), vec[x].end());
}
if(iss[x]){
vec[x].push_back(dep[x]);
push_heap(vec[x].begin(), vec[x].end());
}
}
int main(){
cin>>n;
for(int i=1; i<=n; i++){
scanf("%s", ss);
insert();
}
dfs(0, 0);
faq(0);
for(int i=0; i<vec[0].size(); i++)
ans += vec[0][i];
cout<<ans<<endl;
return 0;
}
cf965e Short Code的更多相关文章
- Codeforces 965E Short Code 启发式合并 (看题解)
Short Code 我的想法是建出字典树, 然后让后面节点最多的点优先向上移到不能移为止, 然后gg. 正确做法是对于当前的节点如果没有被占, 那么从它的子树中选出一个深度最大的点换到当前位置. 用 ...
- CodeForces - 965E Short Code
Discription Arkady's code contains nn variables. Each variable has a unique name consisting of lower ...
- Codeforces965E Short Code 【启发式合并】【堆】
题目大意: 给出总长度不超过1E+5的不重复字符串集,给每个字符串选一个前缀使得可以区分它. 题目分析: KAN出的DIV2难度一般不高,想升Ranting的可以试试. 简单的树上启发式合并,建出Tr ...
- 【Codeforces Round #476 (Div. 2) [Thanks, Telegram!] E】Short Code
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 先建立一棵字典树. 显然,某一些节点上会被打上标记. 问题就转化成求所有标记的深度的和的最小值了. (标记可以上移,但是不能在同一位 ...
- Oracle Applications Multiple Organizations Access Control for Custom Code
档 ID 420787.1 White Paper Oracle Applications Multiple Organizations Access Control for Custom Code ...
- (转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)
一. HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api. ...
- 嵌入式Linux驱动学习之路(二十六)DM9000C网卡驱动程序
基于DM9000C的原厂代码修改dm9000c的驱动程序. 首先确认内存的基地址 iobase. 确定中断号码. 打开模块的初始化函数定义. 配置内存控制器的相应时序(结合DM9000C.C的手册). ...
- Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)
从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法,还有一些逻辑关系更加严谨了.1,警告:“xoxoxoxo” is deprecated解决办法:查看xoxoxoxo的这个方法的文档,替换 ...
- spring源码分析之spring-core总结篇
1.spring-core概览 spring-core是spring框架的基石,它为spring框架提供了基础的支持. spring-core从源码上看,分为6个package,分别是asm,cgli ...
随机推荐
- click事件的累加绑定
click事件的累加绑定,绑定一次点击事件,执行多次. 在页面中为一个元素绑定事件,事件执行后页面未刷新且元素还在,然后你再次点击,元素又被绑定一个点击事件,这样第二次点击就会执行两次,以此类推. 如 ...
- js addEventListener调用传参函数
先看这段代码 function abc(key){ console.log(key); } for(let i=0;i<oInput.length;i++){ oInput[i].addEven ...
- 【extjs6学习笔记】1.15 初始: 关于build
调试版本 sencha app build --development 发布版本 sencha app build 说明: 使用第三方库时,目前sencha可能还有bug,会更改第三方库内容,所以发布 ...
- Elasticsearch-2.3 (OpenLogic CentOS 7.2)
平台: CentOS 类型: 虚拟机镜像 软件包: elasticsearch-2.3 application server basic software big data elasticsearch ...
- app再次进入数据不加载问题
问题原因:触发点击事件在加载页面之前完成. 1.调整了一下页面加载顺序 2.增加了settime的时间
- 提升Web性能的8个技巧总结
提升Web性能的8个技巧总结 在互联网盛行的今天,越来越多的在线用户希望得到安全可靠并且快速的访问体验.针对Web网页过于膨胀以及第三脚本蚕食流量等问题,Radware向网站运营人员提出以下改进建议, ...
- 根据图片的URL来实例化图片
正常的Image图片类实例化的时候都需要使用本地的虚拟路径而不能使用URL,如果使用URL就会出现 不支持 URI 格式 这样的问题,正确的写法如下: HttpWebRequest reques ...
- Problem L: 搜索基础之马走日
Problem L: 搜索基础之马走日 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 134 Solved: 91[Submit][Status][W ...
- 2018.6.2 AndroidStudio项目中的问题:===== oast.LENGTH_LONG和Toast.LENGTH_SHORT分别对应多长时间
oast.LENGTH_LONG和Toast.LENGTH_SHORT分别对应多长时间 在Android源码中的NotificationManagerService.java这个类中定义了两个静态变量 ...
- Python实现屏蔽敏感词
一.需求 1. 有一个文件,里面有一些敏感词汇,用户输入一段话,若包含这些词,就用**代替,并输出 二.实现代码 f = open('lib.txt', 'r') result = '' f1 = i ...