• 1279 扔盘子(51nod)


    题目链接

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279

    这道题要求的就是当顶被封之前有多少盘被扔下去= =当顶被封住时 即使下面的盘子再小也不能扔下去

    我们用a[]保存井的宽度,数组b[]来保存盘子的大小

    首先盘子j要是能到达第i米,则需要满足min(a[0~i])>=b[j];

    所以我们只需保存最小值便可

     1 #include<stdio.h>
     2 #include<string.h>
     3 #include<iostream>
     4 #include<algorithm>
     5 #define maxn 10000
     6 using namespace std;
     7 int a[maxn],b[maxn];
     8 int main()
     9 {
    10     int n,m;
    11     scanf("%d %d",&n,&m);
    12     for(int i=0;i<n;i++)
    13     {
    14         scanf("%d",&a[i]);
    15     }
    16     for(int i=0;i<m;i++)
    17     {
    18         scanf("%d",&b[i]);
    19     }
    20     int ans=0;
    21     for(int i=1;i<n;i++)
    22     {
    23         a[i]=min(a[i-1],a[i]);
    24     }
    25     for(int i=0;i<m;i++)
    26     {
    27         for(--n;n>=0&&a[n]<b[i];--n);//求出当前的盘子被卡在第几层
    28             if(n>=0)
    29             ans++;
    30             else
    31             break;//当盘子到达井口时跳出循环
    32     }
    33     printf("%d
    ",ans);
    34     return 0;
    35 }
  • 相关阅读:
    问题 D: 错误探测
    问题 C: 计算矩阵边缘元素之和
    同行列对角线的格子
    矩形交换行
    问题 R: 鸡尾酒疗法
    问题 : 字符串p型编码
    循环结构 整数的个数
    字符串c++字符环
    ISBN码字符串c++
    Uva
  • 原文地址:https://www.cnblogs.com/NaCl/p/4724950.html
Copyright © 2020-2023  润新知