[CP / Codeforces] B. Phoenix and Beauty (Div. 2) - 1400*

B. Phoenix and Beauty

进度

  • 24:??.?? - WA on test 1
  • 27:25.13 - AC

分析

根据题目要求,得知我们将要构造的数组中具有长度为 k 的循环节。显然,原数组中不相等的元素的值的数量不能超过 k,否则这样的循环节是不存在的——总会出现不属于循环节的 “落单” 元素。

在满足上述条件后,我们就可以着手构造题目要求的数组了。最简单的做法是使循环节至少包含原数组中出现的所有值互不相同的元素各一个,如果此时循环节的长度还没有达到 k,则任意选取原数组中的元素补齐剩余的长度。这样做所得到的最大数组长度为 kn,因为题目限制 1kn100,所以 kn104,满足题目要求。

第一次 WA 是因为忘记补齐剩余的长度了。

我怎么感觉这道 1400* 还不如之前做的 1000*……

代码

void solve() {
int n = 0, k = 0;
std::cin >> n >> k;
std::set<int> s;
std::vector<int> v(n);
for (int i = 0; i < n; i++) {
std::cin >> v[i];
s.insert(v[i]);
}
if (s.size() > k) {
std::cout << "-1\n";
} else {
std::cout << n * k << '\n';
for (int i = 0; i < n; i++) {
for (auto e : s) {
std::cout << e << ' ';
}
for (int j = 0; j < k - s.size(); j++) {
std::cout << *s.cbegin() << ' ';
}
}
std::cout << '\n';
}
}
posted @   ZXPrism  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示