题目描述

两伙外星人策划在未来的XXXX年侵略地球,侵略前自然要交换信息咯,现在,作为全球保卫队队长,你截获了外星人用来交换信息的一段仅由“F”,“B”,“I”,“O”组成的序列。为了保卫地球和平,为了使家园不受破坏,你要机智地破解密码,勇敢地迎击外星人!记住,你不是一个人在战斗!你不是一个人!你的背后是千千万万的地球人!

输入输出格式

输入格式

一组仅由“F”、“B”、“I”、“0”组成的序列(“F”、“B”、“I”、“0”这四个字母中的某一个或某几个不一定会出现,且保证序列长度≤2000)

规定这个序列所要传达的信息就是这组序列有多少个“FBI”(子序列)

输出格式

一行,一个数,表示这组序列有多少个“FBI”的子序列(保证答案≤2^31,且FBI必须是正序,即IBF或者BIF或者FIB或者BFI或者IFB都不能算是一个FBI)

输入输出样例

输入样例

FBIIBFOI

输出样例

4

题解

朴素做法很明显,枚举F,B,I的位置,暴力统计,时间复杂度O(n³),数据水的话还能卡过去。

显然我们不能用这种做法。可以考虑枚举B的位置i(假设从1开始计数),然后统计字符串的第一位到第i-1位里F的数量和第i+1位到第n位I的数量,根据乘法原理统计结果,而事实上统计F,I的数量也可以用两个变量维护,枚举i的过程中判断要不要更改这两个变量,这样即可做到O(n)的时间复杂度。

#include <iostream>
#include <cstdio>
#include <cstring> using namespace std; char s[];
int len;
int cnt_F, cnt_I;
int ans; int main()
{
scanf("%s", s);
len = strlen(s);
for(register int i = ; i < len; ++i)
{
if(s[i] == 'I') ++cnt_I;
}
for(register int i = ; i < len; ++i)
{
if(s[i] == 'B') ans += cnt_F * cnt_I;
else if(s[i] == 'F') ++cnt_F;
else if(s[i] == 'I') --cnt_I;
}
printf("%d", ans);
}

参考程序

【题解】FBI序列的更多相关文章

  1. 题解-[HNOI2016]序列

    题解-[HNOI2016]序列 [HNOI2016]序列 给定 \(n\) 和 \(m\) 以及序列 \(a\{n\}\).有 \(m\) 次询问,每次给定区间 \([l,r]\in[1,n]\),求 ...

  2. [题解] [SDOI2017] 序列计数

    题面 题解 和 SDOI2015 序列统计 比较像 这个无非就是把乘改成了加, NTT 改成了 MTT 再加上了一个小小的容斥 : 拿所有方案减去不合法方案即可 Code #include <a ...

  3. [题解] [SDOI2015] 序列统计

    题面 题解 设 \(f[i][j]\) 代表长度为 \(i\) 的序列, 乘积模 \(m\) 为 \(j\) 的序列有多少个 转移方程如下 \[ f[i + j][C] = \sum_{A*B\equ ...

  4. 题解-bzoj1283序列 & bzoj4842 [Neerc2016]Delight for a Cat

    因为这两题有递进关系,所以放一起写 Problem bzoj1283 序列 题意概要:一个长度为 \(n\) 的序列\(\{c_i\}\),求一个子集,使得原序列中任意长度为 \(m\) 的子串中被选 ...

  5. bzoj1211树的计数 x bzoj1005明明的烦恼 题解(Prufer序列)

    1211: [HNOI2004]树的计数 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3432  Solved: 1295[Submit][Stat ...

  6. 题解 [HNOI2019]序列

    题目传送门 题目大意 给出一个\(n\)个数的数列\(A_{1,2,...,n}\),求出一个单调不减的数列\(B_{1,2,...,n}\),使得\(\sum_{i=1}^{n}(A_i-B_i)^ ...

  7. [题解]BZOJ1004 序列函数

    原题找不到了,应该是usaco之类的题目吧.给一个可以交题的链接:http://www.cqoi.net:2012/problem.php?id=1004 思路:将素数一个一个往里乘,保证扫描的顺序是 ...

  8. BZOJ4416 [Shoi2013]阶乘字符串 【序列自动机 + 状压dp】

    题目链接 BZOJ4416 题解 建立序列自动机,即预处理数组\(nxt[i][j]\)表示\(i\)位置之后下一个\(j\)出现的位置 设\(f[i]\)表示合法字符集合为\(i\)的最短前缀,枚举 ...

  9. 【bzoj1430】小猴打架 Prufer序列

    题目描述 给出 $n$ 个点,每次选择任意一条边,问这样 $n-1$ 次后得到一棵树的方案数是多少. 输入 一个整数N. 输出 一行,方案数mod 9999991. 样例输入 4 样例输出 96 题解 ...

随机推荐

  1. scapy学习笔记(2)--包及包的定义

    转载请注明:@小五义:http://www.cnblogs/xiaowuyi 一.包 包(Packet)是TCP/IP协议通信传输中的数据单位,一般也称“数据包”.其主要由“目的IP地址”.“源IP地 ...

  2. nrf52832 连接参数更新过程

    ble 连接参数更新过程如下: 一般分三个过程 一 .主机发起连接(带有一个连接参数,一般都是 7.5ms) 二.主机更新连接参数 (举例:NRF CONNECT 安卓app软件 45ms). 三.从 ...

  3. redis的使用,相比memcached

    redis支持数据持久化,不像memcached断电或者重启就丢失数据了. 支持持久化主要有两种方式,在redis.conf配置文件里配置. 1. 使用.rdb格式存储,配置save参数(save N ...

  4. Hadoop体系结构杂谈

    hadoop体系结构杂谈 今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底 ...

  5. win7中mysql安装

    最近需要用到MySQL,从官网上下载了一个安装文件,但是安装时一直弹出如下提示信息: Configuration of MySQL Server 5.7 is taking longer than e ...

  6. jQuery对底部导航进行跳转并高亮显示

    这两天弄一个mui的底部菜单,有点费时了,尝试了用vue写,纯js写,还有根据mui的写,还是有些问题和麻烦.直到看了网上的一些例子,才想明白,之前一直是一种点击触发事件才高亮的思维去做,这个虽然可以 ...

  7. 20155217《网络对抗》Exp01 PC平台逆向破解(5)M

    20155217<网络对抗>Exp01 PC平台逆向破解(5)M 实验要求 掌握NOP,JNE,JE,JMP,CMP汇编指令的机器码 掌握反汇编与十六进制编程器 能正确修改机器指令改变程序 ...

  8. PowerShell 操作 Azure SQL Active Geo-Replication

    前文中我们比较全面的介绍了 Azure SQL Database Active Geo-Replication 的主要特点和优势.接下来我们将从自动化的角度介绍如何通过 PowerShell 在项目中 ...

  9. 软件测试_测试工具_APP测试工具_对比

    以下是我自己整理的APP测试工具对比,各个工具相关并不全面.尤其关于收费一项,我只是针对自己公司的实际情况进行对比的,每个工具还有其他收费套餐可以选择,详情可进入相关官网进行查看 以下是部分官网链接: ...

  10. 由Windows开发平台向Linux平台转移的一些想法

    从毕业到现在已经快20年了,一直在从事Windows平台上的开发工作.刚毕业那会大约是97,98年左右,工作的平台除了Windows平台还有Dos平台,因为在学校学习时,也是从Dos开始的.因此对于从 ...