【题解】FBI序列

题目描述

        两伙外星人策划在未来的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[2005];
int len;
int cnt_F, cnt_I;
int ans;int main()
{scanf("%s", s);len = strlen(s);for(register int i = 0; i < len; ++i){if(s[i] == 'I') ++cnt_I;}for(register int i = 0; 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);
}
参考程序

 

转载于:https://www.cnblogs.com/kcn999/p/10353481.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248549.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue基础(上篇)

✨有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇\textcolor{blue}{ 有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于 vue的基础篇}有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇 ✨ 今天他来了…

depends用于测试程序运行所缺少的文件,可以帮我们很快找到问题

DEPENDS工具和DUMPBIN工具使用阅读目录(Content) 1.Depends2.DUMPBIN2.1 开启CMD2.2 移动目录到C:\Program Files (x86)\Microsoft Visual Studio\VC98\Bin2.3 运行命令:VCVARS32.BAT2.4 下面就可以调用dumpbin.exe命令了在系统部署运行时我们经常发现某个程序在开发机器中可以…

友联

欢迎来到小站友链区&#xff0c;欢迎━(&#xff40;∀)ノ亻!。 ljc20020730学长巨佬_WA自动机珂朵莉最可爱了BLUESKY007雷姆最可爱啦扬子曰他的代码是神奇的lukelin机房最强如果你想要成为chhokmah小站的朋友的话&#xff0c;请你先把小站加入为友链站哟(&#xff3e;&#xf…

vue基础(中篇)

✨有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇\textcolor{blue}{ 有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于 vue的基础篇}有粉丝在私信中联系博主&#xff0c;希望博主能够系统的出一篇关于vue的基础篇 ✨ 今天他来了…

DR图像的畸变校正

DR图像容易产生S形、枕形和局部失真的情况&#xff0c;这给医生对图像的判断带来干扰。而且在医学图像的三维重建中&#xff0c;未经校正的图像进行重建&#xff0c;还会带来一定的重影等干扰。因此&#xff0c;畸变校正是DR图像进行后续处理&#xff0c;不得不对待的一个问题。…

【CF global1 D / CF1110D】 Jongmah

题意 你有n个数字&#xff0c;范围[1, m]&#xff0c;你可以选择其中的三个数字构成一个三元组&#xff0c;但是这三个数字必须是连续的或者相同的&#xff0c;每个数字只能用一次&#xff0c;问这n个数字最多构成多少个三元组? 分析 这里想谈一下DP的一个套路&#xff0c;捆绑…

vue基础(下篇)

介绍 对vue组件的介绍网上有很多大家可以自行查询 组件 (Component) 是 Vue.js 最强大的功能之一 组件可以扩展 HTML 元素&#xff0c;封装可重用的代 组件注册 全局注册 Vue.component(‘组件名称’, { }) 第1个参数是标签名称&#xff0c;第2个参数是一个选项对象 全局组…

MS17-010漏洞复现

攻击机&#xff1a;192.168.148.132 kali linux2018.2 x64 靶机&#xff1a;192.168.1.129 win7 x64 首先用msfconsole的smb模块扫描&#xff0c;看看是否有漏洞 use auxiliary/scanner/smb/smb_ms17_010 set rhosts 192.168.1.129 &#xff08;目标主机&#xff09; Ho…

watch 和 computed

<template><div class"hello"><h1>{{ msg }}</h1><h2>Essential Links</h2><!-- watch/computed比较 --><div><input v-model"firstName" type"text"><input v-model"lastName&q…

[BZOJ]3173: [Tjoi2013]最长上升子序列

题解: 考虑按照元素升序加入 所以对位置在其后的元素LIS无影响 然后从前面位置的最大值转移过来就行 ,,,,平衡树无脑模拟 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <vector> #include <s…

转:HTTP协议简介与在python中的使用详解

1. 使用谷歌/火狐浏览器分析 在Web应用中&#xff0c;服务器把网页传给浏览器&#xff0c;实际上就是把网页的HTML代码发送给浏览器&#xff0c;让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP&#xff0c;所以&#xff1a; HTML是一种用来定义网页的文本&#xff0c…

深受企业青睐的华为云

作为中国经济活力与韧性的重要保障&#xff0c;无数中小企业也在为夺得各自领域的冠军你追我赶。而席卷全球的数字化转型浪潮&#xff0c;则将这场冠军争夺赛推向了关键节点。企业数字化的第一步就是业务云端化&#xff0c;对企业来说云计算是不可或缺的数字底座。上云&#xf…

一个程序员的水平能差到什么程度?

老板觉得公司里都是男的&#xff0c;缺少一点阴柔之气&#xff0c;想平衡一下&#xff0c;正巧当时互金公司倒了一大批&#xff0c;大批简历投到公司&#xff0c;老板以为自己也是技术出身&#xff0c;就招了一个三年工作经验的女程序员&#xff0c;互金出来的&#xff0c;要价…

vue路由详解版一目了然

概念 路由的本质就是一种对应关系&#xff0c;比如说我们在url地址中输入我们要访问的url地址之后&#xff0c;浏览器要去请求这个url地址对应的资源。 那么url地址和真实的资源之间就有一种对应的关系&#xff0c;就是路由。 路由分为前端路由和后端路由 1).后端路由是由服务…

go语言环境搭建

1、windows环境搭建   1、安装go   2、安装goland开发工具包 2、test.go /* 可执行文件&#xff0c;包名必须是main */ package main /* fmt 字符串格式化的包 */ import "fmt"/*main入口函数*/ func main() { fmt.Printf("Hello, world" )} View Code…

进阶函数

一、函数对象 函数是第一类对象&#xff1a;函数名指向的值可以被当做参数传递 1.函数名可以被传递 def func():print(func)f func # 函数名可以当做变量名 print(f) # f指向的也是函数func指向函数体代码的内存地址 2.函数名可以被当做参数传递给其他参数 def func():print…

vue脚手架基础API全面讲解【内附多个案例】

vscode-插件补充 vue文件代码高亮插件-vscode中安装 代码提示插件-vscode中安装 知识点自测 想学会今天的内容, 先测测这几个会不会 表达式, 变量是什么 new的作用和含义 实例化对象 什么是对象上的, 属性和方法 对象的赋值和取值 this的指向 npm/yarn是什么, package.json干…

mysql 和 sqlserver sql差异比较

mysql:select * from table_name limit 100,200;--取出从100到200的数据 获取时间&#xff1a;mysql:now() mysql tinyint&#xff08;0,1&#xff09; → bit float &#xff08;decimal(19,4)&#xff09;→ moneytext → ntextvarchar →nvarchar 转载于:https://www.cnblo…

Vue 过滤器、计算属性、侦听器 图解版 一目了然

文章目录本篇学习目标1. vue基础1.0_vue基础 v-for更新监测1.1_vue基础_v-for就地更新1.2_vue基础_虚拟dom1.3_vue基础_diff算法情况1: 根元素变了, 删除重建情况2: 根元素没变, 属性改变, 元素复用, 更新属性1.4_vue基础_diff算法-key情况3: 根元素没变, 子元素没变, 元素内容…

linux shell命令行选项与参数用法详解

问题描述&#xff1a;在linux shell中如何处理tail -n 10 access.log这样的命令行选项&#xff1f;在bash中&#xff0c;可以用以下三种方式来处理命令行参数&#xff0c;每种方式都有自己的应用场景。1&#xff0c;直接处理&#xff0c;依次对$1,$2,...,$n进行解析&#xff0c…