原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279
思路:贪心, 可以知道 如果上面的宽度比下面还低的话, 是不可能到达下面的,于是可以预处理井的宽度,并从下到上贪心放置盘子即可
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 50005;
int w[MAXN];
int main() {
int n, m, d, ans = 0;
scanf("%d %d", &n, &m);
scanf("%d", &w[0]);
for (int i = 1; i < n; i++) {
scanf("%d", &w[i]);
w[i] = min(w[i], w[i - 1]);
}
n--;
for (int i = 0; i < m; i++) {
scanf("%d", &d);
while (w[n] < d)n--;
if (n >= 0) {
ans++;
n--;
}
else {
break;
}
}
printf("%d\n", ans);
return 0;
}