zoukankan      html  css  js  c++  java
  • hdu 1257

    我是按照DP 专题刷的,可这道题我应该是暴力过的

    神奇之一次AC:
    思路:

    第一个数肯定需要一个拦截系统,后面的如果是递减下来的数值用这一个就好了,如果数变大,要看一哪个拦截系统还可以拦下,如果都不能拦下,就要加一个拦截系统

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<algorithm>
    #include<math.h>
    using namespace std;
    
    int a[10005]={0},h[10005];
    int sum=1;
    void operate(int x)
    {
        for(int i =1;i<=sum;i++)
        {
            if(x<a[i])
            {
                a[i]=x;
                return ;
            }
        }
        sum++;
        a[sum]=x;
        return ;
    }
    
    int main()
    {
        int N;
        while(cin>>N)
        {
            sum = 0;
            memset(a,0,sizeof(a)); 
            for(int i =1;i<=N;i++)
            {
                cin>>h[i];
            }
            sum = 1;//拦截系统个数 
            a[1]=h[1];//第一个拦截系统的最大高度 
            for(int i = 2;i<=N;i++)
            {
                operate(h[i]);
            }
            cout<<sum<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    p1706 全排列
    2089烤鸡(类似于选数问题)
    1036选数
    bfs
    A-E
    A-3
    百题A-2
    百题A-1
    二级概念题
    随记
  • 原文地址:https://www.cnblogs.com/lyqf/p/9756792.html
Copyright © 2011-2022 走看看