首页 > 其他分享 >B. The Walkway

B. The Walkway

时间:2023-10-28 16:56:44浏览次数:36  
标签:1.0 int tot ceil Walkway 饼干 椅子

大意:

B. The Walkway

在一个二维公园中,有n个椅子,从一个一直到另一个椅子的时间为d,有m个卖饼干,分布在$s_i$椅子旁边,

当且仅当以下条件中至少有一个成立时,他才会在$ i$长凳附近吃饼干:

  • 在第 $i$个长凳附近有一个卖饼干的人。那么 Petya 就会从卖饼干的人那里买一块饼干并立即吃掉。
  • Petya 还没有吃过饼干。那么 Petya 会从他的背包里拿出一块饼干并立即吃掉。(当x=1时,吃一个)
  • 距离 Petya 吃上一块饼干至少过去了 $d$ 分钟。换句话说,然后,彼佳将从背包中取出一块饼干并立即吃掉。

去掉一个椅子求吃的最少饼干数,及方案数

思路:

因为一个椅子到它的下一个椅子这个区间吃的饼干数只与这个椅子有关,所以先计算出每个区间的,要吃的饼干数,

再遍历如果去掉这卖饼干的区间$[s[i-1] , s[i+1])$的饼干数与$[s[i-1],i)+[s[i],i+1)$的差,注意边界处理.

对于最后一个要使用向下取整

假设在第一个椅子旁边有一个买饼干的

code

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
#define ios                  \
    cin.sync_with_stdio(0);  \
    cin.tie(0);              \
    cout.sync_with_stdio(0); \
    cout.tie(0);
#define endl '\n';
const ll MOD = 1e9 + 7;
int n, m, s[N], d;
void solved()
{
    cin >> n >> m >> d;
    for (int i = 1; i <= m; ++i)
        cin >> s[i];
    int ans = 1;
    int tot[N] = {0};
    s[0] = 1;
    ans = ceil(1.0 * (s[1] - 1) / d);
    for (int i = 1; i < m; ++i)
    {
        ans += ceil(1.0 * (s[i + 1] - s[i]) / d);
        tot[i] = ceil(1.0 * (s[i + 1] - s[i]) / d) + ceil(1.0 * (s[i] - s[i - 1]) / d) - ceil(1.0 * (s[i + 1] - s[i - 1]) / d);
    }
    ans += floor(1.0 * (n - s[m]) / d + 1);
    tot[m] = floor(1.0 * (n - s[m]) / d + 1) + ceil(1.0 * (s[m] - s[m - 1]) / d) - floor(1.0 * (n - s[m - 1]) / d + 1);
    int num = 0, Max = *max_element(tot + 1, tot + 1 + m);
    for (int i = 1; i <= m; ++i)
    {
        // cout << tot[i] << " ";
        if (tot[i] == Max)
            num++;
    }
    cout << ans - Max << " " << num << endl;
}
int main()
{
    ios int t = 1;
    cin >> t;
    while (t--)
    {
        solved();
    }
}

标签:1.0,int,tot,ceil,Walkway,饼干,椅子
From: https://www.cnblogs.com/bhxyry/p/17794265.html

相关文章

  • CF1858B The Walkway 图解
    思路注意:所有变量名与原题面相同。因为\(1\)号点必须吃一块饼干,所以我们可以在\(1\)立一个不可删除的商店,记为\(s_0\)。注意:如果\(1\)号附近本身就有一个商店,那就不用立。然后我们可以在\(n+1\)的位置立一个不可删除的商店,作为一个结束标志,记为\(s_{m+1}\)。......