题解

203 条题解

  • 0
    @ 2009-07-10 10:09:02

    边界条件是什么啊? 为什么我在自己电脑上测试一点问题都没有..10组数据而且. 到这里偏偏说什么让我注意边界条件?

  • 0
    @ 2009-07-09 23:50:59

    为什么第二问是最长递增啊?

    刚找到一数据

    15 16 15 16 16

    贪=1

    DP非降-1=3

    that's why?!

  • 0
    @ 2009-07-05 22:48:50

    楼下的。。。你哪个贪心不就是最长递增子序列的算法么。。。

  • 0
    @ 2009-07-05 21:37:32

    第二问可以直接用贪心搞啊。。弄一个当前各个系统的能打到的高度的数组

    第一个是肯定要打的,那么系统+1,然后看第二个。。一个个推导下去。如果现在飞来的导弹当前系统中没一个比它高的。。那么系统+1.。新导弹高度作为新系统的高度。。如果有的话。。可以证明选那个当前能打这个导弹的系统中高度最低的来打是最优选择。。。直接贪心啊。。。

    Program p1303;

    var

    High:array[1..20]of integer;

    Last:array[1..20]of integer;

    D:array[1..20]of integer;

    O,Nowmax,j,i,Max,Min,N,pre:integer;

    str,k:string;

    temp,t,Num:integer;

    ok:boolean;

    begin

    readln(str);

    t:=1;Num:=0;

    while true do begin

    t:= Pos(',',str);if t=0 then

    break;

    inc(Num);

    k:=Copy(str,1,t-1);

    val(k,High[Num]);

    Delete(str,1,t);

    end;

    INC(Num);

    val(str,High[Num]);

    Min:=1;

    Last[1]:=High[1];

    for i := 2 to Num do begin

    ok:=false;O:=maxint;

    for j := 1 to Min do

    if (Last[j]>=High[i]) and (Last

    [j]=High[i]) and (D[j]

    +1>D[i]) then D[i]:=D[j]+1;

    end;

    Max:=0;

    for i := 1 to Num do

    if D[Num]>Max then Max:=D[Num];

    writeln(Max,',',Min-1);

    end.

    编译通过...

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

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

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

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

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

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

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

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

  • 0
    @ 2009-06-13 16:34:17

    编译通过...

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

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

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

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

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

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

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

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

    var

    j,max,i,n:longint;

    a:array[1..20,1..2]of longint;

    procedure init;

    var

    str:ansistring;

    l,i,c:integer;

    begin

    readln(str);

    l:=length(str);

    c:=1;

    for i:=1 to l do

    begin

    if str[i]',' then

    begin

    a[c,1]:=a[c,1]*10+ord(str[i])-48;

    end;

    if str[i]=',' then inc(c);

    end;

    n:=c;

    end;

    begin

    init;

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

    a[1,2]:=1;

    for i:=2 to n do

    for j:=i-1 downto 1 do

    if (a=a[j,1])and(a

  • 0
    @ 2009-05-30 14:24:06

    program dpq1;

    var

    a,b:array[0..1000]of integer;

    i,j,n,max:integer;

    begin

    read(n);

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

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

    b[1]:=1;

    for i:=2 to n do

    for j:=1 to i-1 do

    if (a[j]>a[i])and(b[i]max then max:=b[i];

    writeln(max);

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

    b[0]:=0;a[0]:=0;

    for i:=1 to n do

    for j:=0 to i-1 do

    if (a[i]>a[j])and(b[j]+1>b[i]) then b[i]:=b[j]+1;

    max:=0;

    for i:=1 to n do

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

    write(max-1);

    end.

  • 0
    @ 2009-05-29 21:10:45

    编译通过...

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

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

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

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

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

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

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

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

    太阴了,数据没个数限制。相当于不让我们在自己机子上试样例,还有那第二问……

  • 0
    @ 2009-05-10 16:36:14

    编译通过...

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

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

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

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

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

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

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

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

    终于一次AC啦!!!!@_@

  • 0
    @ 2009-05-08 15:51:29

    求最长的非升序列 和 最长的 升序列

    题目数据很弱,我第一次求的最长的非减序列,竟然过了

  • 0
    @ 2009-05-01 14:51:15

    这道题目很猥琐

    因为他后面的那个输出是问要增加多少系统

    不是问你需要多少系统

    囧死我

    真是害人

  • 0
    @ 2009-04-24 20:09:52

    这题数据很有问题,如果是6,5,1,7,3,2 第二问就是1,其实应该是2...

    所以第二问不能单纯是最大上升序列-1吧?

  • 0
    @ 2009-04-03 15:23:23

    #include

    int main()

    {

    int a[30],n,t,num,d,i,j;

    int dp[10000];

    char c;

    while(1==scanf("%d",&a[1]))

    {

    memset(dp,0,sizeof(dp));

    i=1;

    t=0;

    while(1)

    {

    i++;

    c=getchar();

    if(c=='\n')

    break;

    scanf("%d",&a[i]);

    }

    n=i-1;

    for(i=n;i>=1;i--)

    {

    dp[i]=1;

    for(j=i;ja[j]&&dp[j]+1>dp[i])

    dp[i]=dp[j]+1;

    }

    if(t=1;i--)

    {

    dp[i]=0;

    for(j=i;j

  • 0
    @ 2009-03-18 15:47:05

    是我最初看来的难题,如今已是水题

  • 0
    @ 2009-01-27 22:43:35

    自从得到了水的滋润,口不干舌不燥……2nd

  • 0
    @ 2009-01-24 15:05:55

    Var

    da,a:array[0..30] of integer;

    str,str1:string;

    summ,sum,ch,max,i,s,data,code,abc,aa:integer;

    Procedure dfs(k,n,tall:integer);//因为数据太弱,我就扔了个裸搜

    var

    i:integer;

    begin

    if k>aa then

    begin

    if n>summ then summ:=n;

    exit;

    end;

    if da[k]

  • 0
    @ 2008-12-27 22:16:22

    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■    ■■■■■

    ■■■■■■■■■■■■■■■■■■■■■■■■         ■■■■

    ■■■■■■■■■■■■■■■■■■               ■■■■

    ■■■■■■■■■■■■■■■■               ■■■■■■

    ■■■■■■■■■■■    ■           ■■■■■■■■■■

    ■■■■■■■■       ■   ■■     ■■■■■■■■■■■

    ■■■            ■■■■■■    ■■■■■■■■■■■■

    ■              ■■■■■■    ■■■■■■■■■■■■

    ■            ■■■■■■■           ■■■■■■

    ■            ■■■■■■              ■■■■

    ■■          ■■■■■      ■■■       ■■■■

    ■■■■■■■■    ■■■■■    ■■■■■■     ■■■■■

    ■■■■■■■■    ■■■■    ■■  ■■■     ■■■■■

    ■■■■■■■■    ■■■■    ■■    ■     ■■■■■

    ■■■■■■■■    ■■■■    ■■    ■     ■■■■■

    ■■■■■■■■    ■■■■    ■■   ■■     ■■■■■

    ■■■■■■■■    ■■■■    ■■   ■■     ■■■■■

    ■■■■■■■■    ■■■■    ■    ■■     ■■■■■

    ■■■■■■■■    ■■■■    ■    ■■     ■■■■■

    ■■■■■■■■    ■■■■    ■    ■■     ■■■■■

    ■■■■■■■■    ■■■■    ■    ■■     ■■■■■

    ■■■■■■■■    ■■■■   ■■    ■■     ■■■■■

    ■■  ■■■     ■■■■   ■■   ■■■     ■■■■■

    ■■          ■■■■■  ■■  ■■■■     ■■■■■

    ■■■         ■■■■■■■■   ■■■■    ■■■■■■

    ■■■■■       ■■■■■■■■   ■    ■■■■■■■■■

    ■■■■■■      ■■■■■■■    ■■    ■■■■■■■■

    ■■■■■■■■■   ■■■■■■     ■■■       ■■■■

    ■■■■■■■■■■■■■■■■      ■■■■■      ■■■■

    ■■■■■■■■■■■■■■■      ■■■■■■       ■■■

    ■■■■■■■■■■■■■■     ■■■■■■■■■      ■■■

    ■■■■■■■■■■■■■     ■■■■■■■■■■■    ■■■■

    ■■■■■■■■■■■■   ■■■■■■■■■■■■■■■   ■■■■

    ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

  • 0
    @ 2008-12-08 13:35:41

    program p1303;

    var

    a,b,c:array[1..20] of integer;

    min:array[1..20] of integer;

    n,i,j,max,p:integer;

    m:longint;

    s:string;

    ch:char;

    procedure doit(s:string);

    var

    p,code,i:integer;

    s1:string;

    begin

    i:=0;

    while not(s='') do

    begin

    inc(i);

    p:=pos(',',s);

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

    delete(s,1,p);

    val(s1,a[i],code);

    end;

    n:=i;

    end;

    begin

    readln(s);

    s:=s+',';

    doit(s);

    for i:=1 to n do

    begin

    b[i]:=1;

    c[i]:=0;

    end;

    for i:=n-1 downto 1 do

    begin

    max:=-1;p:=0;

    for j:=i+1 to n do

    if (a[i]>=a[j]) and (b[j]>max) then begin max:=b[j];p:=j;end;

    if p0 then begin b[i]:=b[p]+1;c[i]:=p;end;

    end;

    max:=0;

    for i:=1 to n do

    if max=a[i]) then

    begin

    if min[j]

  • 0
    @ 2008-11-29 13:43:36

    哪位大牛看一下我错在哪了

    program xe1;

    var a,b,c:array[1..21] of integer;

    i,j,n,t,max:integer;s:string;

    begin

    readln(s);

    s:=s+',';

    i:=0;j:=length(s);

    while j>0 do

    begin

    inc(i);

    val(copy(s,1,pos(',',s)-1),a[i],t);

    delete(s,1,pos(',',s));

    j:=length(s);

    end;

    n:=i;

    fillchar(b,sizeof(b),1);

    for i:=n-1 downto 1 do

    for j:=i+1 to n do

    if (a[i]>=a[j]) and (b[i]-1

  • 0
    @ 2008-11-12 20:48:40

    编译通过...

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

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

     ├ 错误行输出

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

     ├ Hint: 注意考虑边界情况 ├ 标准行输出

     ├ 错误行输出

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

     ├ 错误行输出

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

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

    ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

  • 0
    @ 2008-11-11 22:10:37

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

    题题题题题题题题题题题题题题题题题题题题题题题题题题题题水水水水题题题题题

    题题题题题题题题题题题题题题题题题题题题题题题题水水水水水水水水水题题题题

    题题题题题题题题题题题题题题题题题题水水水水水水水水水水水水水水水题题题题

    题题题题题题题题题题题题题题题题水水水水水水水水水水水水水水水题题题题题题

    题题题题题题题题题题题水水水水题水水水水水水水水水水水题题题题题题题题题题

    题题题题题题题题水水水水水水水题水水水题题水水水水水题题题题题题题题题题题

    题题题水水水水水水水水水水水水题题题题题题水水水水题题题题题题题题题题题题

    题水水水水水水水水水水水水水水题题题题题题水水水水题题题题题题题题题题题题

    题水水水水水水水水水水水水题题题题题题题水水水水水水水水水水水题题题题题题

    题水水水水水水水水水水水水题题题题题题水水水水水水水水水水水水水水题题题题

    题题水水水水水水水水水水题题题题题水水水水水水题题题水水水水水水水题题题题

    题题题题题题题题水水水水题题题题题水水水水题题题题题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水题题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水水题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水水题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题题水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水水题水水水水题题水水水水水题题题题题

    题题题题题题题题水水水水题题题题水水水题题水水水水题题水水水水水题题题题题

    题题水水题题题水水水水水题题题题水水水题题水水水题题题水水水水水题题题题题

    题题水水水水水水水水水水题题题题题水水题题水水题题题题水水水水水题题题题题

    题题题水水水水水水水水水题题题题题题题题水水水题题题题水水水水题题题题题题

    题题题题题水水水水水水水题题题题题题题题水水水题水水水水题题题题题题题题题

    题题题题题题水水水水水水题题题题题题题水水水水题题水水水水题题题题题题题题

    题题题题题题题题题水水水题题题题题题水水水水水题题题水水水水水水水题题题题

    题题题题题题题题题题题题题题题题水水水水水水题题题题题水水水水水水题题题题

    题题题题题题题题题题题题题题题水水水水水水题题题题题题水水水水水水水题题题

    题题题题题题题题题题题题题题水水水水水题题题题题题题题题水水水水水水题题题

    题题题题题题题题题题题题题水水水水水题题题题题题题题题题题水水水水题题题题

    题题题题题题题题题题题题水水水题题题题题题题题题题题题题题题水水水题题题题

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

信息

ID
1303
难度
6
分类
动态规划 | 单调性DP 点击显示
标签
递交数
7594
已通过
2015
通过率
27%
被复制
12
上传者