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

Codeforces 无路可走

题目来源:

问题 - 2130B - Codeforces

这道题要求无论如何按照题目要求走都不能凑够s的数组,那么就分为三种情况:

1 当数组所有元素加起来大于s时

根据题目要求必须从下标1走到下标n可以得知,此时是绝对不能满足题意的,那么直接输出原数组即可

2 当数组所有元素加起来等于s时

只需要完整的走一遍就可以满足题目要求,此时不管如何排列都是不能阻止爱丽丝的,那么此时输出-1

3 当数组元素加起来小于s时

这个时候又分为两个情况

(1)当数组所有元素加起来只比s小1时,再回去看题目可以发现,数组中至少有1个0,1个1,1个2,我们只需要保证最后两个数字排列不是1和0即可,那么就采取最朴素的方式直接按顺序,先全部输出0,再全部输出2,最后全部输出。此时不管爱丽丝怎么走都会凑出比s大的数。

(2)当数组所有元素加起来比s至少小2时,那么这个时候,不管是怎么排列都无法阻止爱丽丝,由于题目中要求至少包含一个0,那么爱丽丝就可以采取0和旁边不为0的数字进行增加,直到凑够所有元素比s小的数值,再走到下标为n的数组即为完成

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;cin>>t;while(t--){int n,s,sum=0;cin>>n>>s;vector<int>arr(n);int add[3];memset(add,0,sizeof(add));for(int i=0;i<n;i++){cin>>arr[i];if(arr[i]==0){add[0]++;}if(arr[i]==1){add[1]++;}if(arr[i]==2){add[2]++;}sum=sum+arr[i];}if(sum>s){for(int i=0;i<n;i++){cout<<arr[i]<<" ";}}else if(sum==s){cout<<"-1";}else{if(sum+2<=s){cout<<"-1";}else{for(int i=0;i<add[0];i++){cout<<"0 ";}for(int i=0;i<add[2];i++){cout<<"2 ";}for(int i=0;i<add[1];i++){cout<<"1 ";}}}cout<<endl;}return 0;} 

http://www.xdnf.cn/news/17816.html

相关文章:

  • Git代码版本管理
  • 一文打通 AI 知识脉络:大语言模型等关键内容详解
  • Python基础-数据结构
  • 【部署K8S集群】 1、安装前环境准备配置
  • 重塑工业设备制造格局:明远智睿 T113-i 的破局之道
  • 基于多模型的零售销售预测实战指南
  • Spring IOC容器在Web环境中的启动奥秘:深入源码解析
  • 从 LLM 到自主 Agent:OpenCSG 打造开源 AgenticOps 生态
  • 云原生俱乐部-k8s知识点归纳(4)
  • EhViewer安卓ios全版本类下载安装工具的完整路径解析
  • OpenTelemetry WebSocket 监控终极方案:打通最后一公里
  • TCP传输层协议(4)
  • 攻防世界—fakebook(两种方法)
  • Java集合Map与Stream流:Map实现类特点、遍历方式、Stream流操作及Collections工具类方法
  • 集合车位租售、充电桩共享、二手市场、便民服务的家政服务平台,带源码
  • STM32的PWM
  • Linux网络基础概念
  • NAT 和 PNAT
  • AI提高投放效率的核心策略
  • 使用原生css实现word目录样式,标题后面的...动态长度并始终在标题后方(生成点线)
  • JUC LongAdder并发计数器设计
  • 优先级反转问题
  • 基于阿里云音频识别模型的网页语音识别系统实现
  • Flink中基于时间的合流--双流联结(join)
  • 【Doris】-工具SQLConverter
  • Stagehand深度解析:从开源自动化工具到企业级RPA平台的演进之路
  • VisualStudio2022调试Unity C#代码步骤
  • 第2篇_Go语言基础语法_变量常量与数据类型
  • Android项目中Ktor的引入与使用实践
  • 在 Linux 服务器搭建Coturn即ICE/TURN/STUN实现P2P(点对点)直连