题解

257 条题解

  • 0
    @ 2009-07-25 14:07:51

    最长不下降序列变形一下,加点字符串操作就ok了。。。

    编译通过...

    ├ 测试数据 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-24 18:54:10

    Dp...

  • 0
    @ 2009-07-23 15:24:47

    编译通过...

    ├ 测试数据 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-23 09:26:53

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var i,j,b,max,n:longint;

    st:array[0..2003]of string;

    w:array[0..2003]of longint;

    begin

    readln(n);

    for i:=1 to n do readln(st[i]);

    for i:=1 to n do

    begin

    w[i]:=1;

    for j:=1 to i-1 do

    if (pos(st[j],st[i])=1)and(w[j]+1>w[i]) then w[i]:=w[j]+1;

    end;

    max:=0;

    for i:=1 to n do if w[i]>max then max:=w[i];

    write(max);

    end.

  • 0
    @ 2009-07-21 16:16:40

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    哇丫丫 本来这么的水题应该一次AC的

    可是...

    没想到 我更水

    在最长上升子序列中 我无敌的把f[n]当做最长的

    忘了要在f[1],f[2],...f[n]中寻找最大值

    !!! (#‵′)

    看来基础的东西时间一长 都要忘了啦.....

    ---|---|---|---|---|---|---|---|---|晒程序了---|---|---|---|---|---|---|---|---|---|-

    var i,n,j,max:longint;

    s:array[0..2002] of string;

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

    begin

    filldword(f,sizeof(f)shr 2,1);

    readln(n); readln(s[1]);

    for i:=2 to n do

    begin

    readln(s[i]);

    for j:=1 to i-1 do

    if(pos(s[j],s[i])=1)and(f[i]

  • 0
    @ 2009-08-20 21:53:04

    忘记怎么优化了、、- -

  • 0
    @ 2009-07-19 21:11: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,裸裸的秒杀。留念55题。

  • 0
    @ 2009-07-02 22:01:27

    把1

  • 0
    @ 2009-06-25 01:49:31

    #include

    using namespace std;

    int r,n,f[2001];

    string p[2001];

    bool is(int j,int i)//可以用矩阵 g[j,i]记忆化 或 预处理一下O(n^2)

    {

    if(p[j].length() >= p[i].length()) return false;

    for(int x = 0;x < p[j].length();++x) if(p[j][x] != p[i][x]) return false;

    return true;

    }

    int main()

    {

    cin >> n;

    for(int i = 0;i < n;++i)

    {

    cin >> p[i];

    f[i] = 1;

    for(int j = 0;j < i;++j) //可以用二分 整体O(Nlogn) 效率

    if(is(j,i)) f[i] = max(f[i],f[j]+1);

    r = max(r,f[i]);

    }

    cout

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

    program onf;

    type

    h=record

    s:string;

    m:integer;

    end;

    var

    a:array[1..20000]of h;

    n,i,j,k,x,y:integer;

    s1,s2:string;

    begin

    readln(n);

    readln(a[1].s);

    a[1].m:=1;

    for i:=2 to n do

    begin

    readln(a[i].s);

    a[i].m:=1;

    for k:=1 to i-1 do

    begin

    y:=0;

    for j:=1 to length(a[k].s) do

    begin

    if a[k].s[j] a[i].s[j] then break

    else inc(y);

    end;

    if y=length(a[k].s) then a[i].m:=a[i].m+1;

    end;

    end;

    for i:=1 to n-1 do

    if a[i].m

  • 0
    @ 2009-06-02 18:13:51

    神牛助我秒杀,谢谢神牛们。

    编译通过...

    ├ 测试数据 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-05-14 19:49:14

    AC年代最蹉跎的AC。。。。

    先是把debug时的中间过程打出来了,程序输出比标准答案长。。。。

    然后交上去最后一个点超时。。。怒,改DP,0ms

  • 0
    @ 2009-05-10 15:48:27

    void work()

    {

    int f[2005],re=0;

    memset(f,0,sizeof(f));

    for(int i=1;i

  • 0
    @ 2009-04-06 15:51:36

    最讨厌这种题

    他竟然欺负我语文水平差 一个简单的动规搞得这么麻烦

  • 0
    @ 2009-03-27 12:48:04

    真的好水

  • 0
    @ 2009-03-25 19:47:10

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    var

    a:array[1..10000] of string;

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

    max,i,j,n:integer;

    begin

    readln(n);

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

    for i:=1 to n do

    for j:=1 to n do

    if (pos(a[j],a[i])=1) then c[i]:=c[i]+1;

    max:=c[1];

    for i:=2 to n do if max

  • 0
    @ 2009-03-22 15:19:52

    for i:=1 to n do

    for j:=1 to n do

    if (pos(a[j],a[i])=1) then c[i]:=c[i]+1;

    裸裸的穷举,裸裸的ac

  • 0
    @ 2009-03-21 12:40:09

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    水题

    type jp=record

    self:string;

    long:integer;

    end;

    var

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

    b:array[1..2000]of jp;

    begin

    readln(n);

    for i:=1 to n do

    begin

    readln(b[i].self);

    b[i].long:=1;

    end;

    for i:=n-1 downto 1 do

    for j:=i+1 to n do

    if (pos(b[i].self,b[j].self)=1)and(b[j].long+1>b[i].long) then

    b[i].long:=b[j].long+1;

    j:=-maxint;

    for i:=1 to n do if b[i].long>j then j:=b[i].long;

    writeln(j)

    end.

  • 0
    @ 2009-03-15 21:09:52

    水题哦,我是用的穷举,大家判断是否包含的时候要判断=1,而不是0.

  • 0
    @ 2009-03-11 20:30:18

    编译通过...

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

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

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

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

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

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

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

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

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

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

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

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

    program tt;

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

    a:array[1..20]of string;

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

    begin

    readln(n);

    for i:=1 to n do begin

    b[i]:=1;

    readln(a[i]);

    end;

    for i:=2 to n do

    for j:=1 to i-1 do

    if length(a[j])b[i] then

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

    end;

    m:=0;

    for i:=1 to n do

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

    writeln(m);

    end.

信息

ID
1028
难度
4
分类
动态规划 | LIS 点击显示
标签
(无)
递交数
6017
已通过
2443
通过率
41%
被复制
9
上传者