POJ 1952 BUY LOW BUY LOWER 【DP】最长降序子序列及其计数问题

动态规划之最长不降序子序列 阅读详情

 

BUY LOW, BUY LOWER
Time Limit: 1000MS Memory Limit: 30000K
Total Submissions: 4981 Accepted: 1663

Description

The advice to "buy low" is half the formula to success in the bovine stock market.To be considered a great investor you must also follow this problems' advice: 
                    "Buy low; buy lower"

Each time you buy a stock, you must purchase it at a lower price than the previous time you bought it. The more times you buy at a lower price than before, the better! Your goal is to see how many times you can continue purchasing at ever lower prices. 

You will be given the daily selling prices of a stock (positive 16-bit integers) over a period of time. You can choose to buy stock on any of the days. Each time you choose to buy, the price must be strictly lower than the previous time you bought stock. Write a program which identifies which days you should buy stock in order to maximize the number of times you buy. 

Here is a list of stock prices: 
 Day   1  2  3  4  5  6  7  8  9 10 11 12

Price 68 69 54 64 68 64 70 67 78 62 98 87


The best investor (by this problem, anyway) can buy at most four times if each purchase is lower then the previous purchase. One four day sequence (there might be others) of acceptable buys is: 
Day    2  5  6 10

Price 69 68 64 62

Input

* Line 1: N (1 <= N <= 5000), the number of days for which stock prices are given 

* Lines 2..etc: A series of N space-separated integers, ten per line except the final line which might have fewer integers. 

Output

Two integers on a single line: 
* The length of the longest sequence of decreasing prices 
* The number of sequences that have this length (guaranteed to fit in 31 bits) 

In counting the number of solutions, two potential solutions are considered the same (and would only count as one solution) if they repeat the same string of decreasing prices, that is, if they "look the same" when the successive prices are compared. Thus, two different sequence of "buy" days could produce the same string of decreasing prices and be counted as only a single solution. 

Sample Input

12
68 69 54 64 68 64 70 67 78 62
98 87

Sample Output

4 2

Source

 

 

基于ESP32的无线DMX节点设计:从Art-Net/sACN到DMX512的协议转换与实现 在舞台灯光和建筑照明控制系统中,DMX512是行业标准的数字调光协议,用于控制灯具的亮度、颜色和效果。其原理是通过RS-485差分信号串行传输512个通道的数据,每个通道对应一个控制值。然而,传统有线DMX布线复杂、成本高,在移动装置、历史建筑或临时活动中部署困难。为解决此问题,业界发展出了基于以太网的灯光控制协议,如Art-Net和sACN(E1.31),它们将DMX数据封装在UDP包中,通过网络传输。这项技术的核心价值在于实现了灯光控制的网络化与无线化,大幅提升了系统的灵活性和部署效率。其典型应用场景包 阅读详情

相关推荐

Dify Rerank 模型配置全流程解析:从报错定位到代码实现

Dify Rerank 模型配置全流程解析:从报错定位到代码实现

engchina的专栏 4471

动态规划-最长上升(下降)子序列的O(n logn)写法(基于树状数组)

动态规划-最长上升(下降)子序列的O(n logn)写法(基于树状数组) 常规最长上升(下降)子序列的时间复杂度是O(n2)O(n^2)O(n2)。 优化后可以达到O(nlogn)O(n logn)O(nlogn) 一般思维是遍历数组,每次枚举找出前面比它小的元素对应的最长上升子序列的最大长度,而树状数组正是在这一步优化速度的。 那么如何利用树状数组加速呢? 先复制一份数组,然后排序并剔除相同元素...

画船听雨眠 928

糖果【贪心】

【问题描述】 有N(1≤N <100,000)N(1≤N~<100,000)N(1≤N <100,000)种不同类型的糖果,每种糖果数量无限多。第i种糖果每颗的价格是Pi(1≤Pi≤1018),有Ci(1≤Ci≤1018)P_i(1≤P_i≤10^{18}),有C_i (1≤C_i≤10^{18)}Pi​(1≤Pi​≤1018),有Ci​(1≤Ci​≤1018)头牛想吃这种糖果。 FarmerJohnFarmer JohnFarmerJohn拥有金钱BBB元(1≤B≤1

算法小猪的博客 797

【算法】找最长的降序子序列

找数组中最长的降序子序列(不要求连续的)。我一听这个题觉得很熟悉,因为我们做多了找数组的最长上升子序列。就是将数组逆序过来,找最长的上升子序列即可。但是我们的时间复杂度是O(NN)的,但是今天我们求的这个最长降序方法的时间复杂度是O(NlgN)的。 方法一:通过库函数lower_bound来实现 算法思想:我们有一个数组 {11,3,4, 3.5, 1}, 我们再找最长降序子序列的时候,11和3满...

进阶之路 2140

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程

北海村夫的博客 4637

搞定安卓11+抓包难题:用Kitsune Mask、magic_overlayfs和LSPosed三件套绕过SSL Pinning(保姆级教程)

本文详细解析了安卓11+系统中抓包面临的核心挑战,包括SSL Pinning和Root检测机制,并提供了使用Kitsune Mask、magic_overlayfs和LSPosed三件套的完整解决方案。通过动态分区技术解析和工具链配置,帮助开发者绕过安全限制,实现高效抓包分析。

weixin_42665255的博客 444

最大上升子序列&最大下降子序列

一、基础 for(int i=1;i&lt;=n;i++){ for(int j=1;j&lt;i;j++) if(a[j]&lt;a[i]) f[i]=max(f[i],f[j]+1); ans=max(ans,f[i]); } 二、复杂度o(nlogn) cin&gt;&gt;n&gt;&gt;k; for(int i=0;i&...

DeathYmz的博客 1199

GD32F105RBT6 keil工程模板

创建GD32F105RBT6的keil初始基础工程,未来的所有外设驱动都是基于这个基础工程进行扩展。

RMDYBW的博客 1927

最长升序和降序子序列-导弹拦截2

package 动态规划.最长升序和降序子序列; import java.util.Scanner; /*升序  * 它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。要准备几套这样的导弹拦截系统  * 能有多少个最长降序子序列==>最长升序子序列长度  * 因为降序只能覆盖降序的,升序的绝对覆盖不了,实际上求得就是升序的个数  */ pub

Nuan_Feng的博客 574

数字设计与计算机体系结构习题答案,数字设计和计算机体系结构习题答案DigitalDesignandComputerArchitecture.pdf...

数字设计和计算机体系结构习题答案DigitalDesignandComputerArchitecture.pdfDavid Money Harris and Sarah L. Harris, Digital Design and Computer Architecture, © 2007 by Elsevier Inc.Exercise SolutionsC H A P T E R ...

weixin_39851408的博客 1785

Nano Banana 2哪里使用?Nano Banana 2提示词合集和使用教程

收集最强的Nano Banana 2提示词合集,以及Nano Banana 2哪里使用的教程,并且有10个免费使用渠道。

qq_42927225的博客 1996

POJ 1952 BUY LOW, BUY LOWER DP 最长下降序列求个数

注意:重复的只算一次 如何去掉一些重复的是本题的关键 我的去重思路: 7 5 3 7 6 3 2 1 6 5 3 7 3 1 5 5 3 2 1 3 第一组在推到 数字 2 的时候有 3会出现重复, 显然前面一个3是可有可无的。 第二组也一样,前面一个3是可有可无的。 1.如果最长下降序列中有后面一个3, 如第一二组数据,那么前面一个3是无用的,在推好后面一个3之后把之前的所

Nicolas 1265

13、基因相似性度量的相关性及特征选择研究

本文研究了基因相似性度量和特征选择在生物学中的应用,详细介绍了GO术语相似性度量的多种方法,包括语义度量和路径长度度量,并分析了不同方法在酵母和人类数据集上的表现。研究发现,Avg-sum方法和基于路径长度的度量在多数情况下效果较好。此外,通过晚期辐射毒性预测的案例研究,探讨了特征选择的重要性及可能面临的过拟合和噪声干扰问题,并提出了相应的解决策略。

js777的博客 127

POJ1952 BUY LOW, BUY LOWER

题意很简单,就是求最长降序子序列的长度和其个数且不能重复。 用dp[i]表示以第i个数为尾的最长子序列的长度,t[i]表示第i个数为尾的最长子序列的个数,特别的,当a[i]与a[j](i>j)相同且之前的序列也重复时(具体就是此时dp[i]==1),强制令t[i]=0,可用数学归纳法证明。 不想多说了,代码见下。 #include int n,len,cnt,a[5005]; i

Strawberry fields forever 580

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

POJ 1952 BUY LOW, BUY LOWER G++ 动态规划 背

买股票,要求同种股票每次购入的价格总比上次购入价格低。给出一支股票连续N天的股价,求按要求最多能买多少次,并且有多少种购入股票价格组合。

woniupengpeng的专栏 292

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

最长升序和降序子序列-聪明的美食家_拦截导弹

package 动态规划.最长升序和降序子序列; import java.util.Scanner; /*升序  * 定义一个范围,为n,然后,让n与之前的所有数进行比较,当遇到比自己小的值时候,拿他+1与自己比较,取最大值即可  * dp[n]=max(dp[n],dp[n-k]+1);  *   *   * if (i == n || arr[i]  * 优化

Nuan_Feng的博客 580

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

poj-2945:拦截导弹

题目描述: 总时间限制: 1000ms 内存限制: 65536kB 描述某国为了防御敌国的导弹袭击,开发出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭,并观测到导弹依次飞来的高度,请计算这套系统最多能拦截多少导弹。拦截来袭导弹时,必须按来袭导弹袭击的时间顺序,不允

SmarterYu的专栏 3001

算法:最长升序降序序列(最长升序序列)

算法:最长升序降序序列, 7 5 6 8 10 7 9 3 8 7 4 1 8 9 4, 则最长的升序序列为5, 6, 8, 10, 最长的降序序列为8, 7, 4, 1

helloworld的专栏 2643

最长升序和降序子序列-分分钟的碎碎念

package 动态规划.最长升序和降序子序列; import java.util.Scanner; public class 分分钟的碎碎念 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int arr[] =

Nuan_Feng的博客 593

导弹拦截

题目描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度, 但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国导弹来袭。由于该系统还在试用阶段,所以只用一套系统, 因此有可能不能拦截所有的导弹。 输入 第一行输入测试数据组数N(1 接下来一行输入这组测试数据共有多少个导弹m(1 接下来行输入导弹依次

sheldon的专栏 869

最长升序和降序子序列-导弹拦截2_优化

package 动态规划.最长升序和降序子序列; import java.util.Scanner; /*升序  * 时间复杂度O(log)  * 从arr里面每次拿出一个数,跟t数组最后以为进行比较,  * 大:放t数组后面  * 小:覆盖从t数组往前找最后一个比自己小的,覆盖他前面一个,(利用2分查找)  * t[1]  */ public class 导弹拦截2_优

Nuan_Feng的博客 505

最长升序和降序子序列-作业题

package 动态规划.最长升序和降序子序列; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class 作业题 { static class Position { public int x; public int y; public P

Nuan_Feng的博客 1135

算法 : 最长升序降序序列

引用 :算法:最长升序降序序列,7 5 6 8 10 7 9 3 8 7 4 1 8 9 4,则最长的升序序列为5, 6, 8, 10,最长的降序序列为8,7,4,1           看了一些网上的资料,最长的升序/降序 好像不是非要在彼此挨着的吧?          最长的升序序列 不可以为 :5 6 7 8 9 吗?          最长的降序序列 不可以为 :10 9

~飞 鸟 (*^__^*) 天 堂~ 2150

算法--最长升序子序列

参考:https://blog.youkuaiyun.com/uestclr/article/details/50760563 问题描述 给定数组arr,返回arr的最长递增子序列的长度,比如arr=[2,1,5,3,6,4,8,9,7],最长递增子序列为[1,3,4,8,9]返回其长度为5. 实现 动态规划表,dp[i]表示以arr[i]结尾的最长升序子序列的长度 动态规划表,dpStr[i]表...

sky302761277的优快云 592

最长下降子序列

文章目录题目思路DP+暴搜代码实现DP+二分 题目 给出一组数据 nums,求出其最长下降子序列(子序列允许不连续)的长度。(类似于lc的最长递增子序列) 示例: 输入: 6 // 数组元素个数 3 4 3 5 2 1 // 数组 输出: 4 // 最长下降子序列为4321,长度为4 思路 DP+暴搜 DP数组 表示 nums数组 对应下标的元素作为末尾时最长下降子序列的长度,因此将 DP数组中的元素 全部初始化为 1(最起码这个下降子序列里有当前元素)。 从 nums 的第二个元素开始(记为

Jormungand_V的博客 3929

GOOGLE的一道笔试题—求给定连通无环无向图可以生成的最小高度树

/*最近看到一道谷歌笔试题,“已知一颗无向无环连通图T的所有顶点和边的信息,现需要将其转换为一棵树,要求树的深度最小,请设计一个算法找到所有满足要求的树的根结点,并分析时空复杂度(描述算法即可,无需代码)”其实就是给定一个无向连通图,求以哪些顶点为根可以得到深度最小的树,思路比较简单,主要有两个步骤:(1)首先选取1号结点作为树根,进行一遍DFS,在DFS时计算每个节点

bobten2008的专栏 3707
上一篇: POJ 1964 & 1494
下一篇: POJ 1946 Cow Cycling
bobten2008
博客等级 码龄18年 153粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值