【51nod】 1279

有一口井,井的高度爲N,每隔1個單位它的寬度有變化。現在從井口往下面扔圓盤,如果圓盤的寬度大於井在某個高度的寬度,則圓盤被卡住(恰好等於的話會下去)。
盤子有幾種命運:1、掉到井底。2、被卡住。3、落到別的盤子上方。
盤子的高度也是單位高度。給定井的寬度和每個盤子的寬度,求最終落到井內的盤子數量。


如圖井和盤子信息如下:
井:5 6 4 3 6 2 3
盤子:2 3 5 2 4

最終有4個盤子落在井內。
本題由   @javaman  翻譯。
Input第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) Output輸出最終落到井內的盤子數量。 Sample Input
7 5
5
6
4
3
6
2
3
2
3
5
2
4
Sample Output
4
AC代碼:
#include<cstdio>
#include<algorithm>
using namespace std;
int a[50000+5],b[50000+5];
int main()
{
	int n,m;
	scanf("%d %d",&n,&m);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for(int i=1;i<=m;i++)
		scanf("%d",&b[i]);
	for(int i=2;i<=n;i++)
		a[i]=min(a[i-1],a[i]);
	int ans=0,j=n;	
	for(int i=1;i<=m;i++)
	{
		for(;j>=1;)
		{
			if(a[j]>=b[i])
			{
				ans++;
				j--;
				break;	
			}
			j--;	
		}
	//	if(j==0) break;	
	}
	printf("%d\n",ans);		
	return 0;
 } 


發佈了52 篇原創文章 · 獲贊 0 · 訪問量 8941
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章