1 #include2using
namespace
std;
3const
int maxn=5005;4
int n,len_ans=1
,ans;
5int
a[maxn],d[maxn],len[maxn],f[maxn];
6int search(int l,int r,int
val)714
return
l;15}16
intmain()
1727
//f陣列 到達i位置的長度為len[i]的下降子串行(不一定是全域性最長下降子串行) 的種類數
28for(int i=1;i<=n;++i)
2937
if(len[i]==len_ans) ans+=f[i];//
若到該點的最大下降長度為全域性最長下降長度就把該點方案數計入答案
38}
39 printf("
%d %d
",len_ans,ans);
40return0;
41 }
洛谷 P1108 低價購買
題目 低價購買 思路 第一問求最長下降子串行,o n 2 的複雜度就夠了。第二問如果不考慮重複的情況,也好做。令g i 表示最長下降子串行長為f i 時的方案數,g i g j j 1,i 最終方案數為 g i i 1,n 然後再減去重複的情況。假設存在一組i,j使得f i f j 且a i a j...
洛谷P1108 低價購買
題目鏈結 n 5000 n 2的演算法是可以接受的 第乙個數字顯然是求最長下降子串行,可以n 2或nlogndp 要求方案數,可以在n 2演算法中做一些修改,dp求方案數 dp i 表示以第i個數為結尾的最長下降子串行 f i 表示以第i個數為結尾的最長下降子串行的個數 當a j 而當a i a j...
P1108 低價購買
原題鏈結 d i 是以 i 這個位置結束的最長下降子串行的長度 第一問就是求個最長下降子串行 第二問 記錄以 i 這個位置結束 長度為d i 的下降子串行的方案總數 d i d j 1 1 j i 的 j 的方案數相加 但是當兩個不同的位置上存的數相同且均滿足上式時 就會產生重複 因為位置靠後的數肯...