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. Sql--order by、desc降序、top

    ---------通过order by 语句进行排序: --1.降序order by 列名desc --2.升序order by 列名   或order by 列名asc --3.order by语句 ...

  2. .NET重构—单元测试的代码重构

    阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: ...

  3. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  4. 从零自学Hadoop(15):Hive表操作

    阅读目录 序 创建表 查看表 修改表 删除表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceL ...

  5. 在Cortex-M系列上如何准确地做us级延时?

    前几天刚好同事问起在Cortex-M上延时不准的问题,在网上也没找到比较满意的答案,干脆自己对这个问题做一个总结. 根据我们的经验,最容易想到的大概通过计算指令周期来解决.该思路在Cortex上并不是 ...

  6. Android 通过 Intent 传递类对象或list对象

    (转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...

  7. html中的meta详解

    1  name=viewport <meta name="viewport" content="width=device-width,initial-scale=1 ...

  8. 解惑spring嵌套事物

    工作中一直对spring中的事物管理都是最简单的配置 但是spring中的事物传播性配置 还有很多种,有时候经常疑惑service调用service的问题,今天的论坛上看到一篇写的非常详细的文字.记录 ...

  9. ipv4理论知识2-分类编址、ip分类、网络标识、主机标识、地址类、地址块

    分类编址 ipv4的体系结构中有分类编址和无分类编址(后续会介绍到),在分类编址时,ipv4地址分为A.B.C.D.E这5类.每类占用的IP比例和个数如下图: ipv4分类识别 计算机以二进制方式存储 ...

  10. Vim插件管理

    一.简介 二.管理器 1)Vundle https://github.com/gmarik/vundle.git 2)vim-plug https://github.com/junegunn/vim- ...