news 2026/6/18 23:05:55

【牛客练习赛 92】B 题题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【牛客练习赛 92】B 题题解

题目链接

题目大意

给定一个长度为n nn的数组a aa和一个正整数k kk,要求将数组a aa划分为k kk个互不相交的集合,且每个集合的元素和都不为0 00

请构造满足条件的一种划分方案,如若不行输出NO \text{NO}NO

数据范围

Solution

首先可以把所有0 00都放到第1 11个集合里,剩下的数再想办法加入这k kk个集合中的一个。

k = 1 k = 1k=1,只能是∑ i = 1 n a i ≠ 0 \sum\limits_{i = 1}^{n}a_i \neq 0i=1nai=0才能满足条件。

k > 1 k > 1k>1,那么考虑将数组a aa排序(除去0 00之后),若∣ a ∣ < k |a| < ka<k则无解。否则把前k − 1 k - 1k1个数按序加入前k − 1 k - 1k1个集合,最后一个集合加入a aa的末尾元素(即最大数)。

最后对于a k , a k + 1 , ⋯ , a ∣ a ∣ − 1 a_k, a_{k + 1}, \cdots, a_{|a| - 1}ak,ak+1,,aa1,如果是负数,就加入第1 11个集合,否则加入第k kk个集合。

时间复杂度O ( n log ⁡ n ) O(n\log n)O(nlogn)

C++ Code

#include<bits/stdc++.h>usingi64=longlong;intmain(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);intn,k;std::cin>>n>>k;std::vector<int>a(n);for(auto&x:a){std::cin>>x;}intzer=0;std::vector<int>b;b.reserve(n);for(intx:a){if(x!=0){b.push_back(x);}else{zer++;}}a=std::move(b);std::ranges::sort(a);if(a.size()<k){std::cout<<"NO\n";return0;}std::vector<std::vector<int>>ans(k);ans[0]=std::vector(zer,0);autoprint=[&](){std::cout<<"YES\n";for(constauto&v:ans){std::cout<<v.size()<<" ";for(inti=0;i<v.size();i++){std::cout<<v[i]<<" \n"[i==v.size()-1];}assert(std::reduce(v.begin(),v.end(),0LL)!=0);}};if(k==1){ans[0]=a;if(std::reduce(a.begin(),a.end(),0LL)!=0){print();}else{std::cout<<"NO\n";}return0;}for(inti=0;i<k-1;i++){ans[i].push_back({a[i]});}ans.back().push_back(a.back());for(inti=k-1;i<a.size()-1;i++){if(a[i]<0){ans[0].push_back(a[i]);}else{ans.back().push_back(a[i]);}}print();return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/18 17:17:07

11、进程、程序与进程间通信详解

进程、程序与进程间通信详解 1. 共享文本段 在大多数系统中,链接编辑器负责构建共享文本段。它会对用户程序的代码和数据部分进行不同程度的重定位,以便为它们应用不同的访问权限。通常,文本段从虚拟地址 0 开始,而数据段则从以下位置开始: (textsize + SEGSIZE - 1) …

作者头像 李华
网站建设 2026/6/16 10:24:47

涛思数据库:DB error: some vnode/qnode/mnode(s) out of service (10.703928s)

涛思库异常&#xff1a;DB error: some vnode/qnode/mnode(s) out of service (10.703928s)妈的&#xff0c;劳资要崩溃了&#xff0c;就这个逼错误&#xff0c;目前我唯一找到的解决办法是重装数据库&#xff0c;什么删库改配置&#xff0c;改各种东西都没什么屌用&#xff0c…

作者头像 李华
网站建设 2026/6/17 5:46:43

基于 NetFlow / sFlow 的根因定位模型:从流量异常到可解释因果结论

基于 NetFlow / sFlow 的根因定位模型&#xff1a;从流量异常到可解释因果结论引言&#xff1a;告别“盲人摸象”的网络运维困境想象一个典型的周一上午10点&#xff0c;核心业务系统突然卡顿&#xff0c;用户投诉电话被打爆。应用运维团队赶紧检查&#xff1a;“数据库响应时间…

作者头像 李华
网站建设 2026/6/15 2:30:38

软件测试面试题总结(超全的)

前面看到了一些面试题&#xff0c;总感觉会用得到&#xff0c;但是看一遍又记不住&#xff0c;所以我把面试题都整合在一起&#xff0c;都是来自各路大佬的分享&#xff0c;为了方便以后自己需要的时候刷一刷&#xff0c;不用再到处找题&#xff0c;今天把自己整理的这些面试题…

作者头像 李华
网站建设 2026/6/18 0:33:07

7步重构:打造高可维护深度学习框架的模块化实践

7步重构&#xff1a;打造高可维护深度学习框架的模块化实践 【免费下载链接】segmentation_models.pytorch Segmentation models with pretrained backbones. PyTorch. 项目地址: https://gitcode.com/gh_mirrors/se/segmentation_models.pytorch 你是否经历过这样的困境…

作者头像 李华
网站建设 2026/6/18 9:16:52

GitNext:OpenHarmony系统上的终极Git客户端完全指南

GitNext&#xff1a;OpenHarmony系统上的终极Git客户端完全指南 【免费下载链接】GitNext 基于可以运行在OpenHarmony的git&#xff0c;提供git客户端操作能力 项目地址: https://gitcode.com/OpenHarmonyPCDeveloper/GitNext 在当今开源开发浪潮中&#xff0c;版本控制…

作者头像 李华