2018年ACM-ICPC青岛区域赛 C题 Flippy Sequence

题目连接-浙大oj
题目Sample Input
3
1
1
0
2
00
11
5
01010
00111
Sample Output
0
2
6
Hint
For the second sample test case, there are two valid operation pairs: (1, 1, 2, 2) and (2, 2, 1, 1).

For the third sample test case, there are six valid operation pairs: (2, 3, 5, 5), (5, 5, 2, 3), (2, 5, 4, 4), (4, 4, 2, 5), (2, 4, 4, 5) and (4, 5, 2, 4).
题意:
T 组测试用例
字符串长度 N
两个二进制01字符串A、B
分别对AB字符串进行一次反转操作(0变1,1变0,可反转一段区间)
通过两次反转操作,使得AB相等
问有多少种方法

例:01010 和 00111
方法1: (2, 3, 5, 5)
A区间 [2,3] 反转 => 00110
B区间 [5,5] 反转 => 00110
思路:
分类讨论
把字符串分为相同段和不同段

  1. 无不同段(全相同): 两次操作需反转同一区间 方法数:n*(n+1)/2
  2. 一段不同:将不同段分割进行两次反转操作,或一次反转操作覆盖不同段和一段相同段,第二次操作再将相同段反转复原,两次区间操作交换顺序,方法数x2:(n-1)*2
  3. 两段不同:两段分别操作,或一次操作覆盖两段不同和两段中间的相同段,第二次操作将中间段复原,变更顺序x2 方法数固定为6
  4. 多与两段:无法在两次操作完成 方法数:0
#include 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值