74 条题解

  • 0
    @ 2009-10-27 10:13:43

    8次才过..

    原来f[1,2]不能等于1

    ..

    我果然是个沙茶..

  • 0
    @ 2009-10-26 20:38:41

    大家千万不要乱用原子弹!!

    咱有小刺刀就用小刺刀。

    完了应该是求极大值以及极小值吧

  • 0
    @ 2009-10-23 21:55:07

    为啥大家都用这么高深算法...>.<

    O(n)找极大值即可.(注意是"极大值"~~)

  • 0
    @ 2009-10-22 08:45:18

    终于用线段树过掉了。

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    • @ 2013-11-03 12:25:34

      这题用线段树。。。好牛

  • 0
    @ 2009-10-11 22:09:18

    var

    top0,top1,now,last,i,n,k:longint;

    p1,p0:array[0..5000]of longint;

    begin

    readln(n);

    p0[0]:=-maxlongint;

    for i:=1 to n do

    begin

    read(now);

    for k:=top1 downto 1 do

    if nowtop0 then begin inc(top0); p0[top0]:=now; end

    else if p0[k]>now then p0[k]:=now;

    break;

    end;

    for k:=top0 downto 0 do

    if now>p0[k] then

    begin

    if k+1>top1 then begin inc(top1); p1[top1]:=now; end

    else if p1[k+1]

  • 0
    @ 2009-10-09 22:56:23

    DP+离散+线段树 O(nlogn)的效果

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    第一次写线段树把更新区间搞错了,DEBUG三四天了这题,终于过了。

    方程

    f=max{ f[j,2] | a[j]a[i] } +1

    显然每次要查询1~a[i]-1的f[x,2]的最大值和 a[i]+1~m的f[x,1]的最大值。

    这不就是区间最大值问题么?那当然是线段树啦。

    从样例就知道编号是跟n没关系的(可能会很大),所以离散化成m个点,其中m是不同编号的个数,这样就把编号映射到1~m的m个数。

    100行的程序,好猥琐啊。这题很好啊,就是数据……N^2都行……。

  • 0
    @ 2009-09-12 23:38:47

    Orz教主

  • 0
    @ 2009-09-12 17:21:13

    Orz教主

  • 0
    @ 2009-09-12 17:20:41

    Orz教主

  • 0
    @ 2009-09-12 17:11:38

    f[i][j]

    若j=0:表示后i个导弹中,选出来的第二个导弹第一个导弹..在满足这个条件下的最大导弹数

    若j=1:表示后i个导弹中,选出来的第二个导弹>第一个导弹(即第i个导弹),第三个导弹

  • 0
    @ 2009-09-08 21:36:58

    看懂题意=1A

  • 0
    @ 2009-08-29 19:11:26

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

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

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

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

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

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

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

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

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

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

    我也是n2列。。。。。。。今天有点小rp。。。。。。。

  • 0
    @ 2009-08-23 16:21:43

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

    记得F数组清1

  • 0
    @ 2009-08-23 12:03:02

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    n^2

    蛮水

  • 0
    @ 2009-08-22 15:16:28

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    头痛啊!

  • 0
    @ 2009-08-17 12:43:40

    int main()

    {

    int n,i,j,ans=1;

    cin>>n;

    for(i=1;i>a[i];

    for(i=1;ians)ans=f1[i];

    if(f0[i]>ans)ans=f0[i];

    }

    cout

  • 0
    @ 2009-08-11 13:13:09

    var

    n,i,j,k,ans:longint;

    f,g,a:array[-1..12000] of longint;

    begin

    readln(n);

    for i:=1 to n do

    read(a[i]);

    readln;

    for i:=1 to n do

    for j:=0 to i-1 do

    begin

    if (j=0) or ((a[i]>a[j]) and (g[i]

  • 0
    @ 2009-08-10 18:24:07

    老大啊~ 那个导弹编号多大啊?

    我用不用先离散化~

    这是个问题~!

    怎么好像maa04出题都是,凡是不是他标程的方法有关的,都不提供数据范围?

    还真是平方可以秒啊~

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

    这么下去太堕落了~

  • 0
    @ 2009-08-09 13:01:26

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

    Puppy这么险?

    变形的导弹拦截式DP

  • 0
    @ 2009-08-06 12:21:44

    不一定要开两个数组,我就用了一个

    var max,i,k,j,n:longint;a:array[0..10001]of longint;

    f:array[0..10000]of longint;

    begin

    readln(n);

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

    for i:=1 to n do

    begin

    f[i]:=1;

    end;

    max:=0;

    for i:=1 to n do

    for j:=0 to i-1 do

    begin

    if (j=0)or((f[j] mod 2=0)and(a[j]f[i])) then

    begin

    f[i]:=f[j]+1;

    end;

    if (j=0)or((f[j] mod 20)and(a[j]>a[i])and(f[j]+1>f[i])) then

    begin

    f[i]:=f[j]+1;

    end;

    if f[i]>max then max:=f[i];

    end;

    writeln(max);

    end.

信息

ID
1571
难度
4
分类
动态规划 | 动态规划 | LIS 点击显示
标签
递交数
1802
已通过
700
通过率
39%
被复制
3
上传者