Codeforces Round #700 (Div. 2)D1 - Painting the Array I
传送门
一、题意: 将数组a分为0和1两个部分,分类完后需要分别将相邻的相同元素合并,合并后统计个数相加,要求总和达到最大值。
二、思路: 可以开两个栈s1,s2,正常分类方法就是s1放一个然后s2放一个,如果遇到跟栈顶相同的就要特判然后放到另外一个栈中。
但是还有一种情况要注意:可能a[i]与s1的栈顶不同但是a[i+1],a[i+2]与s1的栈顶相同,但是根据上面的轮换规则该轮应将a[i]放在s2中,如果这样做可能会导致a[i+1]与s1栈顶合并,就会导致种类减少,所以需要特判。
cpp代码
#incl
原创
2021-02-08 12:06:31 ·
197 阅读 ·
0 评论