当前位置: 首页 > news >正文

【牛客练习赛 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;}
http://www.cnnetsun.cn/news/41536.html

相关文章:

  • React JSON Schema Form终极指南:3步构建专业表单应用
  • 低价游陷阱专坑老年人?
  • Hazel引擎揭秘:如何用开源技术打造高性能2D/3D游戏开发平台
  • Spark-TTS方言合成实战:零样本实现普通话到多地域口音转换
  • cjdns网络服务发现机制深度解密:构建加密网络中的智能寻址系统
  • 【无标题】激活函数应该具有哪些特征
  • 深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化
  • 5分钟上手shUnit2:Shell脚本单元测试终极指南
  • uni-app新手避坑指南:从零开始搭建跨平台应用
  • 深入浅出 ES Module
  • wangEditor处理ppt动画效果转网页兼容
  • 深度残差网络在智能垃圾分类中的技术实践与性能分析
  • wangEditor导入MathType公式保留矢量格式
  • Node.js BFF层实战:对接天远综合多头借贷/逾期/欺诈聚合接口
  • Day11 >> 150、逆波兰表达式求值 + 239、滑动窗口最大值 + 347、前K个高频元素
  • System Informer 终极指南:从零掌握Windows系统监控神器
  • 20、集群节点与实例的添加和删除操作指南
  • 5大React动画库生态对比:从入门到精通的全栈解决方案
  • 2、Oracle Real Application Clusters (RAC):特性、成本与效益解析
  • Phi-2模型完全攻略:让27亿参数的小巨人成为你的AI助手
  • 30分钟掌握Tauri:用Rust构建你的第一个桌面应用
  • WeChatTweak-macOS开源项目深度参与指南
  • NootRX:让AMD RDNA 2显卡在macOS上完美运行
  • DBeaver崩溃救星:3步紧急恢复SQL脚本的完整方案
  • 项目效率翻倍,做对了什么?
  • 少儿编程考试路径规划:考级与竞赛时间如何平衡?
  • 火星漫游车Rocker-Bogie悬挂系统核心技术深度解析与实战指南
  • ImmortalWrt网络流量监控完全指南:快速排查网络异常与优化带宽分配
  • 青少年编程考级的三大核心价值:目标建立与能力提升
  • 大疆(DJI)前端开发岗位面试经验总结与备战指南