1772 歌词

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
 
题目描述 Description

35
痛过以后才知情已难寻
吾爱至斯只剩飞花梦影
回首再望蜀山依旧伫立
看尽浮沉独饮回忆
——《少年情》

旋律动听的曲子,伴着意境深远的歌词 而显得更加优美。要想学会一首歌,没有
一份装订精美的歌词,你让我情何以堪。
你的任务是,将一份歌词,按照给出规则整理好。

输入描述 Input Description

若干行文字(包括按规定格式给出歌曲名,歌词)
每一行格式为标识+内容
标识[name]表示后接歌曲名
标识[mm:ss]表示后接歌词,其中m,s表示每一位数字,为歌词出现的时间。保证符
合正常的计时方式。
若存在时间相同的歌词,则应按规则依次首尾相连在同一行输出,规则如下:
长度短的靠前;
长度相同则字典序小的靠前。

输出描述 Output Description

第一行八个空格+歌曲名
第二行及以后按时间顺序列出歌词

样例输入 Sample Input

[00:02]she is the heaven-sent angel you met
[00:05]=.=.=.=.=
[00:04]she is so pretty all over the world
[00:01]she is the one that you never forget
[name]she
[00:03]oh,she must be the reason why God made a girl

样例输出 Sample Output

she
she is the one that you never forget
she is the heaven-sent angel you met
oh,she must be the reason why God made a girl
she is so pretty all over the world
=.=.=.=.=

数据范围及提示 Data Size & Hint

保证歌曲名和歌词均为英文字母,字符。
保证每一行不超过256 个字符
保证输入不超过2000 行

分类标签 Tags

 
枚举
 
//这题有毒!
#include<cstdio>
#include<algorithm>
using namespace std;
struct node{char r[];int tt,ss,cd;}q[];
bool cmp(const node&a,const node&b)
{
if(a.tt!=b.tt) return (a.tt<b.tt);
if(a.ss!=b.ss) return (a.ss<b.ss);
if(a.cd!=b.cd) return (a.cd<b.cd);
for(int i=;i<a.cd;i++)
if(a.r[i]!=b.r[i]) return (a.r[i]<b.r[i]);
return ;
}
int main()
{
int h=,pl=,i,k;
char a,b,c;
while(scanf("%c",&c)!=EOF)
{
if(c=='['&&pl==)
{
scanf("%c%c",&a,&b);
if(a=='n')
{
q[h].ss=;q[h].tt=;
while(c!=']') scanf("%c",&c);
continue;
}
else
{
q[h].tt=((int)(a))*+((int)(b));
scanf(":%d]",&q[h].ss);
continue;
}
}
if(c=='\n')
{
q[h].cd=pl;
pl=;
h++;
continue;
}
q[h].r[pl++]=c;
}
q[h].cd=pl;
h++;
sort(q,q+h,cmp);
for(i=;i<;i++) printf(" ");
for(i=;i<h;i++)
{
int j;
for(j=;j<q[i].cd;j++)
{
if(q[i].r[j]>='A'&&q[i].r[j]<='z') printf ("%c",q[i].r[j]);
if(q[i].r[j]==' '||q[i].r[j]=='-'||q[i].r[j]==','||q[i].r[j]=='='||q[i].r[j]=='.')
printf ("%c",q[i].r[j]);
}
if(i==h-) return ;
if(q[i+].tt==q[i].tt&&q[i+].ss==q[i].ss) continue;
printf("\n");
}
/*为什么这样不对呢???为什么提交零分呢?
for(int i=0;i<h;i++)
{
printf("%s",q[i].r);
if(q[i+1].tt==q[i].tt&&q[i+1].ss==q[i].ss) ;
else printf("\n");
}*/
return ;
}

codevs 1772 歌词的更多相关文章

  1. codevs 3289 花匠

    题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...

  2. iOS从零开始学习直播之音频4.歌词

      上一篇讲了歌曲的切换,这一篇主要讲歌词部分的实现.   先看效果图.当歌手唱到这句歌词时候,我们要标记出来,这里显示字体为黄色. 1.获取歌词   一般歌词都是一个链接.类似于"http ...

  3. codevs 1082 线段树练习 3(区间维护)

    codevs 1082 线段树练习 3  时间限制: 3 s  空间限制: 128000 KB  题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...

  4. codevs 1285 二叉查找树STL基本用法

    C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...

  5. codevs 1576 最长上升子序列的线段树优化

    题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...

  6. codevs 1080 线段树点修改

    先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...

  7. codevs 1228 苹果树 树链剖分讲解

    题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...

  8. codevs 1082 线段树区间求和

    codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...

  9. codevs 1052 地鼠游戏

    1052 地鼠游戏 http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不 ...

随机推荐

  1. DP优化与换零钱问题

    1 当贪心不再起效的时候 对于换零钱问题,最简单也是性能最好的方法就是贪心算法.可是贪心算法一定要满足面值相邻两个零钱至少为二倍关系的前提条件.例如1,2,5,10,20……这样的零钱组应用贪心最简单 ...

  2. String.SubString

    1理论 String.SubString(int index,int length) index:开始位置,从0开始 length:你要取的子字符串的长度 2实验   string my = &quo ...

  3. 从零自学Hadoop(13):Hadoop命令下

    阅读目录 序 MapReduce Commands User Commands Administration Commands YARN Commands User Commands Administ ...

  4. ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper的解决办法

    如下图: 如果出现了这样的错误,最大的可能是:你没有在 WEB-INF/lib 目录下放入相关的jar包(jackson-core/annotations/databind.jar) 如果你在WEB- ...

  5. HDFS Federation (读书笔记)

    HDFS Federation (读书笔记) HDFS的架构 HDFS包含两个层次:命名空间管理(Namespace) 和 块/存储管理(Block Storage). 命名空间管理(Namespac ...

  6. HTML基本组成结构与标签的认识

    HTML基本组成结构与标签 其实组成结构用一张图来简单了解下如下 目前一般网站的结构是会如此不是很清晰简单 先来说说header头部 这样是不是更加清楚了 导航栏是引导用户查看网站内容的快捷入口,打个 ...

  7. C# 自定义文件图标 双击启动 (修改注册表)

    程序生成的自定义文件,比如后缀是.test 这种文件怎么直接启动打开程序,并打开本文件呢 1.双击打开 2.自定义的文件,有图标显示 3.自定义的文件,点击右键有相应的属性 后台代码:(如何在注册表中 ...

  8. 如何区分/dev/input/event

    方法是把每一个/dev/input/event打开.通过ioctl函数来读取设备name,每一个设备name是固定的,可以根据name区分event.我这是查找触摸事件为例:代码如下: static ...

  9. 报表软件JS开发引用HTML DOM的location和document对象

    上一次提到,在报表软件FineReport的JavaScript开发中,可以访问并处理的HTML DOM对象有windows.location.document三种.这次就继续介绍后两种,locati ...

  10. hdu-5977 Garden of Eden(树分治)

    题目链接: Garden of Eden Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...