「DAOI R1」Magic

devtools/2024/9/25 0:26:33/

「DAOI R1」Magic

题目背景

-1,-1,+2

题目描述

乔木 来到了大魔王的面前,他决定使用魔法击败魔王。

给定一个整数 n n n,表示有 n n n 个魔法阵,在每个魔法阵上都存在着一定的魔力值 a i a_i ai

你每次可以选择三个魔法阵 i , j , k ( i , j , k i,j,k\;(i,j,k i,j,k(i,j,k 互不相同且 a i > 0 a_i>0 ai>0 a j > 0 ) a_j>0) aj>0),然后 乔木 将会让第 i i i 个魔法阵和第 j j j 个魔法阵上的魔力值 a i , a j a_i,a_j ai,aj 分别减 1 1 1,并让第 k k k 个魔法阵上的魔力值 a k a_k ak 2 2 2,我们将这称之为一次操作。

乔木 想要将所有的魔力汇聚到一起以发挥最大的威力。他想知道在经过若干次操作后,能否让其中 n − 1 n-1 n1 个魔法阵上的魔力值为 0 0 0,并使汇聚的那一个魔法阵的魔力值为原魔法阵的所有魔力值之和。

输入格式

本题包含多组数据。

一行输入一个数 T T T,表示数据组数。

接下来对于每组数据,先输入一个正整数 n n n,然后依次输入 n n n 个整数,第 i i i 个整数代表 a i a_i ai

输出格式

对于每组数据输出一行,若可以实现,则输出 YES,否则输出 NO

样例 #1

样例输入 #1

2
4
2 0 2 2
3
5 0 7

样例输出 #1

YES
NO

提示

样例解释

  • 对于第一组数据,可以将 a 1 a_1 a1 a 3 a_3 a3 a 4 a_4 a4 进行两次操作。
  • 对于第二组数据,可以证明不行。

数据范围

  • 对于 5 % 5\% 5% 的数据: 1 ≤ n ≤ 2 1\le n\le2 1n2 0 ≤ a i ≤ 1 0 3 0\le a_i\le10^3 0ai103
  • 对于 20 % 20\% 20% 的数据: 1 ≤ n ≤ 10 1\le n\le10 1n10 0 ≤ a i ≤ 1 0 3 0\le a_i\le10^3 0ai103
  • 对于 100 % 100\% 100% 的数据: 1 ≤ ∑ n ≤ 2 × 1 0 6 1\le \sum{n}\le2\times10^{6} 1n2×106 0 ≤ a i ≤ 1 0 9 0\le a_i\le10^{9} 0ai109

对于所有数据,保证 1 ≤ T ≤ 100 1\le T\le100 1T100 ∑ i = 1 n a i ≥ 1 \sum\limits_{i=1}^{n} a_i \ge1 i=1nai1

#include<bits/stdc++.h>
#define maxn 100005
using namespace std;
int n,a[maxn];
int main() {int T;scanf("%d",&T);while(T--) {scanf("%d",&n);for(int i=1; i<=n; i++) scanf("%d",a+i);if(n==1) puts("YES");if(n==2) {if(a[1]==0 || a[2]==0) puts("YES");else puts("NO");}if(n==3) {sort(a+1,a+n+1);a[3]+=a[1]*2;a[2]-=a[1];a[1]=0;if(a[2]%3==0 || a[3]%3==0) puts("YES");else if((a[2]%3==1 && a[3]%3==1) || (a[3]%3==1 && a[2]%3==1)) puts("YES");else if((a[2]%3==2 && a[3]%3==2) || (a[3]%3==2 && a[2]%3==2)) puts("YES");else puts("NO");}if(n>=4) {int cnt0=0,cnt1=0,cnt2=0;for(int i=1; i<=n; i++) {if(a[i]==0) cnt0++;else if(a[i]==1) cnt1++;else if(a[i]==2) cnt2++;}if(cnt0==n-2 && cnt1==1 && cnt2==1) puts("NO");else puts("YES");}}getchar();getchar();return 0;
}

http://www.ppmy.cn/devtools/116731.html

相关文章

Maya---机械模型制作

材质效果&#xff08;4&#xff09;_哔哩哔哩_bilibili 三角面 四边面 多边面 *游戏允许出现三角面和四边面 游戏中一般是低模&#xff08;几千个面&#xff09; 动漫及影视是高模 机械由单独零件组合而成&#xff0c;需独立制作 低面模型到高面模型 卡线是为了将模型保…

Qt-拖放

概述 拖放提供了一种简单的可视化机制&#xff0c;用户可以使用它在应用程序之间和应用程序内部传输信息。拖放功能类似于剪贴板的剪切和粘贴机制。 本文档描述了基本的拖放机制&#xff0c;并概述了在自定义控件中启用它的方法。Qt的许多控件也支持拖放操作&#xff0c;如it…

element-ui多个消息提示只显示最后一个

在使用 Element UI 的 Message 消息提示时&#xff0c;默认情况下&#xff0c;如果你连续调用多个 Message 方法&#xff0c;它们会依次显示&#xff0c;直到用户关闭或它们自动消失。但是&#xff0c;如果你希望只保留最后一个消息提示&#xff0c;即每当新消息出现时&#xf…

算法【Java】—— 位运算

位运算总结 位运算的运算符&#xff1a;按位与&#xff08;&&#xff09;&#xff0c;按位或&#xff08;|&#xff09;&#xff0c;按位异或&#xff08;^&#xff09;&#xff0c;按位取反&#xff08;~&#xff09;&#xff0c;还有移位操作符 <<&#xff0c;>…

WEB攻防-JavaWweb项目JWT身份攻击组件安全访问控制

知识点&#xff1a; 1、JavaWeb常见安全及代码逻辑&#xff1b; 2、目录遍历&身份验证&逻辑&JWT&#xff1b; 3、访问控制&安全组件&越权&三方组件&#xff1b; 演示案例&#xff1a; JavaWeb-WebGoat8靶场搭建使用 安全问题-目录遍历&身份认…

Flink 中 Checkpoint 的底层原理和机制

Flink 的 Checkpoint 机制是 Apache Flink 在流式处理中的一个核心特性&#xff0c;保证了分布式数据流处理系统的 容错性。通过定期保存 状态快照&#xff08;checkpoint&#xff09;&#xff0c;即使在发生故障时&#xff0c;Flink 也可以恢复到之前的状态&#xff0c;确保处…

火车站高铁站站点时刻查询网站计算机毕设/动车站点时刻查询

创建一个关于火车站高铁站站点时刻查询的毕业设计项目&#xff0c;是一个非常实际且具有挑战性的任务。这样的项目不仅能帮助学生综合运用所学知识&#xff0c;还能够为用户提供便捷的服务。下面将详细说明项目的各个方面&#xff1a; 1. 需求分析 用户需求&am…

Python编码系列—Python适配器模式:无缝集成的桥梁

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…