• 51Nod1279 扔盘子


    题目

    有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。

    盘子有几种命运:1、掉到井底。2、被卡住。3、落到别的盘子上方。

    盘子的高度也是单位高度。给定井的宽度和每个盘子的宽度,求最终落到井内的盘子数量。

    思路

    小口下面的大口没用,让井变递减,n+m匹配

    代码

    #include<bits/stdc++.h>
    #define ll long long
    #define db double
    using namespace std;
    int n,m;
    int w[50020],d[50020];
    int main(){
    	scanf("%d%d",&n,&m);
    	scanf("%d",&w[1]);
    	for(int i=2;i<=n;i++){
    		scanf("%d",&w[i]);
    		if(w[i]>w[i-1]) w[i]=w[i-1];
    	}
    	for(int i=1;i<=m;i++){
    		scanf("%d",&d[i]);
    	}
    	int p=n,ans=0;
    	for(int i=1;i<=m&&p>0;i++){
    		while(p>0){
    			if(d[i]<=w[p]){
    				break;
    			}
    			else{
    				p--;
    			}
    		}
    		if(p==0) break;
    		ans++;
    		p--;
    	}
    	cout<<ans<<endl;
    	return 0;
    }
  • 相关阅读:
    ADO.NET
    c#中的is和as运算符
    继承 多态
    封装
    面向对象定义 特征 原则
    sql触发器
    MySQL 学习总结2
    sql 存储过程
    MySQL 学习总结1
    DevExpress主要常用控件说明:
  • 原文地址:https://www.cnblogs.com/sz-wcc/p/11236925.html
Copyright © 2020-2023  润新知