题解

140 条题解

  • 0
    @ 2009-07-31 15:13:48

    数组要开大,不要吝啬!

    250000,70分

    300000,80分

    1000000,100分!

  • 0
    @ 2009-07-30 19:57:36

    VJ不支持%lld 仅支持%I64d

    不管你用long long 还是__int64

    血的教训 。。。又是一小时浪费 。。。

    另外 用%i输出。。也可以 。。。。

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

    水题啊,哈哈

  • 0
    @ 2009-07-24 20:59:47

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    LineTree万岁!

  • 0
    @ 2009-07-21 20:49:23

    终于会线段树了。。。。。

    这道题又卡cin....郁闷。。。。。

    #include

    using namespace std;

    int64 n,m,a,b,p[1000001],tree[10000002],st[1000002],en[1000002];

    __int64 max(__int64 a,
    int64 b){return a>b?a:b;}

    __int64 maketree(__int64 k,__int64 s,__int64 e)

    {

    st[k] = s; en[k] = e;

    if(s == e) tree[k] = p;

    else tree[k] = max(maketree(k*2,s,(s+e)/2),maketree(k*2+1,(s+e)/2+1,e));

    return tree[k];

    }

    __int64 find(__int64 k,__int64 x,__int64 y)

    {

    if(st[k]==x&&en[k]==y)return tree[k];

    int64 t=(st[k]+en[k])>>1;

    if(y=t+1) return find(2*k+1,x,y);

    return max(find(2*k,x,t),find(2*k+1,t+1,y));

    }

    int main()

    {

    scanf("%d", &n);

    for(
    int64 i = 0;i < n;++i) scanf("%I64d", &p[i]);

    maketree(1,0,n-1);

    scanf("%d", &m);

    for(__int64 i = 0;i < m;++i) {scanf("%d %d", &a, &b); printf("%I64d\n",find(1,--a,--b));}

    }

  • 0
    @ 2009-07-17 14:27:50

    有个极小的错误,,,10 times...

  • 0
    @ 2009-07-17 09:11:09

    50lines线段树轻松搞定

  • 0
    @ 2009-07-15 22:50:37

    囧.........rz

  • 0
    @ 2009-08-09 11:40:39

    沙茶题留名……

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

  • 0
    @ 2009-07-11 15:01:54

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    qsort+搜索

    轻松AC

    http://user.qzone.qq.com/785808346/blog/1247295380

  • 0
    @ 2009-06-26 18:26:21

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    嘻嘻,一次就秒杀了 。。。。

    线段树 哦 !

    还只用了 70 行

    program LLL;

    type

    arr=record

    l,r,lc,rc,max:longint;

    end;

    var

    i,n,m,j,k,maxx,top:longint;

    b:array[0..1000000]of longint;

    a:array[0..1000000]of arr;

    function max(j,k:longint):longint;

    begin

    if j>k then max:=j

    else max:=k;

    end;

    procedure mt(l,r:longint);

    var

    j,mid:longint;

    begin

    inc(top);

    j:=top;

    a[top].l:=l; a[top].r:=r;

    a[top].max:=-maxlongint;

    if r=l)and(a[k].r

  • 0
    @ 2009-06-23 23:05:53

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

  • 0
    @ 2009-06-23 16:00:29

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    orz..........建树时候没有考虑负数,交了9次才AC。。。。。RP太差了

  • 0
    @ 2009-06-15 23:31:29

    直接朴素线段树

    读数的话

    如果用 __int64 scanf("%i64d", &n);

    如果用 long long scanf("%lld", &n);

    需要C++代码的:(应该说写的还是比较清爽的,在神牛面前卖弄一下,别见笑)

    http://hi.baidu.com/huyuanming11/blog/item/15ec4408fe0a74c63ac76377.html

  • 0
    @ 2009-06-02 11:27:26

    数组用long(longint)就可以了

  • 0
    @ 2009-05-22 20:32:06

    1.注意数组开大点。

    2.注意有负数,记得max设为-maxlongint。

    3.用线段树的记得程序名(或过程名)一定不能设为linetree。

    (为什么?自己试试就知道了)

    囧rz......

  • 0
    @ 2009-05-16 09:27:43

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    线段树的伟大!!!!!!!!!!!!!!!!!!!!!!!!!!

  • 0
    @ 2009-05-15 23:29:05

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    比ST效率高

  • 0
    @ 2009-05-13 13:35:34

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    st

  • 0
    @ 2009-05-01 21:43:20

    为什么Dp时要用2^k呢?

信息

ID
1514
难度
6
分类
其他 | RMQ 点击显示
标签
(无)
递交数
4976
已通过
1195
通过率
24%
被复制
3
上传者