UVa 10602 Editor Nottoobad:等价转换思想

10602 - Editor Nottoobad

Time limit: 3.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1543

Company Macrohard has released it’s new version of editor Nottoobad, which can understand a few voice commands. Unfortunately, there are only two voice commands that it can understand – “repeat the last word”, “delete the last symbol”. However, when one uses “repeat the last word” the editor inserts a blank that separates the words. But the company claims that it is possible to type much faster – simply by less number of presses. For example, such a phrase like “this thin thing” requires only 6 presses of the keyboard.

Action Number
of presses
Content of the document
Press "this" 4 This
Say “repeat the last word” 0 this this
Say “delete the last symbol” 0 this thi
Press "n" 1 this thin
Say “repeat the last word” 0 this thin thin
Press "g" 1 this thin thing

In order to increase the popularity of it’s product the company decided to organize a contest where the winner will be a person who types a given number of words with minimum number of presses. Moreover, the first word must be typed first, and all the others can be typed in arbitrary order. So, if words “apple”, “plum” and “apricote” must be typed, the word “apple” must be typed first, and the words “plum” and “apricote” can be switched. And the most important for you – you are going to take part in the contest and you have a good friend in the company, who told you the word which will be used in the contest. You want be a winner J, so you have to write a program which finds the order of the words, where the number of presses will be minimum.

Input

The first line of the input contains the T (1≤T≤15) the number of test cases. Then T test cases follow. The first line of each test contains a number N (1≤N≤100) – the number of words that must be pressed. Next N lines contain words – sequences of small Latin letters, not longer than 100 symbols. Remember that the first word must be pressed first!

Output

The first line of the output contains number X - the minimum number of presses, which one has to do in order to type all the words using editorNottoobad. Next N lines contain the words in that minimum order. If there are several solutions, you can output one of them.

Sample Input Sample Output
3
3
this
thin
thing
4
popcorn
apple
apricote
plum
2
hello
hello
6
this
thin
thing
21
popcorn
plum
apricote
apple
5
hello
hello

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/

时间: 2024-10-02 16:06:59

UVa 10602 Editor Nottoobad:等价转换思想的相关文章

uva 10602 - Editor Nottoobad

点击打开链接uva 10602 题目意思:    有n个单词需要输入,第一个单词必须要动手输入.现在有两种命令,"repeat the last word"复制最后一个单词,"delete the last symbol"删除最后一个单词的最后一个字母.问我们最少需要动手输入几次 解题思路:    1:思路:排序+枚举每个单词                       2:由于有了两种命令,copy最后一个单词和删除最后一个单词的最后一个字母,并且可以无限的使用,

UVa 10602

链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1543 类型:贪心 原题: Company Macrohard has released it's new version of editor Nottoobad, which can understand a few voice commands.

转换-有没有关于“将A算法等价转化为B算法”的资料或书籍?

问题描述 有没有关于"将A算法等价转化为B算法"的资料或书籍? 就是将算法进行等价转换的一些方法:串行算法转并行算法,或者是原来的算法只有一个循环变量,而转换后的算法新增了一个循环变量. 解决方案 真正的并行算法还是要靠人去找. 比如说,现在我们还没有找到一种求圆周率10进制结果的并行算法,虽然它的串行算法有很多. 解决方案二: 如果串行算法能转化为并行的,编译器和cpu就帮你做了. 你说的书籍无非就是编译原理,编译的过程其实就是寻找等价并且最优化的算法.

我是这么利用数据:1-1+1-1+…=0.5?

说起这个算式,其实是个经典的问题,最近看到一个视频说得出结论:答案是0.5,我觉得挺有意思,上学 时我们都是这么算的: 1.把算式看做 (1-1)+(1-1)+(1-1)- 由于每个部分都是0,结果是0 2.如果是1-(1-1)-(1-1)-.. 由于除第一项之外,其他都是0,结果是1 可以看到,随着视角不同,结果也随之不同,也就是不同人去看这个问题,得到的答案是不一致的,这样 的问题通常颇为有趣,这可以挖出很多好玩的,不过今天我们专注于这个问题本身!今天和大家分享一点关于 这个算式的故事和心得

Java语法基础(四)----循环结构语句

一.循环结构: 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环. 循环语句的组成: 初始化语句:一条或者多条语句,这些语句完成一些初始化操作. 判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体. 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情. 控制条件语句:这个部分在一次循环体结束后,下一

量子纠缠:从量子物质态到深度学习

1. 引言 经典物理学的主角是物质和能量.20 世纪初,爱因斯坦写下E =mc2 ,将质量和能量统一在了一起.而从那之后,一个新角色--信息(Information)--逐渐走向了物理学舞台的中央.信息是关于不确定程度的度量.Shannon 创立信息论的初衷是为了定量化地描述信息的存储和传输.Jaynes 从信息论的角度研究多粒子体系,重新阐释了统计力学.原来,物理学家所熟知的热力学熵与Shannon 用来衡量信息量的信息熵(Information Entropy)系出同源.Landauer 指

Java基础-04.总结switch,for,while,do。while跳转语句

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:switch语句(掌握) (1)格式:switch(表达式) {case 值1:语句体1;break;case 值2:语句体2;break;...default:语句体n+1;break;} 格式解释说明:sw

用大数据感知美德的力量

如何提高学校德育的实效性一直是理论和实践界关注的话题,"德融数理·知行合一"德育模式即为提升德育实效的一种新探索,也是贯彻立德树人.德育一体化建设的新思路.该模式旨在通过大数据的方式挖掘和整理各种价值观背后的数据和道理来提高道德教育的说服力.感染力.趣味性和针对性,从而别开生面,从根本上区别于那种空洞枯燥.概念化.模糊化的德育方式,在极大提高德育实效性的同时,也把德育和数理.学科教育融为一体.该模式的优点还在于可以根据需要灵活运用于德育课.班会.活动.学科教学等各个方面.多年的实践和验

Java语法基础之循环结构语句详解_java

一.循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环. 循环语句的组成: 初始化语句:一条或者多条语句,这些语句完成一些初始化操作. 判断条件语句:这是一个boolean 表达式,这个表达式能决定是否执行循环体. 循环体语句:这个部分是循环体语句,也就是我们要多次做的事情. 控制条件语句:这个部分在一次循环体结束后,下一次