题目描述
1 | 问是否可以将一个仅由0~9组成的字符串划分成两个或两个以上部分,使得每一部分的数字总和相等。 |
输入
输入文件名为 divide.in
1 | 多组数据,第一行一个数n,表示数据组数 |
输出
输出文件名为divide.out
输出n行,每行为 ’YES’ 或者 ’NO’ ,表示是否存在题目要求的划分方案。
样例输入
1 | 3 |
样例输出
1 | NO |
提示
【数据说明】
对于 $50\%$ 的数据, $2 \le Length \le 100$
对于 $100\%$ 的数据, $1 \le n \le 5 , 2 \le Length \le 10^5$
啊,这个题,我一直以为挺难的,是个DP,结果后来发现枚举就行…..当时心里那个$mmp$
枚举就简单了啊
我是枚举分成多少段,然后在原数列中去 $check$ 是否可行,至于每一段的和,直接用总和作除法就行了
当然,如果说根本无法分成当前枚举到的段数,那么直接 $continue$
否则就一直凑就行了,每一段的和我是维护前缀和然后 $\Theta(1)$ 求的,这个题总体比较简单,毕竟是 CF Div2 的 C题改过来的,也不是很难
至于代码…..如下吧$:$
1 | #include <iostream> |