当前位置: 首页 > 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;
}

相关文章:

  • Ragflow、Dify、FastGPT、COZE核心差异对比与Ragflow的深度文档理解能力​​和​​全流程优化设计
  • 文件系统常见函数
  • 2022 年 9 月青少年软编等考 C 语言七级真题解析
  • 根据定义给出json_schema:
  • 【Python】每隔一段时间自动清除网站上cookies的方法
  • 使用 Streamlit 打造一个简单的照片墙应用
  • 极狐GitLab 的压缩和合并是什么?
  • sglang部署DeepSeek-R1-Distill-Qwen-7B
  • fpga系列 HDL:跨时钟域同步 脉冲展宽同步 Pulse Synchronization
  • 四神-华夏大地的守护神
  • 今天开始着手准备PAT(乙级)
  • 第一节:核心概念高频题-Vue3响应式原理与Vue2的区别
  • MYSQL之表的操作
  • 在面试中被问到spring是什么?
  • Kubernetes Multus CNI详细剖析
  • 渗透测试中的信息收集:从入门到精通
  • 爬虫学习总结
  • 滑动窗口算法(一)
  • Transformer起源-Attention Is All You Need
  • Sql文件处理SQLDumpSplitter
  • 央行上海总部答澎湃:上海辖内金融机构已审批通过股票回购增持贷款项目117个
  • 印控克什米尔发生恐袭事件,外交部:中方反对一切形式的恐怖主义
  • 翁东华卸任文和友小龙虾公司董事,此前抢镜“甲亢哥”惹争议
  • 委托第三方可一次性补缴十多万元的多年社保?广州多人涉嫌被骗后报警
  • 人民日报刊文:美国滥施关税及中国反制措施的法理视角透析
  • “HPV男女共防计划”北半马主题活动新闻发布会在京举办