题解

115 条题解

  • 0
    @ 2009-08-13 12:48:24

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    庆祝实质性的一次Ac!

    ---|---|---|---|---|---|---|---|-晒程序---|---|---|---|---|---|---|-

    program v1306;

    var f:array[0..81] of string;

    a:array[1..80] of integer;

    x:string;

    t1,t2:qword;

    i,j,k,l,l1:integer;

    begin

    readln(x);

    l:=length(x);

    for i:=0 to 81 do f[i]:='';

    f[1]:=x[1];

    for i:=1 to l do

    begin

    for j:=1 to i-1 do

    begin

    val(copy(x,j+1,i-j),t1);

    val(f[j],t2);

    if t1>t2 then f[i]:=copy(x,j+1,i-j);

    end;

    if f[i]='' then f[i]:=f+x[i];

    end;

    i:=1;

    repeat

    a[i]:=l;

    l1:=length(f[l]);

    dec(l,l1);

    inc(i);

    until l=0;

    for j:=i-1 downto 1 do

    begin

    write(f[a[j]]);

    if j>1 then write(',');

    end;

    writeln;

    end.

  • 0
    @ 2009-08-13 10:30:23

    [red]

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    [yellow]├ 测试数据 05:答案正确... 0ms

    [blue]├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    我这题能通过主要是因为vj上这题数据比较水!

    我在rq上交只有60分!

  • 0
    @ 2009-08-06 19:56:54

    You Show Me What is 'WS'.

  • 0
    @ 2009-08-04 10:37:16

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    过了,YEAH

  • 0
    @ 2009-08-02 15:40:20

    f[i]表示前i位数添加尽量多的逗号,最后一个数的最小值(最后一个数最小既可以方便后面添加逗号,又可以使前面的数尽量大)。方程

    f[i]=copy(st,j+1,i-j)(满足copy(st,j+1,i-j)>f[j],且j尽量大)。

  • 0
    @ 2009-07-30 11:12:52

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    一直检查将近30分钟

    先是没考虑怎么处理0的问题

    其次是比较的问题(记得一次提交上去,全部超时!!)

    但是还是不行

    .....

    最后才发现.....初始值没赋值 o(>﹏length(b) do b:='0'+b;

    while length(b)>length(a) do a:='0'+a;

    exit((a>b)or((a=b)and(c>d)));

    end;

    procedure outit(k:longint);

    begin

    if k-length(s[k])

  • 0
    @ 2009-07-17 19:24:08

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    我按单词那道题做得,竟对了

  • 0
    @ 2009-07-12 19:30:29

    改为longint后20分…………!

  • 0
    @ 2009-07-10 23:02:51

    //dp[i]表示前i位数最后一个逗号的位置

    //dp[i]=max{k | s(dp[k]+1~k)

  • 0
    @ 2009-06-11 13:34:21

    F为前I个,分J分,最后一组为第一个数为K

  • 0
    @ 2009-06-03 08:13:36

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    好J!

    感谢数据:0010020030004

    一定要输出00,1,002,003,0004

    比较的时候,000>00!也就是同样的值,前导零多的也算大!

    另外感谢‘badboypeter’的字符串比较过程!

  • 0
    @ 2009-05-19 21:25:37

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    DP数组f表示前i个数分成j份,最后一个序列的第一个位列最大为多少。

    核心方程:

    for i:=1 to l do

    f:=1;

    for k:=2 to l do

    for i:=k to l do begin

    f:=0;

    for j:=i-1 downto k-1 do

    if (f[j,k-1]>0)and (copy(s,f[j,k-1],j+1-f[j,k-1] 小于copy(s,j+1,i-j))

    then begin

    f:=j+1;

    break;

    end;

    end;

  • 0
    @ 2009-05-09 16:41:48

    var

    str:string;

    f:array [0..80] of string;

    procedure init;

    begin

    readln(str);

    end;

    function compare(aa,bb:string):boolean;

    var aaa,bbb:longint;

    begin

    val(aa,aaa); val(bb,bbb);

    if aaa>bbb then exit(true)

    else exit(false);

    end;

    procedure main;

    var i,j,len,p:longint; flag1,flag:boolean; data:string;

    begin

    flag:=false;

    data:='';

    j:=1;

    len:=length(str);

    p:=1;

    if str[1]='0' then begin inc(j);

    f[1]:='0'; p:=2; end;

    for i:=p to len do

    begin

    data:=data+str[i];

    if (compare(data,f[j-1])) then begin f[j]:=data; inc(j); data:=''; end

    else if i=len then flag1:=true;

    end;

    flag:=true;

    for i:=1 to j-1 do

    if flag then begin write(f[i]); flag:=false; end else

    write(',',f[i]);

    if flag1 then write(data);

    writeln;

    end;

    begin

    init;

    main;

    end.

    哪里错了呢?应该有多种答案的!

    我知道了,不能用贪心=.=

  • 0
    @ 2009-04-26 17:31:15

    Accepted 有效得分:100 有效耗时:2057ms

    用string裸加的0...

  • 0
    @ 2009-04-19 19:56:55

    全过 0ms 去0不用考虑 可以直接把每一次的值*10加上去 很简单的样子哦 一维的real 程序: 不过有点长

    var

    ch:char;

    m,a,next:array[0..80] of longint;

    f:array[0..80] of real;

    tmp,n,now:longint;

    ti,b:qword;

    first:boolean;

    procedure w(s:longint);

    begin

    if s=0 then exit;

    w(next);

    for tmp:=(next+1) to s do write(a[tmp]);

    write(',');

    end;

    begin

    while not eoln do

    begin

    inc(n);

    read(ch);

    a[n]:=ord(ch)-48;

    end;

    b:=1;

    for now:=1 to n do

    begin

    first:=true;

    for tmp:=now downto 1 do

    begin

    ti:=ti+a[tmp]*b;

    b:=b*10;

    if ((m[tmp]+1)>=m[now])and((tif[tmp-1]) then

    begin

    first:=false;

    m[now]:=m[tmp-1]+1;

    f[now]:=ti;

    next[now]:=tmp-1;

    end;

    end;

    ti:=0;

    b:=1;

    end;

    w(next[n]);

    for tmp:=(next[n]+1) to n do write(a[tmp]);

    end.

  • 0
    @ 2009-04-17 14:28:56

    程序跑的够慢。。。。。string真慢。

    编译通过...

    ├ 测试数据 01:答案正确... 244ms

    ├ 测试数据 02:答案正确... 275ms

    ├ 测试数据 03:答案正确... 259ms

    ├ 测试数据 04:答案正确... 228ms

    ├ 测试数据 05:答案正确... 228ms

    ├ 测试数据 06:答案正确... 228ms

    ├ 测试数据 07:答案正确... 228ms

    ├ 测试数据 08:答案正确... 259ms

    ├ 测试数据 09:答案正确... 244ms

    ├ 测试数据 10:答案正确... 228ms

    ├ 测试数据 11:答案正确... 244ms

    ├ 测试数据 12:答案正确... 244ms

    ├ 测试数据 13:答案正确... 228ms

    ├ 测试数据 14:答案正确... 197ms

    ├ 测试数据 15:答案正确... 244ms

    ├ 测试数据 16:答案正确... 212ms

    ├ 测试数据 17:答案正确... 244ms

    ├ 测试数据 18:答案正确... 259ms

    ├ 测试数据 19:答案正确... 275ms

    ├ 测试数据 20:答案正确... 244ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:4812ms

  • 0
    @ 2009-04-03 13:27:53

    貌似很简单啊!

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    var opt,ans:array[0..81,0..81] of longint;

    st,tmp:string;

    l,i,k,j:longint;

    function Max(l1,r1,l2,r2:longint):boolean;

    var i:longint; t1,t2:string;

    begin

    t1:=copy(st,l1,r1-l1+1); t2:=copy(st,l2,r2-l2+1);

    while (t1'0') and (t1[1]='0') do delete(t1,1,1);

    while (t2'0') and (t2[1]='0') do delete(t2,1,1);

    if length(t1)>length(t2) then exit(true) else

    if length(t2)>length(t1) then exit(false) else

    for i:=1 to length(t1) do

    if t1[i]>t2[i] then exit(true) else

    if t2[i]>t1[i] then exit(false);

    exit(false);

    end;

    begin

    readln(st); l:=length(st);

    fillchar(opt,sizeof(opt),200);

    for i:=1 to l do begin opt:=1; ans:=0; end;

    for i:=1 to l do

    for j:=1 to i do

    for k:=1 to i-j do

    if Max(i-j+1,i,i-j-k+1,i-j) then

    if optopt[l,j] then j:=k;

    k:=l;

    repeat

    st:=copy(tmp,k-j+1,j)+','+st; i:=ans[k,j];

    k:=k-j; j:=i;

    until j=0;

    delete(st,length(st),1);

    writeln(st);

    end.

  • 0
    @ 2009-02-15 08:49:17

    数字有时候会很大,字符转数字,装数字最好用QWORD

    var

    a:array[1..80]of string;

    p,s:string;

    t1,t2:qword;

    i,j,k,l,t:longint;

    function notd(h:string):boolean;

    var

    i:longint;

    begin

    for i:=1 to length(h) do if h[i]=',' then exit(false);

    exit(true);

    end;

    begin

    readln(s);

    a[1]:=s[1];

    for i:=2 to length(s) do

    begin

    a[i]:=a+s[i];

    for j:=i-1 downto 1 do

    begin

    k:=length(a[j]);

    if notd(a[j]) then

    begin

    p:='';

    for l:=1 to length(a[j]) do p:=p+a[j][l];

    val(p,t1);

    end

    else

    begin

    while (a[j][k-1]',')and(k-10) do k:=k-1;

    p:='';

    for l:=k to length(a[j]) do p:=p+a[j][l];

    val(p,t1);

    end;

    p:='';

    for t:=j+1 to i do p:=p+s[t];

    val(p,t2);

    if t1

  • 0
    @ 2009-02-06 22:07:34

    很让人费解一道题目,建议大家先仔细看题

    数字比较大小,要去零

  • 0
    @ 2009-01-31 12:39:23

    第一次 1会变成笑脸符号 '囧;

    第二次 所有前导0消失...猥琐的错误

    第三次 突然编译不过 囧TZ地改啊

    第四次 发现题目都被我看错我真TMD有才

    ├ 测试数据 01:运行时错误...|错误号: 128

    ├ 测试数据 02:运行时错误...|错误号: 128

    ├ 测试数据 03:运行时错误...|错误号: 128

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:运行时错误...|错误号: 128

    ├ 测试数据 06:运行时错误...|错误号: 128

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:运行时错误...|错误号: 128

    ├ 测试数据 10:运行时错误...|错误号: 128

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:运行时错误...|错误号: 128

    ├ 测试数据 13:运行时错误...|错误号: 128

    ├ 测试数据 14:运行时错误...|错误号: 128

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:运行时错误...|错误号: 128

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:运行时错误...|错误号: 128

    ├ 测试数据 19:运行时错误...|错误号: 128

    ├ 测试数据 20:运行时错误...|错误号: 128

    囧a

    最后发现是因为直接给string赋字符...猥琐啊

    编译通过...

    ├ 测试数据 01:答案正确... 0ms

    ├ 测试数据 02:答案正确... 0ms

    ├ 测试数据 03:答案正确... 0ms

    ├ 测试数据 04:答案正确... 0ms

    ├ 测试数据 05:答案正确... 0ms

    ├ 测试数据 06:答案正确... 0ms

    ├ 测试数据 07:答案正确... 0ms

    ├ 测试数据 08:答案正确... 0ms

    ├ 测试数据 09:答案正确... 0ms

    ├ 测试数据 10:答案正确... 0ms

    ├ 测试数据 11:答案正确... 0ms

    ├ 测试数据 12:答案正确... 0ms

    ├ 测试数据 13:答案正确... 0ms

    ├ 测试数据 14:答案正确... 0ms

    ├ 测试数据 15:答案正确... 0ms

    ├ 测试数据 16:答案正确... 0ms

    ├ 测试数据 17:答案正确... 0ms

    ├ 测试数据 18:答案正确... 0ms

    ├ 测试数据 19:答案正确... 0ms

    ├ 测试数据 20:答案正确... 0ms

    ---|---|---|---|---|---|---|---|-

    Accepted 有效得分:100 有效耗时:0ms

    #include

    #include

    using namespace std;

    string ins,map[81],k;

    int n,i,j,h,dp[81],num[81];

    int work(int w){

    if(w==0) return 0;

    work(num[w]);

    for(j=num[w]+1;j

信息

ID
1306
难度
6
分类
动态规划 点击显示
标签
(无)
递交数
1046
已通过
303
通过率
29%
被复制
4
上传者