zoukankan      html  css  js  c++  java
  • 「CJOJ2725」Wave

    Description


    给定一个长度为n的数列,试求一个最长的不稳定波动子序列满足子序列任意偶数项的 值不小于其相邻两项的值,且相邻两项的差不小于k 。

    Input


    输入第一行两个正整数 n,k ;
    第二行,n 个非负整数描述这个数列。

    Output


    输出一个整数即答案。

    Sample Input


    10 3
    2 6 7 9 0 3 7 6 4 45

    Sample Output


    4

    Hint


    数据范围及约定
    对于 30% 的数据,n<=1000 。
    对于 70% 的数据,n<=100000 。
    对于 100% 的数据,n<=(2∗10^6) , 数列中的数不超过 (2^31−1)

    题解


    这道题目很皮啊,其实只要让偶数位的最大化,奇数位的尽量小,然后就是贪心AC了。

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout);
    #define re register
    #define ll long long
    using namespace std;
    
    inline int gi(){
    	int sum=0,f=1;char ch=getchar();
    	while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    	while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
    	return f*sum;
    }
    const int maxn=10000010;
    int ans[maxn],a[maxn];
    int main(){
    	int i,j,k,n,m;
    	n=gi();k=gi();
    	for(i=1;i<=n;i++)a[i]=gi();
    	int cnt=1;
    	ans[cnt]=a[1];
    	for(i=2;i<=n;i++){
    		if(cnt%2){
    			if(a[i]<ans[cnt])ans[cnt]=a[i];
    			else if(a[i]-k>=ans[cnt])ans[++cnt]=a[i];
    		}
    		else{
    			if(a[i]>ans[cnt])ans[cnt]=a[i];
    			else if(a[i]+k<=ans[cnt])ans[++cnt]=a[i];
    		}
    	}
    	printf("%d
    ",cnt);
    	return 0;
    }
    
    
  • 相关阅读:
    html 基本布局介绍
    Hbase1.1.x Java版之批量查删操作
    java命令执行jar文件
    【转】python多版本并存,python3安装pip
    JavaHbase连接代码示例
    Shell执行将脚本里的变量打印到指定日志文件
    Datax将本地文件导入Hbase数据库!!!酷酷酷
    shell关于日期的加减
    python2安装pymongo
    Python从MongoDB中按天读取数据并格式化日志
  • 原文地址:https://www.cnblogs.com/cjgjh/p/9371647.html
Copyright © 2011-2022 走看看