专栏文章
题解:CF478B Random Teams
CF478B题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqqwpif
- 此快照首次捕获于
- 2025/12/04 09:16 3 个月前
- 此快照最后确认于
- 2025/12/04 09:16 3 个月前
我们先来看最小值。
有点类似于找次品一类问题的思想,让每一组人数尽可能平均,可以得到最小值。
然后再来看最大值。
手推几组数据可以发现,当某一组人数越多时答案会越大。所以我们可以把前 组的人数都设为 ,最后一组的人数设为 ,这样可以得到最大值。
AC Code
CPP#include <bits/stdc++.h>
using namespace std;
long long n, m;
long long f(long long x) {
return x * (x - 1) / 2;
}
int main() {
cin >> n >> m;
if (n < m) {
cout << 0 << " " << 0 << endl;
return 0;
}
long long k = n % m;
cout << k * f(n / m + 1) + (m - k) * f(n / m) << " " << f(n - m + 1) << endl;
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...