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

分糖果——牛客

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

幼儿园准备了nnn包糖果,每包糖果里有111、222或333颗美味的糖果。现在需要将这些这些糖果平分给两个表现优异的小朋友以作奖励,为了公平公正,需要确保两位小朋友分得的糖果颗数相等,且每一包糖果都需要分给正好一位小朋友。幼儿园园长委托你帮忙判断下:是否存在可行的分配方法?

输入描述:

输入共两行。
第一行一个整数n(1≤n≤2×105)表示糖果的包数。
第二行n个整数,第i个整数ai(1≤ai≤3)表示第i包中糖果的数量。

输出描述:

如果存在可行的分配方案,则输出"YES";否则输出"NO"。

示例1

输入

5
1 3 3 2 1

输出

复制YES

YES

示例2

输入

4
3 1 3 3

输出

复制NO

NO

思路:

先看我一开始最先想到的代码

#include <iostream>
using namespace std;
int cnt[4];
int main() {int n;cin >> n;int a[n];for(int i = 0; i < n; i ++) {cin >> a[i];cnt[a[i]] ++;}cnt[3] %= 2;if(cnt[3] == 1) {if(cnt[2] > 0 && cnt[1] > 0) {cnt[3] = 0;cnt[2] --;cnt[1] --;}if(cnt[3] == 1 && cnt[1] >= 3) {cnt[3] = 0;cnt[1] -= 3;}}if(cnt[3] != 0) {cout << "NO";return 0;}cnt[2] %= 2;if(cnt[2] == 1) {if(cnt[1] >= 2) {cnt[2] = 0;cnt[1] -= 2;}}if(cnt[2] != 0) {cout << "NO";return 0;}cnt[1] %= 2;if(cnt[1] == 1) {cout << "NO";return 0;}cout << "YES";return 0;
}

这样写并不能够AC,我认为原因就是没有考虑全部的情况。糖果数目一共三种,1,2,3。而解题的思路在于“抵消”,3和3可以抵消,3和2+1可以抵消,3和1+1+1可以抵消。2和1+1可以抵消。但同样的2+2+2和3+3也可以抵消。比如输入【2,2,2,3,3】时代码就会计算错误,所以需要把这个情况排除掉。

#include <iostream>
using namespace std;
int cnt[4];
int main() {int n;cin >> n;int a[n];for(int i = 0; i < n; i ++) {cin >> a[i];cnt[a[i]] ++;}while(cnt[2] >= 3 && cnt[3] >= 2 && cnt[2] > cnt[3]) {cnt[2] -= 3;cnt[3] -= 2;}cnt[3] %= 2;if(cnt[3] == 1) {if(cnt[2] > 0 && cnt[1] > 0) {cnt[3] = 0;cnt[2] --;cnt[1] --;}if(cnt[3] == 1 && cnt[1] >= 3) {cnt[3] = 0;cnt[1] -= 3;}}if(cnt[3] != 0) {cout << "NO";return 0;}cnt[2] %= 2;if(cnt[2] == 1) {if(cnt[1] >= 2) {cnt[2] = 0;cnt[1] -= 2;}}if(cnt[2] != 0) {cout << "NO";return 0;}cnt[1] %= 2;if(cnt[1] == 1) {cout << "NO";return 0;}cout << "YES";return 0;
}

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

相关文章:

  • 0基础可以考MySQL OCP么?备考时间需要多久?
  • java Nacos
  • Java基础系列-HashMap源码解析1-BST树
  • 深入剖析PHP反弹Shell:OSCP场景下的实现、原理与优化
  • 深入理解IP地址、端口号、字节序及其应用
  • 困局与破局:当传统校园能源管理遭遇“散沙式“能耗困局
  • Python图形界面编程(一)
  • HTML表格居中显示、在表格中插入音频文件、表格分行列显示
  • SpringBoot入门实战(第七篇:项目接口-商品管理)
  • 考研单词笔记 2025.04.23
  • es的range失效
  • 如何在Spring Boot中实现热加载以避免重启服务器
  • 数据治理体系的“三驾马车”:质量、安全与价值挖掘
  • 武汉昊衡科技OLI光纤微裂纹检测仪:高密度光器件的精准守护者
  • JavaWeb学习打卡-Day2-Mysql索引、事务
  • 浅试MCP:spring ai使用mcp调用deepseek的API接口
  • IDEA中Quarkus框架(3.13版本)容器编排、压测与调优、注意事项等
  • element-ui transfer 组件源码分享
  • 永磁同步电机控制算法--零d轴电流IF控制
  • 幂等性设计保障系统可靠性和数据一致性
  • 顺序表专题
  • 结合地理数据处理
  • 数据流量采集系统的实现
  • 为什么Spring中@Bean注解默认创建单例Bean
  • TORL:解锁大模型推理新境界,强化学习与工具融合的创新变革
  • 将 MySQL 8 主从复制延迟优化到极致
  • cgdb的基础使用教程
  • 制造业数字化转型标杆解析:从冀凯机电到君乐宝的启示
  • Java类加载器(ClassLoader)及其相关类 简介
  • 【C++】AVL树