22 条题解
-
0liyinghaowei LV 10 @ 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.
秒杀 -
02014-01-06 22:08:19@
提交1:调试用的String没改回AnsiString……
提交2:处理第五个点的双冒号没处理好……
FIN -
02009-10-21 11:15:04@
imba做了一上午。。。
-
02009-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
输出歌词显示时的结果(即按照时间标签排序好的歌词) -
02009-09-09 18:10:35@
样例什么意思啊?
-
02009-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 -
02009-06-16 17:02:12@
├ 测试数据 08:答案错误...程序输出比正确答案短
...
第一次看到这句话... -
02009-01-12 18:45:33@
我做起来挺复杂的...
不过每一部份都不难 -
02008-12-14 10:53:00@
靠靠
写了1952字节。。 -
02008-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牛准确地指出了俺的错误 = =
-
02008-10-29 10:24:48@
很简单!!!40多行就行了。
-
02008-10-23 22:40:32@
感谢lemon_cn大牛。。。让我发现我非常白痴的错误。。。时间有小数点。
囧。。。 -
02008-10-14 21:25:29@
玩死我了.....
-
02008-10-01 18:19:09@
赞成大家的说法,另外就是觉得楼下是不是神经出毛病了?
字符串也可以比较大小,是逐位比较,可以不用val转换,本人用Val结果var定义出问题,pascal就是认死理啊,不同类型的数组不能赋值,设成同类型的话Val出错~~~~~~~~~~~~~~~~晕 -
02008-09-07 14:54:27@
我比较菜 6次才AC....
注意:一句歌词中会出现有:或者],但是前面没有[的情况
-
02008-08-23 08:51:06@
字符串处理的好题,无思想,但有水准。
辛苦奋斗,一次ac,但写了2.1k。
顺带说,崇拜楼下! -
02008-08-20 22:41:24@
偶写到700bytes以下了
-
02008-08-17 14:40:19@
时间可以用字符串直接比较.
-
02008-08-12 17:20:31@
弱弱地问一下...
[offset:时间补偿值] 其单位是毫秒,正值表示整体提前,负值相反。这是用于总体调整显示快慢的。
这个是什么意思??? -
02008-08-11 15:08:15@
不要嫌题太烦就不做.万一考试就是这种鸟题呢怎么办?没什么思想,把分,秒,毫秒转换出来加个排序就OK!