zoukankan      html  css  js  c++  java
  • zoj1076 Gene Assembly

    这道和zoj1025一样,本质是贪心算法,首先要求任意最长的序列,我们只要保证最长就行,也就是在一幅图中找一个最长的链,首先我们需要根据y排序(输入为x,y),因为y大的肯定在y小的后面,然后就直接贪心,前面取不到后面就不可能取到那个数,证明了贪心的正确性。

    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    #include<map>
    #include<iostream>
    #include<cstring>
    using namespace std;
    int n;
    struct node
    {
        int x,y,r;
    }a[1005];
    
    
    bool cmp(node a,node b)
    {
        if(a.y<b.y)
        return 1;
        return 0;
    }
    int ans[1006];
    int res;
    void dp(int xx)
    {
        ans[res++]=a[xx].r;
        for(int i=xx+1;i<n;i++)
        {
            if(a[i].x>a[xx].y)
            {
               dp(i);
               break;
            }
        }
    }
    int main()
    {
       // freopen("input.txt","r",stdin);
        while(scanf("%d",&n)==1&&n)
        {
            res=0;
            for(int i=0;i<n;i++)
            {
                scanf("%d%d",&a[i].x,&a[i].y);
                a[i].r=i+1;
            }
            sort(a,a+n,cmp);
         // for(int i=0;i<n;i++)
        //  {
      //        printf("%d %d
    ",a[i].x,a[i].y);
      //    }
            dp(0);
          //  printf("%d
    ",res);
            for(int i=0;i<res-1;i++)
                printf("%d ",ans[i]);
            printf("%d
    ",ans[res-1]);
        }
    }

  • 相关阅读:
    维度穿梭
    演绎与抽象
    幻想的功能
    深层探宝
    内存游戏
    函数内功
    共享与私有的变量
    参数的格式
    功能模拟与功能实现
    【Oracle】基础知识查漏补缺
  • 原文地址:https://www.cnblogs.com/acliang/p/4884022.html
Copyright © 2011-2022 走看看