上一层a窄于下一层b,则盘子c>a&&c<b时,是到达不了b的,所以预处理井,a<b时,b=a;
这时,井就成了一个上宽下窄的井,从下开始比较,盘子的卡到一个位置,那这里之下的井就不用再看了。
1 #include<stdio.h> 2 #include<algorithm> 3 #include<iostream> 4 #include<string.h> 5 using namespace std; 6 int main(){ 7 int n,m; 8 scanf("%d%d",&n,&m); 9 int a[n],b[m]; 10 for(int i=0;i<n;i++){ 11 scanf("%d",&a[i]); 12 if(a[i]>a[i-1]&&i!=0){ 13 a[i]=a[i-1]; 14 } 15 } 16 int sum=0,flag=0; 17 int w=n-1; 18 for(int i=0;i<m;i++){ 19 scanf("%d",&b[i]); 20 while(a[w]<b[i]){ 21 w--; 22 } 23 if(w>=0){ 24 sum++; 25 w--; 26 } 27 } 28 printf("%d",sum); 29 }
原文地址:https://www.cnblogs.com/precious-LZY/p/10329918.html
时间: 2024-11-01 20:36:56