问题 6587 --龙哥的1与2数列

6587: 龙哥的1与2数列★★★★

时间限制: 1 Sec  内存限制: 128 MB
提交: 6  解决: 2
[提交][状态][命题人:]

题目描述

给定一个长度为n序列a,其中所有元素都为1或2,要求进行q 次操作,每次操作为以下之一:
  • 1 s:询问是否存在一个a的子串满足其中元素总和为s;
  • 2 i v:将ai改为v(v∈{1,2})。

输入

第一整数为T,表示有T (1≤T≤10000)组测试样例。
每组测试数据的第一行包含2个正整数n与q(1≤n,q≤1e5),分别表示数列的长度与操作次数。
第二行为n个整数a1,a2,...,an。其中ai为1或2。
接下来q行,每行的第1个数op为1或2。
  •  若op=1,则后面跟一个s(1≤s≤2n).
  •  若op=2,则后面跟2个整数i或v (1≤i≤n, v是 1 或 2).
测试数据保证所有的n与q之和不超过1e5。

输出

对于每个op=1,如果存在子序列和为s,则输出YES,否则输出NO。
样例输入
Copy
2
5 5
2 1 2 1 2
1 5
1 6
1 7
2 4 2
1 7
3 2
2 2 2
1 6
1 5
样例输出
Copy
YES
YES
NO
YES
YES
NO

提示

第1个询问输出YES,因为a1+a2+a3=2+1+2=5;
第2个询问输出YES,因为a1+a2+a3+a4=2+1+2+1=6;
第3个询问输出NO,因为不能发现任何子序列之和为7;
第4个操作后,序列a变为 [2,1,2,2,2];
第5个询问输出YES,因为a2+a3+a4+a5=1+2+2+2=7。

来源

 

[提交][状态]