計蒜客 蒜頭跳木樁 ( LIS的簡單變種)

2021-08-17 20:06:21 字數 1005 閱讀 7257

蒜頭君面前有一排 n

n 個木樁,木樁的高度分別是h_1,h_2,h_3\cdots h_nh1

​,h2

​,h3

​⋯hn

​。蒜頭第一步可以跳到任意乙個木樁,接下來的每一步蒜頭不能往回跳只能往前跳,並且跳下乙個木樁的高度 不大於 當前木樁。蒜頭君希望能踩到盡量多的木樁,請你幫蒜頭計算,最多能踩到多少個木樁。

第一行輸入乙個整數 n

n 代表木樁個數。第二行輸入 n

n 個整數 h_1,h_2,h_3\cdots h_nh1

​,h2

​,h3

​⋯hn

​,分別代表 n

n 個木樁的高度。(1 \leq n \leq 1000,1 \leq h_i \leq 1000001≤

n≤10

00,1

≤hi​

≤100

000)

輸出乙個整數,代表最多能踩到的木樁個數,佔一行。

樣例輸入

6

3 6 4 1 4 2

樣例輸出

4

該題仔細想想就是lis的簡單變種,學過lis(最長上公升子串行)的同學都知道該如何解;

簡單解法就是倒置陣列  求該陣列的最長上公升子串行即可

ac**

#include #include using namespace std;

int main(){

int dp[10010],n,a[1010],tmp[1010],max=-1010;

memset(dp,0,sizeof(dp));

cin>>n;

for(int i=1;i<=n;i++)//初始化樁子

cin>>a[i];

for(int i=1;i<=n;i++)//倒置樁子 求最長上公升子串行

tmp[n-i+1]=a[i];

for(int i=1;i<=n;i++) {

dp[i]=1;

for(int j=1;j

計蒜客 蒜頭君的猜想

有一天蒜頭君突發奇想,他有乙個猜想,任意乙個大於 2 2 的偶數好像總能寫成 2 2 個質數的和。蒜頭君查了資料,發現這個猜想很早就被乙個叫哥德 的人提出來了,稱為哥德 猜想。目前還沒有證明這個猜想的正確性。蒜頭君告訴你乙個整數 n n 讓你用這個數去驗證。注意 1 1 不是質數。輸入乙個偶數 n ...

蒜頭君的兔子 計蒜客)

蒜頭君的兔子 題意 有個姓蒜的第一年有1對兔子,兔子到第二年之後每年會生一對兔子,到十歲的時候就會gg,為n年後有幾隻兔子。我一開始是直接維護了乙個0 10的陣列,分別表示0 10歲的兔子分別有多少個,每次暴力轉移。includeusing namespace std const int mod 1...

受歡迎的蒜頭 計蒜客

受歡迎的蒜頭 tarjan演算法 縮點 先把乙個圖的各個強連通分量求出 使用tarjan演算法 接著用縮點的形式構建乙個有向無環圖 把各個強連通分量看成乙個點,利用點與點之間的關係,構建乙個強連通分量之間的有向圖,而且這個圖一定是無環的圖 然後分析這個有向無環圖的出入度情況,出度為0,入度不為0,那...