zoukankan      html  css  js  c++  java
  • BZOJ 3594

    题目描述

    方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。
    这排玉米一共有N株,它们的高度参差不齐。
    方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。
    方伯伯可以选择一个区间,把这个区间的玉米全部拔高1单位高度,他可以进行最多K次这样的操作。拔玉米则可以随意选择一个集合的玉米拔掉。
    问能最多剩多少株玉米,来构成一排美丽的玉米。

    输入


    第1行包含2个整数n,K,分别表示这排玉米的数目以及最多可进行多少次操作。
    第2行包含n个整数,第i个数表示这排玉米,从左到右第i株玉米的高度ai。

    输出


    输出1个整数,最多剩下的玉米数。

    样例输入

    3 1
    2 1 3
    

    样例输出

    3
    最开始表示一点思路没有,观察题目,发现如果修改i的话,那么修改i~n是最优的,因为不会产生新的不符合条件的下降区间,然后就可以dp了,用f[i][j]来表示前i个玉米拔高k次剩下的最大玉米数,那么f[i][j]=max{f[k][l]}+1 (a[k]+l<=a[i]+j&&l<j)然后用二维树状数组优化一下,就可以A掉了。
    code:
    #define MAXN 10005
    #define MAXM 505
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    #define lowbit(x) ((x)&(-x))
    int n,k,a[MAXN],f[MAXN][MAXM],m,tree[MAXN+MAXM][MAXM];
    int Ans;
     
     
    inline void updata(int x,int y,int w){
        for(;x<=m+k;x+=lowbit(x))
            for(int j=y;j<=k+1;j+=lowbit(j))
                tree[x][j]=tree[x][j]>w?tree[x][j]:w;
    }
     
    inline int qmax(int x,int y){
        int ans = 0;
        for(;x;x-=lowbit(x))
            for(int j=y;j;j-=lowbit(j))
                ans=ans>tree[x][j]?ans:tree[x][j];
        return ans;
    }
     
    template<typename _t>
    inline _t read(){
        _t x=0;
        int f=1;
        char ch=getchar();
        for(;ch<'0'||ch>'9';ch=getchar())if(ch=='-')f=-f;
        for(;ch>='0'&&ch<='9';ch=getchar())x=x*10+(ch^48);
        return (_t)x*f;
    }
     
    int main(){
     
        n=read<int>(),k=read<int>();
        for(int i=1;i<=n;i++){
            a[i]=read<int>();
            m=m<a[i]?a[i]:m;
        }
     
        for(int i=1;i<=n;i++)
            for(int j=k;j>=0;j--){
                f[i][j]=qmax(a[i]+j,j+1)+1;
                updata(a[i]+j,j+1,f[i][j]);
                Ans=f[i][j]>Ans?f[i][j]:Ans;
            }
        printf("%d
    ",Ans);
    }


  • 相关阅读:
    Shell 中的 expect 命令
    #每日日报#7.11
    #每日日报#7.10
    #每日日报#7.09
    #每日日报#7月8日
    每日日报2020.7.17
    每日日报2020.7.16
    每日日报2020.7.15
    每日日报2020.7.14
    每日日报2020.7.13
  • 原文地址:https://www.cnblogs.com/Cooook/p/7738520.html
Copyright © 2011-2022 走看看