ZOJ 4060 - Flippy Sequence - [思维题][2018 ACM-ICPC Asia Qingdao Regional Problem C]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4060


题意:
给出两个 $0,1$ 字符串 $S,T$,现在你有两次对 $S$ 作区间翻转($0 \rightarrow 1,1 \rightarrow 0$)的操作,
用四元组 $(l_1,r_1,l_2,r_2)$ 表示,代表第一次翻转区间 $[l_1,r_1]$,第二次翻转区间 $[l_2,r_2]$。
问你有多少个四元组可以使得 $S=T$。
题解:
把 $S$ 尽可能少地分割成若干个子串。若某一子串和相应区间的 $T$ 一样,记作 $B$;反之,则记作 $A$。
因此若 $A$ 的数量大于两个,就不可能通过区间翻转两次使得 $S=T$,因此 $A$ 最多是两个。
分类讨论:
- $A$ 有 $0$ 个,即整个$S$ 可表示为 $B$,任意翻转两次相同区间 $[i,j]$ 即可。整个 $1 \sim |S|$ 可以有 $|S| + (|S|-1) + \cdots + 1 = \frac{|S|(|S|+1)}{2}$。
- $A$ 有 $1$ 个,即$S$ 可表示为 $(B)A(B)$。若两边都没有 $B$,则可以将 $A$ 分成两个部分 $[l,m],[m+1,r]$ 分别翻转,考虑 $m$ 取值的可能有 $2 \times (|A|-1)$ 种;若两侧都有 $B$,即 $BAB$,则应在前面那种基础上,再算上,在某一侧的 $B$ 中挑选一个左端点,再以 $A$ 的右端点为区间右端点,这样一来有 $2 \times |B|$ 种选择。两者加起来即 $2 \times (|A|-1+|B|) = 2 \times (|S|-1)$。
- $A$ 有 $2$ 个,即$S$ 可表示为 $(B)ABA(B)$。只能有三种翻法:①ABA,B;②AB,BA;③A,A。因此即 $2 \times 3 = 6$ 种可能性。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int n;
string s,t;
int main()
{
ios::sync_with_stdio();
cin.tie();
int T;
cin>>T;
while(T--)
{
cin>>n>>s>>t;
int cnt=;
for(int i=;i<n;i++) {
if((i== || s[i-]==t[i-]) && s[i]!=t[i]) cnt++;
}
if(cnt>) cout<<"0\n";
else if(cnt==) cout<<"6\n";
else if(cnt==) cout<<(*n-)<<'\n';
else cout<<((long long)n*(n+)/)<<'\n';
}
}
ZOJ 4060 - Flippy Sequence - [思维题][2018 ACM-ICPC Asia Qingdao Regional Problem C]的更多相关文章
- ZOJ 4070 - Function and Function - [签到题][2018 ACM-ICPC Asia Qingdao Regional Problem M]
题目链接:http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5840 Time Limit: 1 Second Mem ...
- ZOJ 4062 - Plants vs. Zombies - [二分+贪心][2018 ACM-ICPC Asia Qingdao Regional Problem E]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4062 题意: 现在在一条 $x$ 轴上玩植物大战僵尸,有 $n$ ...
- ZOJ 4067 - Books - [贪心][2018 ACM-ICPC Asia Qingdao Regional Problem J]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4067 题意: 给出 $n$ 本书(编号 $1 \sim n$), ...
- ZOJ 4063 - Tournament - [递归][2018 ACM-ICPC Asia Qingdao Regional Problem F]
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4063 Input Output Sample Input 2 3 ...
- The 2018 ACM-ICPC Asia Qingdao Regional Contest(部分题解)
摘要: 本文是The 2018 ACM-ICPC Asia Qingdao Regional Contest(青岛现场赛)的部分解题报告,给出了出题率较高的几道题的题解,希望熟悉区域赛的题型,进而对其 ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...
随机推荐
- 每天一个linux命令(7):mv
1.命令简介 mv(Move file)将源文件重命名为目标文件,或将源文件移动至指定目录.. 2.用法 mv [选项]... [-T] 源文件 目标文件 或:mv [选项]... 源文件... 目录 ...
- SpringBoot中自定义properties文件配置参数并带有输入提示
1. 创建配置类 在项目中创建一个参数映射类如下 @ConfigurationProperties(prefix = "user.info") public class MyPro ...
- 开源一个CSV解析器(附设计过程 )
在ExcelReport支持csv的开发过程中,需要一个NETStandard的csv解析器.在nuget上找了几个试用,但都不太适合. 于是,便有了:AxinLib.IO.CSV. 先看看怎么用: ...
- 云服务jdk 升级为 OpenJDK11
由于oracle是个碧池,大家都懂,今年来,jdk版本更新的越来越频繁,所以目前商业版本需要收费了 每个企业都要考虑这样的问题,所以嘛,新项目试水肯定是要的,用openJDK11吧, https:// ...
- 【iCore4 双核心板_uC/OS-II】例程七:互斥信号量
一.实验说明: 在介绍互斥信号量前,我们先简单地描述一下什么是优先级反转.使用实时内核心,优先级反转问题是实时系统中出现得最多的问题.假设任务H优先级高于任务M,任务M优先级高于任务L.任务H和任务M ...
- go语言的排序和去重
go语言的排序: https://blog.csdn.net/u010983881/article/details/52460998 go语言去重: https://blog.csdn.net/qq_ ...
- c# async和await 用法(阻塞与不阻塞)
void PagePaint() { Console.WriteLine("Paint Start"); Paint(); Console.WriteLine("Pain ...
- 用WordPress建立专业网站教程 (一步步建站, 一步也不少)
最新美国域名中心US Domain Center: http://www.usdomaincenter.com/ 建站教程 (10分钟上线, 无需备案): https://www.qiyewp.com ...
- How to secure the ASP.NET_SessionId cookie? 设置ASP.NET_SessionId Secure=true
How to secure the ASP.NET_SessionId cookie? To add the ; secure suffix to the Set-Cookie http header ...
- python 记录linux网速到文件。
import timefrom app.utils_ydf import LogManager logger = LogManager('network_monitor').get_logger_an ...