题解

73 条题解

  • 0
    @ 2009-10-31 19:11:12

    program vijos_p1058;

    var

    s,ss:ansistring;

    n,ni,l,il,k,ik,a,b,c:longint;

    begin

    assign(input,'p1058.txt'); reset(input);

    readln(n,k);

    str(n,ss);

    l:=length(ss);

    for ni:=1 to n do

    begin

    str(ni,ss);

    if length(ss)

  • 0
    @ 2009-10-30 23:24:29

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-10-26 23:14:44

    水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水水

    题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题题

  • 0
    @ 2009-10-12 13:23:27

    AC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!A啦!!!!!!!

    program p1058;

    var s:string;

    n,k,i,j,temp,a,b,c,no:integer;

    w,pos:array[1..100000] of integer;

    begin

    readln(n,k);

    temp:=0;

    for i:=1 to n do

    w[i]:=i;

    for i:=1 to k do

    begin

    readln(a,b,c);

    temp:=b-a+1;

    for j:=1 to temp do

    pos[j]:=w[j+a-1];

    {for no:=1 to temp do

    begin

    writeln(pos[no]);

    writeln;

    end;}

    for j:=b+1 to n do

    w[j-temp]:=w[j];

    for j:=(n-temp) downto (c+1) do

    w[j+temp]:=w[j];

    for j:=1 to temp do

    w[c+j]:=pos[j];

    end;

    for i:=1 to 10 do

    writeln(w[i]);

    end.

  • 0
    @ 2009-09-09 23:20:17

    懒了、、没办法

  • 0
    @ 2009-09-05 19:51:46

    program p1058;

    var a,b,c:array[1..100000] of longint;

    x,w,n,i,j,m,k,p,q:longint;

    begin

    readln(n,k);

    for i:=1 to n do a[i]:=i;

    for i:=1 to k do

    begin

    readln(p,q,m);

    for j:=1 to p-1 do b[j]:=a[j];

    w:=j;

    for j:=q+1 to n do

    begin

    inc(w);

    b[w]:=a[j];

    end;

    x:=0;

    for j:=p to q do

    begin

    inc(x);

    c[x]:=a[j];

    end;

    for j:=1 to m do a[j]:=b[j];

    x:=1;

    for j:=m+1 to m+q-p+1 do

    begin

    a[j]:=c[x];

    inc(x);

    end;

    w:=m+1;

    for j:=m+q-p+2 to n do

    begin a[j]:=b[w]; inc(w); end;

    end;

    for i:=1 to 10 do writeln(a[i]);

    end.

    直接模拟一个不对

  • 0
    @ 2009-08-29 16:42:14

    膜拜O(10*k) 的大牛们!

    方法大致是这样的,因为只要输出前十位。

    所以我们单独考虑这十位。

    对于每个操作我们逆序向前查找,比如说某位i,我们对操作进行判断,计算出操作之前这个数是由哪里转移过来的,反复进行k次,便得解。

    那么关键问题就是怎么判断了,我们需要分类讨论。

    其中有三种情况会造成该位数字的移动,具体大家就自己想啦。

  • 0
    @ 2009-08-19 20:59:17

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

    类型是:模拟,很明显应该用Splay

  • 0
    @ 2009-08-19 10:16:15

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    直接模拟还真慢。39行代码

  • 0
    @ 2009-08-17 16:35:26

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    模拟!

    写的有点懒!

    就是这个结果!

  • 0
    @ 2009-08-14 18:09:18

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    感谢各位大牛,o(10*k)真的很强大

  • 0
    @ 2009-08-12 10:50:50

    如对本题有疑问可以参看我的题解:http://xujieqi.blog.hexun.com/35722312_d.html

  • 0
    @ 2009-08-08 10:49:32

    用SplayAC了,程序也就140行左右……

  • 0
    @ 2009-08-06 10:41:03

    var

    tmp,f:array[0..100000]of longint;

    long,n,k,i,ii,a,c,b:longint;

    procedure make1;

    var i:longint;

    begin

    tmp:=f;

    for i:=1 to a-c-1 do f[c+long+i]:=tmp[c+i];

    for i:=1 to long do f[c+i]:=tmp[a+i-1];

    end;

    procedure make3;

    var i:longint;

    begin

    tmp:=f;

    for i:=1 to c-a+1 do f[a+i-1]:=tmp;

    for i:=1 to long do f[c+i]:=tmp[a+i-1];

    end;

    begin

    readln(n,k);

    for i:=1 to n do f[i]:=i;

    for ii:=1 to k do

    begin

    readln(a,b,c);

    long:=b-a+1;

    if c+long=b then make3;

    if(ca)then make3;

    end;

    for i:=1 to 10 do writeln(f[i]);

    end.

  • 0
    @ 2009-08-01 22:19:33

    为什么我用链表会存取非法呢?

  • 0
    @ 2009-07-23 13:25:11

    其实链表模拟完全可以

  • 0
    @ 2009-07-20 17:57:48

    好像全是倒推的啊.我来个模拟法的程序.

    var tmp,f:array[0..100000]of longint;

    long,n,k,i,ii,a,c,b:longint;

    procedure make1;

    var i:longint;

    begin

    tmp:=f;

    for i:=1 to a-c-1 do f[c+long+i]:=tmp[c+i];

    for i:=1 to long do f[c+i]:=tmp[a+i-1];

    end;

    procedure make3;

    var i:longint;

    begin

    tmp:=f;

    for i:=1 to c-a+1 do f[a+i-1]:=tmp;

    for i:=1 to long do f[c+i]:=tmp[a+i-1];

    end;

    begin

    readln(n,k);

    for i:=1 to n do f[i]:=i;

    for ii:=1 to k do

    begin

    readln(a,b,c);

    long:=b-a+1;

    if c+long=b then make3;

    if(ca)then make3;

    end;

    for i:=1 to 10 do writeln(f[i]);

    end.

  • 0
    @ 2009-07-13 14:06:27

    今天没事干么,写了一个Splay来AC此题……

    然后在6k上秒闪了……Orz

  • 0
    @ 2009-05-15 23:49:27

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-02-26 23:05:24

    Just so so.

信息

ID
1058
难度
5
分类
模拟 点击显示
标签
(无)
递交数
2006
已通过
683
通过率
34%
被复制
6
上传者