博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu - 3460 - Ancient Printer
阅读量:5255 次
发布时间:2019-06-14

本文共 1325 字,大约阅读时间需要 4 分钟。

题意:给出N个由小写字母组成的队名,用一台古老的打印机这些队名打印出来,问最少要敲几次键盘(队名之间不用按输入顺序),这台打印机只能执行以下3种操作:

1.在现有基础上的末尾继续输入小写字母;

2.删除最后一个字母;

3.打印现有串。

(1 <= N <= 10000, 队名长度 <= 50)

——>>组织好Trip,记录总结点数sz,每个结点到根结点的距离,得到距离根结点最远的结点的距离Max,那么答案为2 * sz + N - Max。

 

#include 
#include
#include
using namespace std;const int maxw = 50 + 10;int N;char name[maxw];struct node{ int dis; node *next[26]; node(){ dis = 0; memset(next, 0, sizeof(next)); }};struct Trip{ node *root; int Max; int sz; Trip(){ root = new node; Max = -1; sz = 0; } int idx(char c){ return c - 'a'; } void insert(char *s){ node *t = root; int len = strlen(s), i; for(i = 0; i < len; i++){ int c = idx(s[i]); if(!t->next[c]){ t->next[c] = new node; sz++; } t->next[c]->dis = t->dis + 1; t = t->next[c]; } Max = max(Max, t->dis); } void solve(){ printf("%d\n", 2 * sz + N - Max); }};int main(){ while(scanf("%d", &N) == 1){ Trip trip; for(int i = 0; i < N; i++){ scanf("%s", name); trip.insert(name); } trip.solve(); } return 0;}

 

 

转载于:https://www.cnblogs.com/bbsno1/p/3268531.html

你可能感兴趣的文章
web_day4_css_宽度
查看>>
electron入门心得
查看>>
格而知之2:UIView的autoresizingMask属性探究
查看>>
我的Hook学习笔记
查看>>
EasyUI DataGrid 中字段 formatter 格式化不起作用
查看>>
js中的try/catch
查看>>
自动从网站上面下载文件 .NET把网站图片保存到本地
查看>>
【识记】 域名备案
查看>>
寄Android开发Gradle你需要知道的知识
查看>>
简述spring中常有的几种advice?
查看>>
ABAP 创建和调用WebService
查看>>
C# 实例化顺序
查看>>
CSS水平垂直居中总结
查看>>
委托又给我惹麻烦了————记委托链的取消注册、获取返回值
查看>>
ps怎么把白色背景变透明
查看>>
gource 安装教程
查看>>
字符串转 Boolean 的正确方式
查看>>
给你的网站404页面加上“宝贝寻亲”公益页面
查看>>
整理推荐的CSS属性书写顺序
查看>>
协程, IO阻塞模型 和 IO非阻塞模型
查看>>