3664. 数组补全
2021/6/12 10:51:51
本文主要是介绍3664. 数组补全,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
3664. 数组补全
题目链接
//我的dd代码 #include <bits/stdc++.h> using namespace std; int n, k, p, x, y; int a[1100]; int sum; int k1, k2; int main() { cin >> n >> k >> p >> x >> y; for (int i = 0; i < k; ++i) { cin >> a[i]; sum += a[i]; if (a[i] >= y) k1++; else k2++; } for (int i = k; i < n; ++i) { if (k1 <= k2) { sum += y; a[i] = y; k1++; } else { sum += 1; a[i] = 1; k2++; } } if (sum <= x && k1 > k2) { for (int i = k; i < n; ++i) { cout << a[i] << " "; } cout << endl; } else cout << "-1" << endl; return 0; }
//y总的dl代码 #include <bits/stdc++.h> using namespace std; int main() { int n, k, p, x, y; cin >> n >> k >> p >> x >> y; int sum = 0, lt = 0, ge = 0; for (int i = 0; i < k;++i){ int t; cin >> t; sum += t; if(t<y) lt++; else ge++; } int l = n / 2, r = n / 2 + 1; if(lt>1||ge>r) puts("-1"); else{ sum += (l - lt) * 1 + (r - ge) * y; if(sum>x) puts("-1"); else{ for (int i = 0; i < 1 - lt;++i) cout << 1 << ' '; for (int i = 0; i < r - ge;++i) cout << y << ' '; } } return 0; }
题解:为了维持中位数是大于等于y而且总和不大于x,能加进来的数要么就是1要么就是y(这样可以保证x最小),所以只需要比较大于等于y的个数和小于y的个数就可以了
这篇关于3664. 数组补全的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现