HDU-3460 Ancient Printer 字典树

  该题题意是求给定的字符串集用一个打字机来打出所有的字符串(最后一个),顺序可以打乱,每次操作可以向打字机的末尾添加一个字符删除一个字符以及打印一个单词。这里有一个很强大的想法,那就是先假设每个单词都打印出来起消耗为 sumlenth * 2 + N,在统计所有的相同的字符数 M, 然后得到最长的一个单词的长度L,把这个单词的放在最后打印,最后答案就是 sumlen * 2 + N - M.

  代码如下:

 1 #include <cstdlib>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5
6 struct Node
7 {
8 int cnt;
9 Node *child[26];
10 };
11
12 inline Node *init( )
13 {
14 Node *p = new Node;
15 p->cnt = -1;
16 memset( p->child, 0, sizeof( p->child ) );
17 return p;
18 }
19
20 inline bool getint( int &t )
21 {
22 char c;
23 int f = 1;
24 while( c = getchar(), ( c < '0' || c > '9' ) && c != '-' )
25 if( c == EOF ) return false;
26 if( c == '-' ) f = -1;
27 else t = c - '0';
28 while( c = getchar(), c >= '0' && c <= '9' )
29 t = t * 10 + c - '0';
30 return true;
31 }
32
33 inline void getstr( char *s )
34 {
35 char c;
36 int p = 0;
37 while( c = getchar(), c == ' ' || c == '\n' ) ;
38 s[p++] = c;
39 while( c = getchar(), c != ' ' && c != '\n' )
40 s[p++] = c;
41 s[p] = '\0';
42 }
43
44 inline void insert( Node *p, char *in )
45 {
46 int dx = *in - 'a';
47 if( *in )
48 {
49 if( p->child[dx] == NULL )
50 p->child[dx] = init();
51 p->child[dx]->cnt++;
52 insert( p->child[dx], in + 1 );
53 }
54 }
55
56 inline void getsum( Node *p, int &cnt )
57 {
58 for( int i = 0; i < 26; ++i )
59 {
60 if( p->child[i] )
61 {
62 cnt += p->child[i]->cnt;
63 getsum( p->child[i], cnt );
64 }
65 }
66 free( p );
67 }
68
69 int main()
70 {
71 int N;
72 while( getint( N ) )
73 {
74 Node *r = init();
75 char str[55];
76 int ans = 0, cnt = 0, maxlen = -0x7fffffff;
77 for( int i = 0; i < N; ++i )
78 {
79 getstr( str );
80 int len = strlen( str );
81 maxlen = maxlen > len ? maxlen : len;
82 ans += len;
83 insert( r, str );
84 }
85 getsum( r, cnt );
86 printf( "%d\n", ( ans - cnt ) * 2 + N - maxlen );
87 }
88 }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548806.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下查看CPU个数(逻辑个数和物理个数)

CPU个数CPU颗数*CPU核数。 总逻辑CPU数 物理CPU个数 * 每颗物理CPU的核数 * 超线程数 //查询逻辑CPU总数 $ grep -c processor /proc/cpuinfo 4//查询物理CPU个数 $ cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l 1//查询每颗物理CPU的核数 $ cat /pr…

【博客话题】坚持的背影--记我的入门老师

光阴似箭&#xff0c;一晃十年过去了&#xff0c;人生中又会有几个十年呢&#xff1f;只是记忆中那黑板前奋笔疾书坚持的背影依然那么清晰的出现在眼前&#xff0c;时时提醒我要学会坚持永不放弃。在第27个教师节即将来临之际&#xff0c;谨以此文敬献给我的恩师和所有在教育战…

XShell远程连接LInux服务器(地址端口映射方法)

所实现的功能&#xff1a; 这篇文章主要是记录我在非同一局域网下用win10系统的Xshell去连接Linux系统服务器。 环境&#xff1a;一台win10主机&#xff0c;已安装好Xshell7&#xff0c;局域网ip:192.168.0.132 一台Linux主机&#xff0c;将其作为远程服务器使用&#xff0c;…

如何评价个人在软件开发团队中的绩效

我认为一个有效评价手段应该达到以下目的&#xff1a; 1、 对团队&#xff1a;让整个团队进入愉快高效工作状态 2、 对“高手”&#xff1a;奖励干活多干活好的人 3、 对“低手”&#xff1a;从制度上杜绝磨洋工的现象 4、 对“中手”&#xff1a;提供工作认真但是水平有待…

IDEA部署Tomcat报错[RMI TCP Connection(6)-127.0.0.1]

> 严重 [RMI TCP Connection(6)-127.0.0.1] > org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file该错误出现的原因是Tomcat初始化失败。 一定一定要检查…

如何对SQL Server中的XML数据进行insert、update、delete .

SQL Server 2005/2008增加了对XML数据的支持&#xff0c;同时也新增了几种操作XML的方法&#xff0c;本文主要以SQL Server 2008为例介绍如何对XML数据进行insert、update、delete。 SQL Server中新增加了XML.Modify()方法&#xff0c;分别为xml.modify(insert),xml.modify(del…

maven仓库理解、下载及设置

1、对maven仓库的理解&#xff1a; 可以看萨姆大叔的maven知识整理 2、下载apach maven Download 或者复制地址&#xff1a;http://maven.apache.org/download.cgi 3、IDEA中maven的setting 第六步是本地资料库的目录设置&#xff0c;如果你解压出来的maven安装包没有reposit…

XenDesktop 5.5 – HDX RealTime TCP UDP Audio演示

我们可以看到&#xff0c;XenDesktop 5.5相比于XenDesktop 4以及5在低带宽与高延迟的情况下&#xff0c;对声音回放的支持效果要更好。 在1.5Mbps,140ms延迟的情况下的情形。而XenDesktop 5.5能够在600ms延迟&#xff0c;0.5%丢包的情况下&#xff0c;使用TCP交付的情况下&…

百万级PHP网站架构工具箱

在了解过世界最大的PHP站点&#xff0c;Facebook的后台技术后&#xff0c;今天我们来了解一个百万级PHP站点的网站架构&#xff1a;Poppen.de。Poppen.de是德国的一个社交网站&#xff0c;相对Facebook、Flickr来说是一个很小的网站&#xff0c;但它有一个很好的架构&#xff0…

Failed to load resource: the server responded with a status of 404 (Not Found)

现象描述&#xff1a; 从前端页面获取不到来自controller层的data数据&#xff0c;即前端页面和后台没有实现数据交互。 检查发现&#xff1a; 工程中的out目录下没有生成对应的.java文件&#xff0c;但是模块中的target中有 目录是空的&#xff01;&#xff01;&#xff…

部分Dell 740 不支持 Xen Server?

在Dell 740 上装了半天的Xen Server&#xff0c;都不成功。 不断报错&#xff0c;重启 在GOOGLE上爬山下海 ~&#xff0c;原来郁闷不只是我.......740 一些可以装&#xff0c;一些不可以 ~ Xen Server需要机器的CPU支持AMD-V 或者 Intel-V 有个支持信息 来自Xenwiki Contents …

JavaWeb关于工程运行的笔记

1、不同IDEA版本创建web部署的方式不同 IDEA2020.3&#xff1a;Idea2020.2.3 创建JavaWeb项目(部署Tomcat)方法 IDEA2020.2&#xff1a;Idea2020.2创建JavaWeb项目(部署Tomcat)方法 注意&#xff1a; 1、在已有工程中创建javaWeb模块也是一样的步骤去部署Tomcat方法。 2、可以…

linux oracle10.2.0.1 lsnrctl无法启动

故障现象&#xff1a;lsnrctl stat后即无任何反应&#xff0c;而SQLPLUS正常&#xff1a; [oraclewlserver3 ~]$ lsnrctl stat LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 13-SEP-2011 23:16:11 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connect…

Xshell使用root用户连接Linux

遇到问题&#xff1a; 我在本地使用 Xftp 向远程 Linux 服务器上传文件时&#xff0c;显示状态 “错误”&#xff0c;经过上网查询说&#xff0c;需要 Xshell 使用 root 用户远程登录才可以传输文件。我的 Linux 服务器系统为 Ubuntu 的系统&#xff0c;本地 Xshell 用 root 用…

检测Java对象所占内存大小 (转载)

2019独角兽企业重金招聘Python工程师标准>>> Dont pay the price for hidden class fields By Vladimir Roubtsov, JavaWorld.com, 08/16/02 Recently, I helped design a Java server application that resembled an in-memory database. That is, we biased the d…

股价涨跌分析程序

http://www.iteye.com/topic/1114623

Xftp上传文件显示状态错误

遇到问题&#xff1a; 我在本地使用 Xftp 向远程 Linux 服务器上传文件时&#xff0c;显示状态 “错误”&#xff0c;经过上网查询说&#xff0c;需要 Xshell 使用 root 用户远程登录才可以传输文件。 问题产生原因&#xff1a; sshd 默认设置不允许 root 用户远程登录&…

田老的语录

1.年轻人&#xff0c;应该充满活力&#xff0c;不应该是对世界充满仇恨和黑暗的&#xff0c;我们始终要相信世界是美好的&#xff0c;生活是美好的&#xff01; 2.技术是很容易学会的&#xff0c;只要你真的用心去学&#xff0c;没什么技术是学不会的&#xff01; 3.我们学一样…

图形处理工具:Photoshop Elements 2020 mac介绍说明

Photoshop Elements 2020 mac简称ps elements 2020&#xff0c;是一款图形处理工具。ps elements 2020 mac可以帮助您自动生成照片和视频作品的功能&#xff0c;采用Sensei AI技术可进行图像组织、编辑和创建等。Photoshop Elements 2020 可以帮助您轻松整理照片和视频&#xf…

Linux版本tomcat下载及安装

下载&#xff1a; ssm war 就需要放在tomcat中运行。 下载地址&#xff1a;http://www.apache.org/ 打开之后进入了Apache官网界面&#xff1a; 一直往下拉&#xff0c;找到我们要的Tomcat 点击tomcat进入其主页面&#xff1a; http://tomcat.apache.org/ 找到我们要下载的版…