MT3040 矩形覆盖

简介: MT3040 矩形覆盖

3bc3db1aee064b68b1eb35e2e12ca5dd.jpg

4d600d52e2854054ba9c66928afbbc79.jpg


代码:


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 3e5 + 10;
int n, ans, d, w;
stack<int> s;
// 单调栈
// 如果楼高度类似121(凸,两边相等,中间比两边的大),则海报个数=3-1=2
// 如果楼高度类似212(凹,两边相等,中间比两边的小),则海报个数=3
// 例子:如果楼高为1,2,3,4,1,则使用单调递增栈,
// 栈中元素为1234时,此时1要进栈:4,3,2,1先出栈,1再进栈,所以使用5-1=4张海报
int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> d >> w;
        while (!s.empty() && w <= s.top())
        {
            if (s.top() == w)
            { // 遇见相等的
                ans++;
            }
            s.pop();
        }
        s.push(w);
    }
    cout << n - ans;
    return 0;
 
    return 0;
}


相关文章
|
5月前
|
程序员
老程序员分享:MT【202】内准圆
老程序员分享:MT【202】内准圆
22 0
老程序员分享:MT【202】内准圆
|
6月前
|
C++ iOS开发
|
6月前
|
人工智能 BI
MT3028 正反卡牌
MT3028 正反卡牌
|
6月前
|
人工智能
MT3032 环形喂猪
MT3032 环形喂猪
MT2045 斐波那契,但是是字符串
MT2045 斐波那契,但是是字符串