蓝桥杯 人物相关性分析 二分

思路:
这道题是常规的模拟题,根据题意写出相关代码即可。模拟题一般容易在边界条件上出错,建议自己设计几个样例测试一下。这题纯暴力的方法不能通过所有的测试点,对于最后的查询,应该使用二分查找,这样算法的整体复杂度是O(nlogn)

参考代码:

#include<bits/stdc++.h> 
#define INF 0x3f3f3f3f
using namespace std;
typedef long long ll;
string s;
int k, len;
vector<int> alice, bob;  //用于记录两个单词成功出现在文本中时的首字母位置 bool if_letter(char c)  //判断是不是字母 
{if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z')return true;elsereturn false;
}bool if_alice(int index)  //判断当前位置是不是单词Alice的起始位置 
{string tmp = "Alice";for(int i = 0; i < 5; i++){if(tmp[i] != s[index+i])return false;}if(index > 0 && if_letter(s[index-1]))return false;if(index+5 < len && if_letter(s[index+5]))return false;return true;
}bool if_bob(int index)  //判断当前位置是不是单词Bob的起始位置 
{string tmp = "Bob";for(int i = 0; i < 3; i++){if(tmp[i] != s[index+i])return false;}if(index > 0 && if_letter(s[index-1]))return false;if(index+3 < len && if_letter(s[index+3]))return false;return true;
}int main()
{ios::sync_with_stdio(false);cin >> k;cin.get();  //读取换行符 getline(cin, s);  //读取整个字符串,使用cin无法读取含空格的字符串 len = s.size();for(int i = 0; i <= len-5; i++){if(if_alice(i)){alice.push_back(i);i += 5;}}for(int i = 0; i <= len-3; i++){if(if_bob(i)){bob.push_back(i);i += 3;}}ll cnt = 0; for(int i = 0; i < alice.size(); i++) {int t = alice[i];//二分查找第一个满足条件的Bob位置 int start = lower_bound(bob.begin(), bob.end(), t-k-3) - bob.begin(); //二分查找最后一个满足条件的Bob位置 int end = lower_bound(bob.begin(), bob.end(), t+k+5) - bob.begin();cnt += end - start;}cout << cnt;return 0; 
}

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

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

相关文章

abp模块生命周期设计思路剖析

abp中将生命周期事件抽象为4个接口&#xff1a;//预初始化 public interface IOnPreApplicationInitialization {void OnPreApplicationInitialization([NotNull] ApplicationInitializationContext context); }//初始化 public interface IOnApplicationInitialization {void …

蓝桥杯 迷宫与陷阱 BFS

参考代码&#xff1a; #include<bits/stdc.h> #define INF 0x3f3f3f3f using namespace std; typedef long long ll; struct node{int x, y, step, ticket;node(int a, int b, ll c, int d){xa, yb, stepc, ticketd;} }; queue<node> q; bool vis[1005][1005]; i…

.Net Core + 微信赋能企业级智能客服系统--学习笔记

摘要围绕目前需求猛增的微信及移动端企业智能客服业务&#xff0c;利用 .NET Core 的一系列优秀特性及 SignalR 模块打造全双工、跨微信/QQ/钉钉等应用平台、跨系统平台、跨终端、支持企业级并发的移动端客服系统。讲师介绍目录微信应用生态简介微信小程序基础通讯原理Senparc.…

基于docker-compose的Gitlab CI/CD实践排坑指南

长话短说经过长时间实操验证&#xff0c;终于完成基于Gitlab的CI/CD实践&#xff0c;本次实践的坑位很多&#xff0c; 实操过程尽量接近最佳实践&#xff08;不做hack, 不做骚操作&#xff09;&#xff0c;记录下来加深理解。看过博客园《docker-compose真香》一文的园友留意到…

Is It a Complete AVL Tree AVL树

思路&#xff1a; 考察的点是建立AVL树以及如何判断是否为满二叉树。 建立AVL树需要搞清楚LL、LR、RR、RL四种情况如何左旋和右旋&#xff0c;如下&#xff1a; 类型BF条件操作LLBF(root)2,BF(root->lchild)1root右旋LRBF(root)2,BF(root->lchild)-1先root->lchild左…

AcWing 删减 栈思想

思路&#xff1a; 这道题要是不卡时间复杂度&#xff0c;是道大水题&#xff0c;然而字符串的长度到了6次方&#xff0c;若使用string中的erase函数&#xff0c;看似时间复杂度不高&#xff0c;其实&#xff0c;每次删除子字符串后&#xff0c;后边的字符串需要移动到前面来&am…

读《可复制的领导力》

最近很忙&#xff0c;是特别忙&#xff0c;连上厕所的时间都在回复着各种消息&#xff0c;但还是挤时间看完了《可复制的领导力》&#xff0c;这本书也是领导推荐的。说起领导力&#xff0c;大多数人都会觉得得靠悟&#xff0c;并不能做到言传身教&#xff0c;但书名中却提到了…

AcWing 构造数组 区间合并

思路&#xff1a; 这道题第一眼来看以为是动态规划类型的题目&#xff0c;然而尝试了用dp的方法做&#xff0c;然而超时了&#xff0c;过了差不多一半的测试店&#xff0c;显示的是超时。那么应该来说动态规划是可以做的&#xff0c;但数据卡的比较严。在看其他同学的评论后&am…

为什么需要动态SQL

为什么需要动态SQL在使用 EF或者写 SQL语句时&#xff0c;查询条件往往是这样一种非常常见的逻辑&#xff1a;如果客户填了查询信息&#xff0c;则查询该条件&#xff1b;如果客户没填&#xff0c;则返回所有数据。我常常看到很多人解决这类问题时使用了错误的静态 SQL的解决办…

PAT Family Property DFS+哈希

题目链接 思路&#xff1a; 本题将每个人作为一个单独的结点&#xff0c;若两个人之间是家人关系&#xff0c;则建立边关系。通过哈希法建立人名与编号&#xff0c;编号与人名之间的映射。最后统计每个家庭的人数时&#xff0c;用DFS遍历即可。 对于本题我犯过两个错误&#…

【好文】为什么必须学好.Net Core?怎样弯道超车新年高薪?这样做,一周就够了!(文末彩蛋)...

都2020了你还不会.Net Core&#xff1f;恕我直言&#xff0c;2020年还不会.Net Core是会被淘汰的&#xff01;12月3号&#xff0c;.Net Core3.1的LTS版正式发布&#xff0c;4年来7个正式版本和几十个Preview版本&#xff0c;热烈可见一斑&#xff01;越来越多的互联网软件公司开…

最短路径SPFA和Bellman-Ford算法

参考模板&#xff1a; #include<bits/stdc.h> using namespace std; #define INF 0x3f3f3f3f typedef long long ll;struct node {int v, dis;node(int v, int dis) {this->v v, this->dis dis;} }; vector<node> adj[1005]; int n, d[1005], num[1005]; …

基于 Kubernetes 的基础设施即代码

11 月 9、10 号两天&#xff0c;.NET 社区第一次以“.NET 大会”为品牌在上海召开了第一届峰会&#xff0c;现场与会者达到 600 人规模。大会的第 1 天是各类演讲分享&#xff0c;第 2 天有多个动手实践课。张善友队长、 刘腾飞 和我一起策划了基于 Kubernetes 的 .NET Core 微…

最小生成树Prim和Kruskal算法

两种算法都是基于贪心的方法。 Prim算法&#xff1a; 适用于稠密图。时间复杂度为O(V^2)。(V为顶点数&#xff09; 与Dijkstra算法相似&#xff0c;每次选择离离原点最近的点&#xff0c;加入到现有的生成树中。 Kruskal算法&#xff1a; 适用于稀疏图。时间复杂度为O(E*logE)…

Steeltoe 2.4新增代码生成工具、全新入门指南等,助力.NET微服务开发

Steeltoe框架现可帮助.NET开发人员创建云原生应用。随着其功能的扩充&#xff0c;该框架越来越受欢迎&#xff0c;下载量达到580万&#xff08;并且仍在增加&#xff09;&#xff0c;这其中大部分的功能创新都源自于用户反馈、社区贡献和.NET运行环境各方面的改进。但这些还不够…

AcWing 自动补全 二分

题目链接 先上AC代码。 参开代码&#xff1a; #include<bits/stdc.h> #include<unordered_map> using namespace std; #define INF 0x3f3f3f3f typedef long long ll;string s[100005]; unordered_map<string, int> m; bool check(string a, string b) {if…

2019 年终回顾:不忘初心,负重前行

点击上方蓝字关注“汪宇杰博客”导语2019 年就要接近尾声&#xff0c;这一年对于我来说&#xff0c;有许多有意义的事件。我成长了许多&#xff0c;并依然保持着对技术的热情。在辞旧迎新之际&#xff0c;我想回顾一下我这一年中有意义的事件与收获&#xff0c;期待与大家一起在…

机试真题1 反序输出 cin判断读取结束

题目链接 解题思路 这题是纯纯的送分题&#xff0c;但我忘记了怎么判断读取结束。应该用&#xff1a; while (cin >> s){}在Windows中&#xff0c;CtrlZ输出输入结束符号。 参考代码 #include<bits/stdc.h> using namespace std;void print(string s) {int len…

【C#】设计模式的学习征途系列文章目录(2019版)

Photo &#xff1a;Design Patterns文 | Edison Zhou2017年&#xff0c;我开始系统学习设计模式&#xff0c;参考了《大话设计模式》、《设计模式的艺术》等书籍&#xff0c;并通过C#语言写了各种模式的代码示例&#xff08;已经放到了我的github上并收获了120个star&#xff0…

机试真题2 进制转换 高精度除法

题目链接 解题思路 这题需要通过高精度加除法来解决。原本以为高校机试题最多考到高精度的加减法&#xff0c;没想到还会考高精度和低精度的乘除法&#xff0c;不亏是你清的题。 需要注意的是&#xff0c;一开始存储需要是逆序存储&#xff0c;方便后面的操作&#xff0c;同时…