P1108 低價購買

2022-04-29 03:09:08 字數 948 閱讀 4303

對於第一問很容易看出是求最長下降子串行,n2 的暴力就可解決。而第二問是求最優方案數(且不重複),需要判重。可以在求解最長下降子串行的基礎上增開乙個陣列 g ,g[ i ] 表示以 i 結尾,不同的最優方案數。

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define max(a,b) ((a)>(b)?(a):(b))

#define min(a,b) ((a)<(b)?(a):(b))

#define maxn 150001

#define inf 0x7ftypedef

long

long

ll;ll n,maxx=-inf,ans=0

;ll a[maxn],d[maxn],g[maxn];

inline ll read()

while

(isdigit(ls))

return xs*kr;

}int

main()

for(ll i=1;i<=n;i++)

maxx=max(maxx,d[i]);//

記錄最長下降子串行長度

for(ll i=1;i<=n;i++)

if(d[i]==maxx)

ans+=g[i];//

統計最優方案數

printf("

%lld %lld\n

",maxx,ans);

return0;

}

P1108 低價購買

原題鏈結 d i 是以 i 這個位置結束的最長下降子串行的長度 第一問就是求個最長下降子串行 第二問 記錄以 i 這個位置結束 長度為d i 的下降子串行的方案總數 d i d j 1 1 j i 的 j 的方案數相加 但是當兩個不同的位置上存的數相同且均滿足上式時 就會產生重複 因為位置靠後的數肯...

P1108 低價購買

題目描述 低價購買 這條建議是在奶 票市場取得成功的一半規則。要想被認為是偉大的投資者,你必須遵循以下的問題建議 低價購買 再低價購買 每次你購買一支 你必須用低於你上次購買它的 購買它。買的次數越多越好 你的目標是在遵循以上建議的前提下,求你最多能購買 的次數。你將被給出一段時間內一支 每天的 價...

P1108 低價購買 DP

給定乙個序列,求最長下降子串行,及不重複的方案數。洛谷鏈結 最長下降子串行可以用 o n 2 的簡單dp來求。不難發現 在乙個元素互不相同的序列中,不會出現重複方案,因此可以通過dp累計答案 詳見 然後考慮去重,發現以x結尾的最長序列,位置靠後的x的方案會包括位置靠前的x的方案。因此可以刪除最後乙個...