從乙個由 nn 個整數排列組成的整數序列中,自左向右不連續的選出一組整數,可以組成乙個單調減小的子串行(如從 [68, 69, 54, 64, 68, 64, 70, 67, 78, 62, 98, 87][68,69,54,64,68,64,70,67,78,62,98,87] 中我們可以選取出 [69, 68, 64, 62][69,68,64,62] 這個子串行;當然,這裡還有很多其他符合條件的子串行)。給定整數序列的長度和整數序列中依次的值,請你求出這個整數序列中「最長的單調減小的子串行的長度」以及「值不同但長度都是最長得單調減小的子串行的數量」。
輸入第 11 行為乙個整數 nn,表示輸入的整數序列的長度(1 \leq n \leq 50001≤n≤5000)。接下來會輸入 nn 個整數(可能為一行或多行),每個整數都在 3232 位帶符號長整型範圍內。
輸出包括一行,為兩個數字,分別為針對給定的整數序列求出的「最長的單調減小的子串行的長度」以及「值不同但長度都是最長得單調減小的子串行的數量」。
樣例輸入
12
68 69 54 64 68 64
70 67 78 62 98 87
樣例輸出
4 2
**:
#include
#include
long long a[5004],dp[5004];
int main()}}
//for(int i = 0; i //printf("%d ",dp[i]);
int sum = 0;
for(int i = 0; i < n; i++)
if(max == dp[i])
sum++;
printf("%d %d",max,sum);
}
計蒜客 最長不下降子串行
題目描述 第一行為n,表示n個數第二行n個數 最長不下降子串行的長度 n小於5000for each num maxint 31 2 3 3題目分析 輸入乙個長度為n的序列,求最長不下降子串行的長度 方法分析 動態規劃。dp i 表示以a i a i 為記錄序列的陣列 結尾的最長不下降子串行的長度。...
計蒜客 n 子棋
小 a 和小 b 在玩 nn 子棋,nn 子棋遊戲的規則是,兩人在乙個左上角是 1,1 1,1 右下角是 n,n n,n 的 n times nn n 棋盤中交替落子,只要有一方的 nn 個棋子在同一行或者同一列或者同一條對角線上,對方就輸了。遊戲由小 a 先手,一共進行了 mm 回合,請你來當裁判...
計蒜客 Max answer 單調棧 DP思想
題目傳送門 單調棧時,將每個值作為最小值尋找其左右最長能夠延伸的位置,再利用字首和陣列進行更新最大值 然後處理負數時,我們總是盡可能希望負數能夠和負數相乘,這樣才能最大化 include include include includeusing namespace std const int max...