codevs 1772 歌词
1772 歌词
35
痛过以后才知情已难寻
吾爱至斯只剩飞花梦影
回首再望蜀山依旧伫立
看尽浮沉独饮回忆
——《少年情》
旋律动听的曲子,伴着意境深远的歌词 而显得更加优美。要想学会一首歌,没有
一份装订精美的歌词,你让我情何以堪。
你的任务是,将一份歌词,按照给出规则整理好。
若干行文字(包括按规定格式给出歌曲名,歌词)
每一行格式为标识+内容
标识[name]表示后接歌曲名
标识[mm:ss]表示后接歌词,其中m,s表示每一位数字,为歌词出现的时间。保证符
合正常的计时方式。
若存在时间相同的歌词,则应按规则依次首尾相连在同一行输出,规则如下:
长度短的靠前;
长度相同则字典序小的靠前。
第一行八个空格+歌曲名
第二行及以后按时间顺序列出歌词
[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
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
=.=.=.=.=
保证歌曲名和歌词均为英文字母,字符。
保证每一行不超过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 歌词的更多相关文章
- codevs 3289 花匠
题目:codevs 3289 花匠 链接:http://codevs.cn/problem/3289/ 这道题有点像最长上升序列,但这里不是上升,是最长"波浪"子序列.用动态规划可 ...
- iOS从零开始学习直播之音频4.歌词
上一篇讲了歌曲的切换,这一篇主要讲歌词部分的实现. 先看效果图.当歌手唱到这句歌词时候,我们要标记出来,这里显示字体为黄色. 1.获取歌词 一般歌词都是一个链接.类似于"http ...
- codevs 1082 线段树练习 3(区间维护)
codevs 1082 线段树练习 3 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给你N个数,有两种操作: 1:给区 ...
- codevs 1285 二叉查找树STL基本用法
C++STL库的set就是一个二叉查找树,并且支持结构体. 在写结构体式的二叉查找树时,需要在结构体里面定义操作符 < ,因为需要比较. set经常会用到迭代器,这里说明一下迭代器:可以类似的把 ...
- codevs 1576 最长上升子序列的线段树优化
题目:codevs 1576 最长严格上升子序列 链接:http://codevs.cn/problem/1576/ 优化的地方是 1到i-1 中最大的 f[j]值,并且A[j]<A[i] .根 ...
- codevs 1080 线段树点修改
先来介绍一下线段树. 线段树是一个把线段,或者说一个区间储存在二叉树中.如图所示的就是一棵线段树,它维护一个区间的和. 蓝色数字的是线段树的节点在数组中的位置,它表示的区间已经在图上标出,它的值就是这 ...
- codevs 1228 苹果树 树链剖分讲解
题目:codevs 1228 苹果树 链接:http://codevs.cn/problem/1228/ 看了这么多树链剖分的解释,几个小时后总算把树链剖分弄懂了. 树链剖分的功能:快速修改,查询树上 ...
- codevs 1082 线段树区间求和
codevs 1082 线段树练习3 链接:http://codevs.cn/problem/1082/ sumv是维护求和的线段树,addv是标记这歌节点所在区间还需要加上的值. 我的线段树写法在运 ...
- codevs 1052 地鼠游戏
1052 地鼠游戏 http://codevs.cn/problem/1052/ 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能利用一切时间认真高效地学习,他不 ...
随机推荐
- Linux查看设置系统时区
关于时区的概念,其实初中地理课已经涉及,很多人都多少了解一些,可能只是细节搞不太清楚.为什么会将地球分为不同时区呢?因为地球总是自西向东自转,东边总比西边先看到太阳,东边的时间也总比西边的早.东边时刻 ...
- Write on ……… failed: 112(failed to retrieve text for this error. Reason: 15105)
早上检查数据库的备份邮件时,发现一台Microsoft SQL Server 2008 R2 (SP2)数据库的Maintenance Report有错误 在SSMS里面执行Exec YourSQLD ...
- Neo4j图数据库管理系统开发笔记之一:Neo4j Java 工具包
1 应用开发概述 基于数据传输效率以及接口自定义等特殊性需求,我们暂时放弃使用Neo4j服务器版本,而是在Neo4j嵌入式版本的基础上进行一些封装性的开发.封装的重点,是解决Neo4j嵌入式版本Emb ...
- ES5 对象的扩展(Object.preventExtensions)、密封(Object.seal)和冻结(Object.freeze)
前面提到 ES5 对象属性描述符,这篇看看对象的扩展.密封和冻结. 扩展对象 Object.preventExtensions Object.isExtensible 密封对象 Object.seal ...
- 【小白的CFD之旅】05 补充基础
黄师姐是一个很干脆果敢的人,从她的日常装扮就能显露出来.卡帕运动装,白色运动鞋,马尾辫,这是小白对黄师姐的第一印象.“明天早上九点钟来实验室,我给你安排这阵子的任务.”黄师姐对小白说.说话语气和老蓝一 ...
- ANSI Common Lisp Practice - My Answers - Chatper - 2
I work out the questions by myself Chapter 2 question 4. (defun greater (x y) (if (> x y) x y ) ) ...
- Convert Sorted List to Binary Search Tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- Spring源码分析——BeanFactory体系之抽象类、类分析(二)
上一篇分析了BeanFactory体系的2个类,SimpleAliasRegistry和DefaultSingletonBeanRegistry——Spring源码分析——BeanFactory体系之 ...
- 简单的Viewing Frustum Culling
Viewing Frustum Culling是图形绘制流水线中,将不可见物体(即不在视锥体内的物体)提前剔除的操作. 在实践中,精确判断物体的可见性开销较大,因而通常用物体包围球或包围盒与视锥体(平 ...
- C语言编程实现Linux命令——who
C语言编程实现Linux命令--who 实践分析过程 who命令是查询当前登录的每个用户,它的输出包括用户名.终端类型.登录日期及远程主机,在Linux系统中输入who命令输出如下: 我们先man一下 ...