zoukankan      html  css  js  c++  java
  • UVA 10635 Prince and Princess

    题不是很难,但不知道怎么。。。请教下面两个代码有什么不同吗?为什么一个可以A,一个却是WA。

    AC:

    #include<stdio.h>
    #include<string.h>
    #define MAXD 70000
    int N, P, Q, s[MAXD], r[MAXD];
    void solve()
    {
        int i, j, p, q, top, mid, max, min;
        scanf("%d%d%d", &N, &P, &Q);
        memset(r, 0, sizeof(r));
        for(i = 1; i <= P+1; i ++)
        {
            scanf("%d", &p);
            r[p] = i;
        }
        s[0] = top = 0;
        for(i = 1; i <= Q+1; i ++)
        {
            scanf("%d", &p);
            q = r[p];printf("q=%d\n",q);
            if(!q)
                continue;
            if(q > s[top])
                s[++ top] = q;
            else
            {
                max = top;
                min = 0;
                for(;;)
                {
                    mid = (max + min) / 2;
                    if(mid == min)
                        break;
                    if(s[mid] < q)
                        min = mid;
                    else
                        max = mid;
                }
                s[mid + 1] = q;
            }
        }
        printf("%d\n", top);
    }
    int main()
    {
        int t, tt;
        scanf("%d", &t);
        for(tt = 0; tt < t; tt ++)
        {
            printf("Case %d: ", tt + 1);
            solve();
        }
          getchar();
          getchar();
        return 0;
    }

    WA:

    #include<stdio.h>
    #include<string.h>
    #define MAXN 70000
    
    int ap[MAXN], aq[MAXN], aso[MAXN], f[MAXN];
    
    int t, p, q, n, num;
    
    void solve()
    {
        int top = 0;
        f[0] = 0;
        for(int i = 1; i <= p+1; i ++)
        {
            if(!aso[i]) continue;
            if(aso[i] > f[top]) {top ++; f[top] = aso[i];}
            else
            {
                int x = 0, y = top, mid;
                if(top == 0) f[0] = aso[i];
                while(x < y)
                {
                    mid = x +(y-x)/2;
                    if(x == mid) break;
                    if(f[mid] < aso[i]) x = mid;
                    else y = mid;
                }
                f[mid+1] = aso[i];
            }
            //for(int j = 0; j <= top; j ++)
            //printf("j= %d f[j]=%d\n",j ,f[j]);
        }
        printf("Case %d: %d\n",num ++, top+1);
    }
    int main()
    {
            scanf("%d",&t);
            num = 1;
            while(t --)
            {
                scanf("%d%d%d",&n, &p, &q);
                memset(ap, 0,sizeof(ap));
                printf("1\n");
                for(int i = 1; i <= p+1; i ++)
                {
                    int x;
                    scanf("%d",&x);
                    ap[x] = i;
                }
                for(int i = 1; i <= q+1; i ++)
                    scanf("%d",&aq[i]);
                for(int i = 1; i <= q+1; i ++)
                    {aso[i] = ap[aq[i]];}
                solve();
            }
        return 0;
    }
  • 相关阅读:
    Saltstack module gem 详解
    Saltstack module freezer 详解
    Saltstack module firewalld 详解
    Saltstack module file 详解
    Saltstack module event 详解
    Saltstack module etcd 详解
    Saltstack module environ 详解
    Saltstack module drbd 详解
    Saltstack module dnsutil 详解
    获取主页_剥离百度
  • 原文地址:https://www.cnblogs.com/yuzhaoxin/p/2614361.html
Copyright © 2011-2022 走看看