有一口井,井的高度為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...