专栏文章

题解:CF2091D Place of the Olympiad

CF2091D题解参与者 2已保存评论 1

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
1 条
当前快照
1 份
快照标识符
@mipt4umc
此快照首次捕获于
2025/12/03 17:31
3 个月前
此快照最后确认于
2025/12/03 17:31
3 个月前
查看原文

# CF2091D Place of the Olympiad 题解

实际上是个简单的数学题,用到了鸽笼原理。大意是说 nn 个物品放入 kk 个盒子,则至少有一个盒子放入的物品数至少为 nk\lceil \frac{n}{k}\rceil 个。
回到这题,显然一行放得越多,可能拼凑出的长度越大,那么数量最多的一行至少有 nk\lceil \frac{n}{k}\rceil 个桌子,我们肯定不希望有两个空位连在一起造成浪费,那么该行会有 mnkm-\lceil \frac{n}{k}\rceil 个空位,于是该行的 nk\lceil \frac{n}{k}\rceil 个作为物品放入 mnk+1m-\lceil \frac{n}{k}\rceil+1 个位置中,再用一次鸽笼原理,连缀起来的最长桌子是 nkmnk+1\lceil\frac{\lceil \frac{n}{k}\rceil}{m-\lceil \frac{n}{k}\rceil+1}\rceil
CPP
void solve() {
    int n, m, k;
    cin >> n >> m >> k;
    cout << m / (m - (k + n - 1) / n + 1) << "\n";
}

评论

1 条评论,欢迎与作者交流。

正在加载评论...