P1108 低价购买 最长下降子序列不用多讲:关键是方案数: 在求出f[i]时,我们可以比较前面的f[j]; 如果f[i]==f[j]&&a[i]==a[j] 要将t[j]=0,去重: 这样将所有t[j]加起来就是方案数: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; int n; int f[maxn],t[maxn]; int a[maxn]…
传送门 解题思路 看第一个要求,很显然是求最长下降子序列,和LIS几乎一样,很简单,再看第二个问号,求最长下降子序列的方案数??这怎么求? 注意:当二种方案“看起来一样”时(就是说它们构成的价格队列一样的时候),这2种方案被认为是相同的. 这里就用到了一种基于dp的dp. 我们用a[i]存原来的数,f[i]存以第i个数结尾的最长下降子序列的长度,t[i]存以i结尾的最长下降子序列的方案数. f[i]照常求,那么t[i]不能重复,怎么求呢? 首先,对于每一个i,枚举j=1...i-1. 若f[i]…
这道题用n方的算法会很好做 我一开始想的是nlogn的算法求方案数, 然后没有什么想法(实际上也可以做,但是我太弱了)我们就可以根据转移方程来推方案数,只是把max改成加,很多动规题 都是这样,比如背包的方案数. 设f[i]为以i为结尾的方案数 当 b[j] + 1 == b[i] 且 a[j] > a[i]时,f[i] 加上f[j] 同时要去重,当b[i] == b[j] 且 a[i] == a[j]时,f[i]为0 另外int最大范围是2^31-1,按理来说这道题应该开longlong,但是…
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(216范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循“低价购买:再低价购买”的原则.写一个程序计算最大购买次数. 这里是某支股票的价格清单: 日期  1 …
P1108 低价购买 标签 动态规划 难度 提高+/省选- 题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价(2^16范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循"…
题目 P1108 低价购买 解析 这题做的我身心俱惫,差点自闭. 当我WA了N发后,终于明白了这句话的意思 当二种方案"看起来一样"时(就是说它们构成的价格队列一样的时候),这2种方案被认为是相同的. 这题有两问,第一问显然最长严格下降子序列,一看数据范围:5000,跟最长严格上升子序列一样,\(n^2\)直接写就行. 第二问求方案数,方案数也是用dp做 转移方程 //j<i if (f[i] == f[j] + 1 && a[j] > a[i]) cnt[…
传送门 思路: 对于第一问很容易看出是求最长下降子序列,N2 的暴力就可解决.而第二问是求最优方案数(且不重复),需要判重.可以在求解最长下降子序列的基础上增开一个数组 g ,g[ i ] 表示以 i 结尾,不同的最优方案数. 标程: #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<strin…
第一问是最长下降子序列,n很小,n^2可过,注意最长下降子序列的枚举顺序即可 ;i<=n;i++)//不要写错 ;j<i;j++)//不要打成<= ) b[i]=b[j]+; 第二问统计方案数 我们设cnt[i]表示以i结尾的最长下降子序列的长度 然后转移方案数 如果a[i]<a[j]&&b[i]==b[j]+1 就可以把原序列拼接上去 如果相等,则前面已经包含此情况,b[j]=0 over #include <cstdio> #include <…
\(Link\) \(\mathcal{\color{red}{Description}}\) 请你求出一个数列的最长下降子序列长度,并为此求出其方案数. \[1 \leq N \leq 5000\] \(\mathcal{\color{red}{Solution}}\) 乍一看这个复杂度其实是卡死的--如果是\(n^2\)的话,我们的处理规模达到了\(25,000,000\),时限一秒的话--会感到很紧迫\(qwq\),但是的确能跑出来. 我们下来思索,对于最朴素的算法,如果不求方案数的话,是…
P1108 低价购买 题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股票,你必须用低于你上次购买它的价格购买它.买的次数越多越好!你的目标是在遵循以上建议的前提下,求你最多能购买股票的次数.你将被给出一段时间内一支股票每天的出售价( \(2^{16}\)范围内的正整数),你可以选择在哪些天购买这支股票.每次购买都必须遵循"低价购买:再低价购买&q…