zoukankan      html  css  js  c++  java
  • [CF1469C] Building a Fence

    [CF1469C] Building a Fence

    Description

    你手里有 n 个长为 1,高度为 k 的篱笆,而你需要给一块长为 n 的土地需布篱笆,这块土地是凹凸不平的,第 i 个单位的土地的高度为 h_i,在布篱笆时,需要遵守以下要求:对于初始的第 1 位置和结束的第 n 位置,篱笆要正好放在地面上;对于两块相邻的篱笆,至少要有长度为 1 的侧边相连接;篱笆不能太高,底边不能位于地面 hi 之上 k−1 的高度。输入给出地面的形状和每条篱笆的长度,判断能否按以上三条要求布设篱笆。

    Solution

    约束条件都没有方向性,所以我们可以从一个方向往领一个方向推一遍,看是否合法即可

    具体递推的过程就是区间的交运算

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    
    void solve()
    {
        int n, k;
        cin >> n >> k;
    
        vector<int> h(n + 2);
        for (int i = 1; i <= n; i++)
            cin >> h[i];
    
        int l = h[1], r = h[1];
    
        for (int i = 2; i <= n; i++)
        {
            int nl = max(h[i], l - k + 1);
            int nr = min(h[i] + k - 1, r + k - 1);
            if (nl > nr)
            {
                cout << "NO" << endl;
                return;
            }
            l = nl;
            r = nr;
        }
    
        if (l <= h[n])
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    
    signed main()
    {
        ios::sync_with_stdio(false);
    
        int t;
        cin >> t;
    
        while (t--)
        {
            solve();
        }
    }
    
  • 相关阅读:
    CF 444B(DZY Loves FFT-时间复杂度)
    摆弄【Nhibernate 协会制图--导乐陪伴分娩】
    固定的报文统计报告的规定
    CSS——(2)与标准流盒模型
    自动复制转换StringBuffer
    IM信息网
    Oracle Redo Log
    【转载】有哪些省时小技巧,是每个Linux用户都应该知道的
    Linux snmp
    MySQL zabbix
  • 原文地址:https://www.cnblogs.com/mollnn/p/14463283.html
Copyright © 2011-2022 走看看