51nod 2級演算法題 1279

2021-07-31 03:57:33 字數 1340 閱讀 8718

有一口井,井的高度為n,每隔1個單位它的寬度有變化。現在從井口往下面扔圓盤,如果圓盤的寬度大於井在某個高度的寬度,則圓盤被卡住(恰好等於的話會下去)。

盤子有幾種命運:1、掉到井底。2、被卡住。3、落到別的盤子上方。

盤子的高度也是單位高度。給定井的寬度和每個盤子的寬度,求最終落到井內的盤子數量。

如圖井和盤子資訊如下:

井:5 6 4 3 6 2 3

盤子:2 3 5 2 4

最終有4個盤子落在井內。

第1行:2個數n, m中間用空格分隔,n為井的深度,m為盤子的數量(1 <= n, m <= 50000)。

第2 - n + 1行,每行1個數,對應井的寬度wi(1 <= wi <= 10^9)。

第n + 2 - n + m + 1行,每行1個數,對應盤子的寬度di(1 <= di <= 10^9)

輸出最終落到井內的盤子數量。
7 556

4362

3235

24

4
思路:

轉換成乙個單調非遞增的棧就好了。底下的井寬度大於上面的井的寬度也是無用的!

#include yhe

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define endl "\n"

const

int maxn = 5e4+10;

int w[maxn];

int d[maxn];

int main ()

for(int i=0;icin>>d[i];

}int cnt=w[0];

for(int i=0;iif(cnt>w[i])

w[i]=cnt;

}int sum=0;

int j=n-1;

for(int i=0;iwhile(d[i]>w[j])

if(j<0)

j--;

sum++;

}cout

0;}

51nod 2級演算法題 1007

基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。第1行 乙個數n,n為正整數的數量。第2 n 1行,n個正...

51nod 2級演算法題 1092

基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 收藏 關注 回文串是指aba abba cccbccc aaaa這種左右對稱的字串。每個字串都可以通過向中間新增一些字元,使之變為回文字串。例如 abbc 新增2個字元可以變為 acbbca,也可以新增3個變為 ab...

51nod 3級演算法題 1065

n個整數組成的序列a 1 a 2 a 3 a n 從中選出乙個子串行 a i a i 1 a j 使這個子串行的和 0,並且這個和是所有和 0的子串行中最小的。例如 4,1,5,2,1,2,6,2。1,5,2,1,序列和為1,是最小的。第1行 整數序列的長度n 2 n 50000 第2 n 1行 n...