题解

327 条题解

  • 0
    @ 2009-07-16 13:57:37

    program dsa;

    var a:array[0..10000]of boolean;

    x,y:array[1..100]of integer;

    l,m,s,i,j:integer;

    begin

    read(l,m);

    for i:=0 to l do a[i]:=true;

    for i:=1 to m do read(x[i],y[i]);

    for i:=1 to m do

    for j:=x[i] to y[i] do a[j]:=false;

    s:=0;

    for i:=0 to l do

    if a[i] then inc(s);

    writeln(s);

    end.

    农夫山泉

  • 0
    @ 2009-07-16 10:14:45

    编译通过...

    ├ 测试数据 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-07-15 15:24:19

    var

    l,m,x,y,i,j,num:integer;

    f:array[1..10000] of boolean;

    begin

    readln(l,m);fillchar(f,sizeof(f),true);

    for i:=1 to m do

    begin

    readln(x,y);

    for j:=x to y do

    f[j]:=false;

    end;

    for i:=0 to l do

    if f[i] then num:=num+1;

    writeln(num)

    end.

  • 0
    @ 2009-07-15 10:25:44

    color=red【vj】

  • 0
    @ 2009-07-09 19:08:18

    program ex;

    var l,m,a,b,i,s,j:integer;

    y:array[0..10000] of boolean;

    begin

    read(l,m);

    for i:=0 to l do y[i]:=true;

    for i:=1 to m do

    begin

    readln(a,b);

    for j:=a to b do y[j]:=false;

    end;

    s:=0;

    for i:=0 to l do if y[i]=true then inc(s);

    writeln(s);

    end.

    这样也行,无语,水~~~~~~

  • 0
    @ 2009-07-07 20:28:48

    编译通过...

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

    ├ 测试数据 02:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 03:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 04:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 05:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 06:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 07:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 08:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 09:答案错误... ├ 标准行输出

     ├ 错误行输出

    ├ 测试数据 10:答案错误... ├ 标准行输出

     ├ 错误行输出

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

    由此观之,读题!数据是从0开始给的 细节 RP啊

    还有,注意是0的特殊情况

    最后,拿这个练线段树吧

  • 0
    @ 2009-07-03 08:28:59

    program cst;

    var a:array[0..10000] of boolean;l,m,n,i,b,c,t:integer;

    begin

    t:=0;

    read(l,m);

    for i:=0 to l do

    a[i]:=true;

    for n:=1 to m do

    begin

    read(b,c);

    for i:=b to c do

    a[i]:= false;

    end;

    for i:=0 to l do

    if a[i]=true then inc(t);

    writeln(t);

    end.

  • 0
    @ 2009-06-28 19:23:39

    var l,m,j,i,t:longint;

    a,b,c:array[0..10000]of longint;

    begin

    readln(l,m);

    for i :=1 to m do

    readln(b[i],c[i]);

    for i:=0 to l do

    a[i]:=1;

    for i:=1 to m do

    for j:=b[i] to c[i] do

    a[j]:=0;

    for i:=0 to l do

    if a[i]=1 then t:=t+1;

    writeln(t);

    end.

    无敌水啊

    庆祝第一次秒杀.

  • 0
    @ 2009-06-21 19:19:47

    Attention:从0开始

    program w1103;

    var tree:array[0..20000] of boolean;

    a,b:array[1..1000] of longint;

    i,j,l,n,m,p,q,ans:longint;

    begin

    read(n,l);

    fillchar(tree,sizeof(tree),false);

    for i:= 1 to l do begin

    readln(a[i],b[i]);

    for j:=a[i] to b[i] do tree[j]:=true;

    end;

    ans:=0;

    for i:=0 to 20000 do

    if tree[i]=true then inc(ans);

    writeln(n-ans+1);

    end.

  • 0
    @ 2009-06-14 21:44:34

    这题对于初学线段树的人来说,拿来练手很不错。

    贴给好懂点的线段树,应该比较好懂。^_^

    program tree;

    const

    maxn=10001;

    type

    node= record

    a,b,ls,rs,count:longint;

    cov:boolean;

    end;

    var

    p:array[1..maxn*2] of node;

    all,x,y,n,m:longint;

    procedure creat(c,d:longint);

    var

    now,mid:longint;

    begin

    inc(all);

    now:=all;

    p[now].a:=c; p[now].b:=d;

    if cp[x].b) or (d

  • 0
    @ 2009-06-11 20:34:10

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program tree;

    const

    max=10001;

    type

    node=record

    st,en:integer;

    end;

    var

    trees:array[0..max] of integer;

    l,m,i,j,sum:integer;

    subway:array[1..100] of node;

    begin

    for i:=1 to max do

    trees[i]:=0;

    readln(l,m);

    for i:=1 to m do

    readln(subway[i].st,subway[i].en);

    for i:=0 to l do

    trees[i]:=1;

    for i:=1 to m do

    for j:=subway[i].st to subway[i].en do trees[j]:=0;

    sum:=0;

    for i:=0 to l do

    if trees[i]=1 then inc(sum);

    writeln(sum);

    end.

  • 0
    @ 2009-06-07 16:52:39

    难的做不出来,做道基础题安慰一下自己

  • 0
    @ 2009-06-06 17:46:33

    var a:array[0..10000] of integer;

    b,c:array[1..100] of longint;

    l,m,i,j,n:longint;

    begin

    for i:=0 to 10000 do a[i]:=0;

    readln(l,m);

    for i:=1 to m do

    begin

    read(b[i],c[i]);

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

    end;

    n:=0;

    for i:=0 to 10000 do

    if a[i]=1 then inc(n);

    writeln(l+1-n);

    end.

  • 0
    @ 2009-05-30 00:27:32

    用bool array就Ok的。

    有空用集合做一下,练练手,先留在这里提醒我一下。

  • 0
    @ 2009-05-14 22:29:06

    线段树写法(小题大做)....

    program line_tree;

    type pt=^node;

    node=record

    count:0..1;

    l,r:integer;

    lc,rc:pt;

    end;

    var pp:pt;

    i,j,k,n,m:integer;

    function build(k1,k2:integer):pt;

    var i,j,mid:integer;

    p:pt;

    begin

    new(p);

    p^.l:=k1;

    p^.r:=k2;

    p^.count:=0;

    if k2-k1>1 then

    begin

    mid:=(k1+k2) div 2;

    p^.lc:=build(k1,mid);

    p^.rc:=build(mid,k2);

    end;

    exit(p);

    end;

    procedure insert(k1,k2:integer;p:pt);

    var

    i,j,mid:integer;

    begin

    if (p^.l=k1) and (p^.r=k2) then begin

    p^.count:=1;

    exit;

    end;

    mid:=(p^.l+p^.r) div 2;

    if k2=mid then begin insert(k1,k2,p^.rc);exit; end;

    insert(k1,mid,p^.lc);

    insert(mid,k2,p^.rc);

    end;

    procedure init;

    var i,j:integer;

    a,b:integer;

    begin

    readln(n,m);

    new(pp);

    pp:=build(0,n);

    for i:=1 to m do

    begin

    readln(a,b);

    insert(a-1,b,pp);

    end;

    end;

    procedure search(p:pt);

    var i,j,mid:integer;

    begin

    if p^.count=1 then begin

    dec(n,p^.r-p^.l);

    exit;

    end;

    if p^.r-p^.l=1 then exit;

    search(p^.lc);

    search(p^.rc);

    end;

    begin

    init;

    search(pp);

    writeln(n+1);

    end.

    不要打我....

  • 0
    @ 2009-05-06 17:19:41

    晕啊!!

    居然把10000看成了1000

    还得我UA了一次

    看来做基础题也要细心啊!!

  • 0
    @ 2009-05-03 11:07:56

    不要脸,错的也贴

  • 0
    @ 2009-04-30 22:45:30

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    水题...随便AC

  • 0
    @ 2009-04-22 21:57:59

    program shu;

    var

    c:array[0..10000] of integer;

    l,m,n,o,p:integer;

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

    b:array[1..100] of integer;

    begin

    readln(l,m);

    for o:=1 to m do

    begin

    readln(a[o],b[o]);

    for p:=a[o] to b[o] do c[p]:=1;

    end;

    n:=0;

    for o:=0 to 10000 do

    if (c[o]=1) then n:=n+1;

    n:=l+1-n;

    writeln(n);

    end.

    还算轻松

  • 0
    @ 2009-10-10 16:25:15

    program puji0502;

    const N=10000;

    var i,j,L,m,sum:integer;

    a:array[0..N] of 0..1;

    b:array[1..300,1..2] of integer;

    begin

    readln(L,m);

    for i:=0 to N do

    a[i]:=1;

    for i:=1 to m do

    begin

    readln(b,b);

    end;

    for i:=1 to m do

    begin

    for j:=b to b do a[j]:=0;

    end;

    sum:=0;

    for i:=0 to L do

    sum:=sum+a[i];

    writeln(sum);

    end.

信息

ID
1103
难度
4
分类
模拟 点击显示
标签
递交数
14316
已通过
6534
通过率
46%
被复制
54
上传者