题解

22 条题解

  • 0
    @ 2014-10-04 18:43:00

    var
    a:array[1..100]of ansistring;
    b:array[1..100]of longint;
    s:ansistring;
    x,y,i,n:longint;
    procedure qsort(l,r:longint);
    var
    i,j,mid,t:longint;
    x:ansistring;
    begin
    i:=l;j:=r;mid:=b[(l+r)shr 1];
    repeat
    while b[i]<mid do inc(i);
    while b[j]>mid do dec(j);
    if i<=j then begin t:=b[i];b[i]:=b[j];b[j]:=t;
    x:=a[i];a[i]:=a[j];a[j]:=x;inc(i);dec(j);end;
    until i>j;
    if i<r then qsort(i,r);
    if l<j then qsort(l,j);
    end;
    begin
    readln(n);
    for i:=1 to n do begin
    readln(s);
    if s[pos(']',s)-6]=':' then begin a[i]:=copy(s,11,length(s)-10);
    val(copy(s,2,2),x);b[i]:=x*10000;val(copy(s,5,2),x);b[i]:=b[i]+x*100;
    val(copy(s,8,2),x);b[i]:=b[i]+x;end;
    if s[14]=':' then begin inc(y);a[y+n]:=copy(s,21,length(s)-20);
    val(copy(s,12,2),x);b[y+n]:=x*10000;val(copy(s,15,2),x);b[y+n]:=b[y+n]+x*100;
    val(copy(s,18,2),x);b[y+n]:=b[y+n]+x;delete(a[i],1,10);end;
    end;
    qsort(1,n+y);
    for i:=1 to y+n do writeln(a[i]);
    end.
    秒杀

  • 0
    @ 2014-01-06 22:08:19

    提交1:调试用的String没改回AnsiString……
    提交2:处理第五个点的双冒号没处理好……
    FIN

  • 0
    @ 2009-10-21 11:15:04

    imba做了一上午。。。

  • 0
    @ 2009-10-20 15:02:13

    最新消息:经过我的试验发现 数据就这几个特殊情况

    1、(这个不算特殊情况,但是对于我这种没看到题 只有样例的来说 就算了)标签重叠 但是你只要处理标签在开头的就可以了(第6个第10个点)

    即:[09:09:3][00:53]%&%¥%*&……*&

    2、(这个应该是数据问题!BS出题人!!)[xx:xx:xx]存在这样的时间标签 其实意思是这样的[xx:xx.xx](第5个点)

    最后欢呼一下AC啦~第一次做这样的题做出来心情不是特别急躁~~

    忽然发现 我是114人通过 400次提交~~~

    Flag   Accepted

    题号   P1397

    类型(?)   字符串处理

    通过   114人

    提交   400次

    通过率   28%

    难度   1

    ---|---|---|---|---|---|--更新线---|---|---|---|---|---|---|

    在只看样例的情况下做了一下 70分。。。。。

    终于在百度快照上找到题了:

    背景 Background

    HYH同学喜欢听歌,尤其喜欢看歌词……由于个人问题,他开始对LRC歌词进行研究……

    描述 Description

    众所周知地,听音乐想看歌词可以安装《千千静听》或者Winamp+歌词显示插件等等软件实现。而现在的歌词,大多是以lrc为后缀名的歌词文件。

    HYH同学最近在使用此类软件的时候,萌发了想制作一个同类软件的念头。可是由于他只有囧力没有编程力,所以只好靠你了。

    附Lrc格式说明:

    LRC 歌词是一种包含着“[*:*]”形式的“标签(tag)”的、基于纯文本的歌词专用格式。最早由郭祥祥先生(Djohan)提出并在其程序中得到应用。这种歌词文件既可以用来实现卡拉OK功能(需要专门程序),又能以普通的文字处理软件查看、编辑。当然,实际操作时通常是用专门的LRC歌词编辑软件进行高效编辑的。以下具体介绍LRC格式中的“标签”。

    时间标签(Time-tag)

    形式为"[mm:ss]"或"[mm:ss.fff]"(分钟数:秒数)。数字须为非负整数,比如"[12:34.5]"是有效的,而"[0x0C:-34.5]"无效。

    它可以位于某行歌词中的任意位置。一行歌词可以包含多个时间标签(比如歌词中的迭句部分)。根据这些时间标签,用户端程序会按顺序依次高亮显示歌词,从而实现卡拉OK功能。

    标识标签(ID-tags)

    其格式为"[标识名:值]"。大小写等价。以下是预定义的标签。

    [ar:艺人名]

    [ti:曲名]

    [al:专辑名]

    [by:编者(指编辑LRC歌词的人)]

    [offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。

    以下列出了开发支持LRC格式的软件时应遵守的一些标准。

    无论是否在行首,行内凡具有“[*:*]”形式的都应认为是标签。(注意:其中的冒号并非全角字符“:”)

    凡是标签都不应显示。

    凡是标签,且被冒号分隔的两部分都为非负数,则应认为是时间标签。因此,对于非标准形式(非“[mm:ss]”)的时间标签也应能识别(如“[0:0]”)。

    凡是标签,且非时间标签的,应认为是标识标签。

    标识名中大小写等价。

    为了向后兼容,应对未定义的新标签作忽略处理。另应对标识标签后的同一行内容作忽略处理。

    应允许一行中存在多个标签,并能正确处理。为简化本题,一行中不会同时存在标识标签和时间标签。

    应能正确处理未排序的标签。

    注意:为简化本题,数据保证正确,不存在未定义标签等格式问题。并且保证时间没有相同的。

    输入格式 Input Format

    第一行一个整数n,表示输入的行数。

    接下来有n行,每行有一个字符串,整个输入文件是一个lrc文件。

    字符串长度有可能超过255,请注意处理。

    时间标签保证不超过100个。

    输出格式 Output Format

    输出歌词显示时的结果(即按照时间标签排序好的歌词)

  • 0
    @ 2009-09-09 18:10:35

    样例什么意思啊?

  • 0
    @ 2009-08-01 01:08:04

    program vijos1397;

    type timetag=record

    minute:real;

    second:real;

    lrctag:integer;

    end;

    var code,colon,order,i,j,a:integer;

    m,n,p,q,ylrclgt,tiex,b:integer;

    lrc,ylrc :array[1..100] of ansistring;

    time :array[1..100] of timetag;

    timestr :string;

    tiexcr :real;

    begin

    assign(input,'lrc.txt');

    reset(input);

    assign(output,'lrcout.txt');

    rewrite(output);

    order:=0;

    readln(n);

    for i:=1 to n do

    begin

    readln(ylrc[i]);

    a:=0;

    ylrclgt:=length(ylrc[i]);

    j:=1;

    while j

  • 0
    @ 2009-06-16 17:02:12

    ├ 测试数据 08:答案错误...程序输出比正确答案短

    ...

    第一次看到这句话...

  • 0
    @ 2009-01-12 18:45:33

    我做起来挺复杂的...

    不过每一部份都不难

  • 0
    @ 2008-12-14 10:53:00

    靠靠

    写了1952字节。。

  • 0
    @ 2008-11-11 11:42:37

    这个数据拿去测吧.......

    11

    [ar:Archer]

    [ti:UBW]

    [al:Fate / Stay Night]

    [by: .. - -b]

    [09:09.3]Yet, those hands will never hold anything.

    [00:52]I have created over a thousand blades.

    [00:05.52]Steel is my body, and fire is my blood.

    [15:44]So as I pray, Unlimited Blade Works.

    [00:02]I am the bone of my sword.

    [01:4.2]Unknown to death, Nor known to life.

    [09:09]Have withstood pain to create many weapons.

    严重感谢楼下下..下daoshily牛准确地指出了俺的错误 = =

  • 0
    @ 2008-10-29 10:24:48

    很简单!!!40多行就行了。

  • 0
    @ 2008-10-23 22:40:32

    感谢lemon_cn大牛。。。让我发现我非常白痴的错误。。。时间有小数点。

    囧。。。

  • 0
    @ 2008-10-14 21:25:29

    玩死我了.....

  • 0
    @ 2008-10-01 18:19:09

    赞成大家的说法,另外就是觉得楼下是不是神经出毛病了?

    字符串也可以比较大小,是逐位比较,可以不用val转换,本人用Val结果var定义出问题,pascal就是认死理啊,不同类型的数组不能赋值,设成同类型的话Val出错~~~~~~~~~~~~~~~~晕

  • 0
    @ 2008-09-07 14:54:27

    我比较菜 6次才AC....

    注意:一句歌词中会出现有:或者],但是前面没有[的情况

  • 0
    @ 2008-08-23 08:51:06

    字符串处理的好题,无思想,但有水准。

    辛苦奋斗,一次ac,但写了2.1k。

    顺带说,崇拜楼下!

  • 0
    @ 2008-08-20 22:41:24

    偶写到700bytes以下了

  • 0
    @ 2008-08-17 14:40:19

    时间可以用字符串直接比较.

  • 0
    @ 2008-08-12 17:20:31

    弱弱地问一下...

    [offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。

    这个是什么意思???

  • 0
    @ 2008-08-11 15:08:15

    不要嫌题太烦就不做.万一考试就是这种鸟题呢怎么办?没什么思想,把分,秒,毫秒转换出来加个排序就OK!

信息

ID
1397
难度
8
分类
字符串 | 表达式处理 点击显示
标签
(无)
递交数
258
已通过
36
通过率
14%
被复制
2
上传者