题解

129 条题解

  • 0
    @ 2009-06-10 13:30:57

    编译通过...

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

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

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

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

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

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

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

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

    ├ 测试数据 09:运行超时...

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

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

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

    ├ 测试数据 13:运行超时...

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

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

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

    ├ 测试数据 17:运行超时...

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

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

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

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

    ├ 测试数据 22:运行超时...

    ├ 测试数据 23:运行超时...

    ├ 测试数据 24:运行超时...

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

    ├ 测试数据 26:运行超时...

    ├ 测试数据 27:运行超时...

    ├ 测试数据 28:运行超时...

    ├ 测试数据 29:运行超时...

    ├ 测试数据 30:运行超时...

    ├ 测试数据 31:运行超时...

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

    ├ 测试数据 33:运行超时...

    ├ 测试数据 34:运行超时...

    ├ 测试数据 35:运行超时...

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

    ├ 测试数据 37:运行超时...

    ├ 测试数据 38:运行超时...

    ├ 测试数据 39:运行超时...

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

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

    Unaccepted 有效得分:55 有效耗时:0ms

  • 0
    @ 2009-10-11 16:24:15

    const

    maxl = 2000;

    type

    bitnode = array[0..maxl+1]of longint;

    var

    len, c,n: longint;

    t : array[1..maxl]of shortint;

    best, a, b : bitnode;

    procedure init;

    var

    st : string[200];

    i : longint;

    begin

    readln(st);

    len := length(st);

    for i := 1 to len do begin

      t[i] := ord(st[i])-48;

    end;

    end;

    procedure dec1(var a : bitnode);

    var i : longint;

    begin

    i := 1;

    while a[i] = 0 do begin

    a[i] := 9; inc(i);

    end;

    dec(a[i]);

    if (a[0] > 1) and (a[a[0]] = 0) then dec(a[0]);

    end;

    procedure inc1(var a : bitnode);

    var i : longint;

    begin

    i := 1;

    inc(a[i]);

    while a[i] = 10 do begin

    a[i] := 0;

    inc(i);

    inc(a[i]);

    end;

    if a[a[0]+1] 0 then inc(a[0]);

    end;

    function match(i : longint) : boolean;

    var j : longint;

    begin

    if a[0] < i then begin

    if t[1] 8 then exit(false);

    for j := 1 to a[0] do begin

       if t a[j] then exit(false);

    end;

    exit(true);

    end else begin

    for j := 1 to i do

       if t a[j] then exit(false);

    exit(true);

    end;

    end;

    function can(i : longint) : boolean;

    var j : longint;

    begin

    while i < len do begin

    inc1(b);

    j := i+1;

    while (j b[0] then exit(true);

    if a[0] < b[0] then exit(false);

    for i := a[0] downto 1 do begin

    if a[i] > b[i] then exit(true);

    if a[i] < b[i] then exit(false);

    end;

    exit(false);

    end;

    procedure main;

    var l, i, j, tem : longint; flag : boolean;

    begin

    flag := true;

    for i := 1 to len do if t[i] 0 then begin flag := false; break; end;

    if flag then begin

    best[0] := len+1; best[best[0]] := 1; c := 1;

    print;

    end;

    for i := 1 to len do best[i] := t[len-i+1];

    best[0] := len;

    if t[1] = 0 then begin

    inc(best[0]);

    best[best[0]] := 1;

    end;

    for i := len-len shr 1-1 downto 0 do begin

    flag := true;

    for j := 1 to i do if t[j] t[len-i+j] then begin

       flag := false; break;

    end;

    if flag then begin

       a[0] := len-i;

       tem := 0;

       for j := 1 to a[0] do a[j] := t[a[0]-j+1];

       for j := 1 to a[0]-i do begin

       if (a[a[0]] 0) and ((i = 0) or (a[1] 9) or (t 9)) then if bigger(best, a) then begin best := a; c := tem; end;

       a[a[0]+1] := a[1];

       for l := 1 to a[0] do a[l] := a[l+1];

       a[a[0]+1] := 0;

       inc(tem);

       end;

    end;

    end;

    for l := 1 to best[0] do begin

    for i := l downto 1 do if (i < len) and (t 0) then begin

       fillchar(b, sizeof(b), 0);

       b[0] := l;

       for j := l downto 1 do begin

       if i+l-j+1 > len then break;

       b[j] := t;

       end;

       if (b[0] = 1) and (b[1] = 1) then continue;

       a := b; dec1(a);

       if match(i)

       and can(i+l) then begin

       if bigger(best, a) then begin

       c := a[0]-i;

       best := a;

       end;

       end;

    end;

    end;

    print;

    end;

    begin

    init;

    main;

    end.

  • 0
    @ 2009-06-27 19:35:29

    编译通过...

    ├ 测试数据 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-02-19 19:16:40

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

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

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

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

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

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

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

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

    ├ 测试数据 09:运行超时...

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

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

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

    ├ 测试数据 13:运行超时...

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

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

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

    ├ 测试数据 17:运行超时...

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

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

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

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

    ├ 测试数据 22:运行超时...

    ├ 测试数据 23:运行超时...

    ├ 测试数据 24:运行超时...

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

    ├ 测试数据 26:运行超时...

    ├ 测试数据 27:运行超时...

    ├ 测试数据 28:运行超时...

    ├ 测试数据 29:运行超时...

    ├ 测试数据 30:运行超时...

    ├ 测试数据 31:运行超时...

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

    ├ 测试数据 33:运行超时...

    ├ 测试数据 34:运行超时...

    ├ 测试数据 35:运行超时...

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

    ├ 测试数据 37:运行超时...

    ├ 测试数据 38:运行超时...

    ├ 测试数据 39:运行超时...

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

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

    Unaccepted 有效得分:55 有效耗时:680ms

    var

    s:ansistring;

    a,b:string;

    i:longint;

    begin

    readln(b);

    for i:=1 to maxlongint do

    begin

    str(i,a);

    s:=s+a;

    if pos(b,s)0

    then begin

    writeln(pos(b,s));

    exit;

    end;

    end;

    end.

    题目很强大啊!!!

  • 0
    @ 2009-01-20 19:17:23

    编译通过...

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

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

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

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

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

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

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

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

    ├ 测试数据 09:运行超时...

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

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

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

    ├ 测试数据 13:运行超时...

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

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

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

    ├ 测试数据 17:运行超时...

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

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

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

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

    ├ 测试数据 22:运行超时...

    ├ 测试数据 23:运行超时...

    ├ 测试数据 24:运行超时...

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

    ├ 测试数据 26:运行超时...

    ├ 测试数据 27:运行超时...

    ├ 测试数据 28:运行超时...

    ├ 测试数据 29:运行超时...

    ├ 测试数据 30:运行超时...

    ├ 测试数据 31:运行超时...

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

    ├ 测试数据 33:运行超时...

    ├ 测试数据 34:运行超时...

    ├ 测试数据 35:运行超时...

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

    ├ 测试数据 37:答案正确... 9ms

    ├ 测试数据 38:运行超时...

    ├ 测试数据 39:运行超时...

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

    KMP的后果

    PS:想用KMP的还是做别的题去吧

    ORZ P1005 强大的题目

  • 0
    @ 2009-01-17 16:39:59

    #include

    #include

    #include

    using namespace std;

    int main(){

    int i;

    string str,str2;

    stringstream a;

    cin>>str2;

    for(i=1;i

  • 0
    @ 2009-01-05 12:53:52

    19行 32分 超级猥琐题

  • 0
    @ 2008-12-26 19:56:42

    谁会啊?

    不是CHEAT的.

    会的CALL我啊!

  • 0
    @ 2008-11-10 08:29:50

    打了两天的程序

    只得了50

    想CHEAT

    不过克制住了自己

    哪位大牛来救救我!

    怎么做啊!!!???

  • 0
    @ 2008-10-28 10:10:39

    ``面对用KMP都过不了的字符串题目.我唯有..

    CHEAT了...

  • 0
    @ 2008-10-25 12:51:55

    居然还有人想到KMP,我无语了。

  • 0
    @ 2008-10-01 16:15:25

    200行的程序,昏迷中。。。

  • 0
    @ 2009-08-07 14:29:41

    编译通过...

    ├ 测试数据 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    很艰难很艰难

  • 0
    @ 2008-09-29 19:45:50

    超长数字串

    orz

  • 0
    @ 2008-09-25 19:01:48

    很恶心的题,交了n次才过得去,太刷我战绩,狗题!!!!

    编译通过...

    ├ 测试数据 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2008-09-19 15:55:55

    program Description(input,output);

    var

    x,max,lw,pj,py,xb,gb,n,m,k,i,j,l,t:longint;

    z:int64;

    name,s,g,s1:string;

    begin

    readln(n);

    z:=0;

    max:=0;

    for i:=1 to n do

    begin

    readln(s);

    l:=length(s);

    j:=pos(' ',s);

    name:=copy(s,1,j-1);

    s:=copy(s,j+1,l-j);

    l:=length(s);

    j:=pos(' ',s);

    s1:=copy(s,1,j-1);

    s:=copy(s,j+1,l-j);

    val(s1,pj,t);

    l:=length(s);

    j:=pos(' ',s);

    s1:=copy(s,1,j-1);

    s:=copy(s,j+1,l-j);

    val(s1,py,t);

    l:=length(s);

    j:=pos(' ',s);

    s1:=copy(s,1,j-1);

    s:=copy(s,j+1,l-j);

    if s1='Y' then gb:=1 else gb:=0;

    l:=length(s);

    j:=pos(' ',s);

    s1:=copy(s,1,j-1);

    s:=copy(s,j+1,l-j);

    if s1='Y' then xb:=1 else xb:=0;

    val(s,lw,t);

    t:=0;

    if(pj>80)and(lw>=1)then

    begin

    t:=t+8000;

    end;

    if(pj>85)and(py>80)then

    begin

    t:=t+4000;

    end;

    if(pj>90)then

    begin

    t:=t+2000;

    end;

    if(pj>85)and(xb=1)then

    begin

    t:=t+1000;

    end;

    if(py>80)and(gb=1)then

    begin

    t:=t+850;

    end;

    z:=z+t;

    if t>max then

    begin

    g:=name;

    max:=t;

    end;

    end;

    writeln(g);

    writeln(max);

    writeln(z);

    end.

  • 0
    @ 2008-09-16 13:14:13

    终于AC了。提交了好多次,最后还以为不能用__int64,白修改了几次,原来是可以用的。

    我的解答是:

    1.把输入数据按照第一个字段的长度进行分类。

    2.对每个分类,考虑出现在输入串中到底有几位,一一进行枚举测试。

    3.特别要注意9和0的处理,9一多,就有好几种可能的。

    4.注意全9和全0的处理,否则容易超时。

    5.大数运算要写好。

    6.可能的答案可能不止一个,要挑最小的。也就是说要枚举完所有的情况后才能决断。

    最好自己造一个大的文件,里面就是1234567891011....,然后从里面随机选取子串进行测试,这样比较容易发现问题。

  • 0
    @ 2008-09-16 01:56:02

    编译通过...

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

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

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

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

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

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

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

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

    ├ 测试数据 09:内存溢出...

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

    ├ 测试数据 11:内存溢出...

    ├ 测试数据 12:答案错误...

     ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 13:内存溢出...

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

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

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

    ├ 测试数据 17:答案错误...

     ├ 标准行输出

     ├ 错误行输出

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

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

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

    ├ 测试数据 21:答案错误...

     ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 22:内存溢出...

    ├ 测试数据 23:内存溢出...

    ├ 测试数据 24:内存溢出...

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

    ├ 测试数据 26:内存溢出...

    ├ 测试数据 27:答案错误...

     ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 28:运行超时...

    ├ 测试数据 29:内存溢出...

    ├ 测试数据 30:内存溢出...

    ├ 测试数据 31:内存溢出...

    ├ 测试数据 32:内存溢出...

    ├ 测试数据 33:内存溢出...

    ├ 测试数据 34:内存溢出...

    ├ 测试数据 35:内存溢出...

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

    ├ 测试数据 37:内存溢出...

    ├ 测试数据 38:内存溢出...

    ├ 测试数据 39:内存溢出...

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

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

    Unaccepted 有效得分:45 有效耗时:0ms

  • 0
    @ 2008-09-12 21:37:03

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

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

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

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

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

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

    ├ 测试数据 07:运行超时...

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

    ├ 测试数据 09:运行超时...

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

    ├ 测试数据 11:运行超时...

    ├ 测试数据 12:运行超时...

    ├ 测试数据 13:运行超时...

    ├ 测试数据 14:运行超时...

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

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

    ├ 测试数据 17:运行超时...

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

    ├ 测试数据 19:运行超时...

    ├ 测试数据 20:运行超时...

    ├ 测试数据 21:运行超时...

    ├ 测试数据 22:运行超时...

    ├ 测试数据 23:运行超时...

    ├ 测试数据 24:运行超时...

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

    ├ 测试数据 26:运行超时...

    ├ 测试数据 27:运行超时...

    ├ 测试数据 28:运行超时...

    ├ 测试数据 29:运行超时...

    ├ 测试数据 30:运行超时...

    ├ 测试数据 31:运行超时...

    ├ 测试数据 32:运行超时...

    ├ 测试数据 33:运行超时...

    ├ 测试数据 34:运行超时...

    ├ 测试数据 35:运行超时...

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

    ├ 测试数据 37:运行超时...

    ├ 测试数据 38:运行超时...

    ├ 测试数据 39:运行超时...

    ├ 测试数据 40:运行超时...

    program v1005;

    var

    s,t,u:string;

    i,ls,lt,lu:longint;

    ans:qword;

    begin

    readln(s);

    ls:=length(s);

    i:=0;

    while true do

    begin

    inc(i);

    str(i,u);

    t:=t+u;

    if pos(s,t)0

    then begin

    ans:=pos(s,t);

    break;

    end;

    end;

    writeln(ans);

    end.

    高手幫忙看看,為什麽會這樣?!?!

  • 0
    @ 2008-09-07 20:04:04

    交了10多遍,改了10多遍,终于改对。终于看出了很多人cheat这题的原因:

    1:为了通过数。2:题目的超级烦琐,超级猥琐。

    我是这样做的:拿输入字符串开刀先读入一个字符串,然后从字符串内部寻找子串,编写一个函数分别求它的前导(求前面一个自然数)和后导(不是数学意义上的求导),分别添加到子串前面和后面,然后看前面和后面分别剩余的位置数,>0继续做。直至调整为原字符串的首尾标记一致的字符串。如果相同说明是了,记e为该子串末位置在s中的位置,然后求出1到该子串数值(整数数值,非字符串)的所有数的数字各数之和(这里要用点DP思想和数学思维),把和减去e就是第一步的结果。

    别急着以为可以了,还不行,因为像‘01’这样的串,在大原串中肯定是‘1011’

    而大原串中数字在s中没有一个是完整的,所以要用截断策略。

    枚举位置和长度,如‘0011’串,枚举到第三位1,长度为3,这时把第三位到s末

    位的子串记为t,那么3-len(t)就是当前枚举串所缺失的位数。把第三位前面的

    长度等与缺失位数的子串的后导添加到t后面(这里要特殊考虑进位的情况)。

    再跟第一步类似的方法jugde一次。可以的话,判断当前结果与是否原来的结果更优(更小),是的话那么就得到解了。

    然后就是刚才说过的求出总位数。

    PS:跟KMP似乎没有关系

    PSS:我说的很不清楚啊

    PSSS:不看也罢

信息

ID
1005
难度
8
分类
字符串 | KMP 点击显示
标签
(无)
递交数
6615
已通过
624
通过率
9%
被复制
30
上传者