ZOJ4060 Flippy Sequence(思维题)
题目链接:传送门
题目大意:
两个长度为n的二进制串s,t,每次操作可以将s串的一段区间取反。求操作exactly twice后使得s=t的方法数。
思路:
连续的尽可能长的 si ≠ ti 的区间简称A,连续的尽可能长的 si = ti 的区间简称B。
则1-n可以划分为若干个AB交替出现,要求操作exactly twice后s=t,就是消去所有的A。
发现每次操作最多只能使得A的数量减少1个。
所以若对于给出的s,t:
① cnt(A) ≥ 3:
不能完成,方法数为0。
② cnt(A) = 2:
有2 × 3 = 6种:(下划线表示反转,顺序对调就翻一倍)
1)ABA + ABA
2)ABA + ABA
3)ABA + ABA
③ cnt(A) = 1:
只要第一次操作能使得A的数量还是1即可:
1)把A分两次翻转,有2 × (len(A)-1)种;
2)翻转B的一段+A,有2 × (N-len(A))种;
④ cnt(A) = 0:
此时整个1-n为B,任意取一段区间翻两次,有n × (n+1) / 2种。
代码:
#include <bits/stdc++.h> using namespace std;
typedef long long ll;
const int MAX_N = 1e6 + ; char s[MAX_N], t[MAX_N]; int main()
{
int T;
cin >> T;
while (T--) {
int N;
scanf("%d", &N);
scanf("%s%s", s+, t+);
int l, r, cntdif = ;
for (int i = ; i <= N; i++) {
if (s[i] != t[i]) {
cntdif++;
if (cntdif == )
break;
l = r = i;
while (i+ <= N && s[i+] != t[i+]) {
r++;
i++;
}
}
}
if (cntdif == ) {
puts("");
}
else if (cntdif == ) {
puts("");
}
else if (cntdif == ) {
int len = r-l+;
ll ans = ;
ans += (len-)*;
ans += (N-len)*;
printf("%lld\n", ans);
}
else if (cntdif == ) {
ll ans = 1LL * N * (N+)/;
printf("%lld\n", ans);
}
// puts("");
}
return ;
}
/*
10
1
1
0
2
00
11
5
01010
00111
3
111
111
7
1010101
1111111
*/
ZOJ4060 Flippy Sequence(思维题)的更多相关文章
- 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$,现在你有 ...
- HDU 5805 NanoApe Loves Sequence (思维题) BestCoder Round #86 1002
题目:传送门. 题意:题目说的是求期望,其实翻译过来意思就是:一个长度为 n 的数列(n>=3),按顺序删除其中每一个数,每次删除都是建立在最原始数列的基础上进行的,算出每次操作后得到的新数列的 ...
- CodeForces - 631C ——(思维题)
Each month Blake gets the report containing main economic indicators of the company "Blake Tech ...
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- CodeForces - 1102A(思维题)
https://vjudge.net/problem/2135388/origin Describe You are given an integer sequence 1,2,-,n. You ha ...
- ACM思维题训练 Section A
题目地址: 选题为入门的Codeforce div2/div1的C题和D题. 题解: A:CF思维联系–CodeForces -214C (拓扑排序+思维+贪心) B:CF–思维练习-- CodeFo ...
- UVa 1584 Circular Sequence --- 水题
UVa 1584 题目大意:给定一个含有n个字母的环状字符串,可从任意位置开始按顺时针读取n个字母,输出其中字典序最小的结果 解题思路:先利用模运算实现一个判定给定一个环状的串以及两个首字母位置,比较 ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- cf A. Inna and Pink Pony(思维题)
题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...
随机推荐
- vsCode快捷键设置
// 快捷键设置 keyiing.json // 将键绑定放入此文件中以覆盖默认值 [ /* // 转换大写 { "key" : "ctr ...
- laravel的firstOrCreate的作用:先查找表,如果有就输出数据,如果没有就插入数据
public function zan(Post $post){ $param=[ 'user_id'=>\Auth::id(), 'post_id'=>$post->id ] Za ...
- ASP.Net MVC(3) 之Razor视图引擎的基础语法
Razor视图引擎的基础语法: 1.“_”开头的cshtml文档将不能在服务器上访问,和asp.net中的config文档差不多. 2.Razor语法以@开头,以@{}进行包裹. 3.语法使用: 注释 ...
- PHP开发者的Linux学习之路
谈起一个高效动态网站的构建,那就不得不提到LAMP,即Linux操作系统.Apache网络服务器.Mysql数据库.Perl.PHP或Python编程语言等开源产品所组成的网站架构框架,其最大的优势是 ...
- HTML5 ③
超链接和锚链接: 1.超链接标签:<a herf="需要连接的页面地址" target=“01._self :在当前页面打开 *默认值 02. _blank :新窗口 ...
- EF-一对一关系
针对关系型数据库来说,需要明了每个对象之间的关系. 它们之间的关系有: 1.一对一(1:1):一个学生只能拥有一张身份证,一张身份证只能属于一个学生: 2.一对多(1:N):一个学生可以拥有几本书,而 ...
- hdu 1057 A + B Again
A + B Again Problem Description There must be many A + B problems in our HDOJ , now a new one is com ...
- Cracking The Coding Interview 5.7
//An array A[1-n] contains all the integers from 0 to n except for one number which is missing. In t ...
- 深入理解java虚拟机---虚拟机工具VisualVM(十九)
性能分析神器VisualVM 9602 VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优.这些功能包括生成 ...
- W phase 学习
W phase 的组成:(相关文献发现W phase适用于6级以上的地震) P, PP,S,SS,SP,PS等等长周期的震相: 它的传播机制和whispering gallery 相似. 从简振理论来 ...