首页 > 试题广场 >

元素方碑

[编程题]元素方碑
  • 热度指数:6019 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解


\hspace{15pt}菲谢尔在稻妻冒险途中遇到一排神奇的元素方碑,其中第 i 个方碑初始时的能量为 a_i。只要她对第 i 块方碑施放雷元素,就会发生能量转移:

\hspace{23pt}\bullet\,正面轰击:雷元素从第 i-1 块流向第 i+1 块,使 a_{i-1}1a_{i+1}1
\hspace{23pt}\bullet\,反面轰击:雷元素从第 i+1 块流向第 i-1 块,使 a_{i+1}1a_{i-1}1

\hspace{15pt}操作只能在 2\leqq i\leqq n-1 的方碑上进行,且任何时刻所有方碑能量 a_{i} 必须保持非负。
\hspace{15pt}当所有方碑的能量 a_1,a_2,\dots,a_n 全部相等时,菲谢尔即可开启隐藏宝箱。
\hspace{15pt}菲谢尔可以无限次进行操作。请判断,她是否一定能够让所有方碑能量相等。

输入描述:
\hspace{15pt}第一行输入一个整数 t\left(1\leqq t\leqq 10^4\right)——测试用例组数。 
\hspace{15pt}对于每组测试数据:
\hspace{23pt}\bullet\,第一行输入一个整数 n\left(1\leqq n\leqq 2\times10^5\right)——方碑数量;
\hspace{23pt}\bullet\,第二行输入 n 个整数 a_1,a_2,\dots,a_n\left(1\leqq a_i\leqq 10^9\right)——初始能量。

\hspace{15pt}除此之外,保证单个测试文件中全部测试用例的 n 之和不超过 2\times10^5


输出描述:
\hspace{15pt}对每组测试数据,在一行上输出 \texttt{YES}\texttt{NO},表示能否通过若干次操作使所有方碑能量相等。
示例1

输入

8
3
3 2 1
3
1 1 3
4
1 2 5 4
4
1 6 6 1
5
6 2 1 4 2
4
1 4 2 1
5
3 1 2 1 3
3
2 4 2

输出

YES
NO
YES
NO
YES
NO
NO
NO

说明

\hspace{15pt}在第一组样例中: 
\hspace{23pt}\bullet\,对于数组 \{3,2,1\},先对下标 i=2 正面轰击一次,得到 \{2,2,2\},能量已全部相等;
\hspace{23pt}\bullet\,对于数组 \{1,2,5,4\},可依次正面轰击 i=3,反面轰击 i=2,最终得到 \{3,3,3,3\}
\hspace{23pt}\bullet\,对于数组 \{2,4,2\},无论如何操作,总能量 \sum a_i 不是 n 的倍数,因此无法全等,答案为 \texttt{NO}

这道题你会答吗?花几分钟告诉大家答案吧!