病毒检测
时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 32M,其他语言64M

小明最近在做病毒自动检测,他发现,在某些library 的代码段的二进制表示中,如果包含子串并且恰好有k个1,就有可能有潜在的病毒。library的二进制表示可能很大,并且子串可能很多,人工分析不可能,于是他想写个程序来先算算到底有多少个子串满足条件。如果子串内容相同,但是开始或者结束位置不一样,则被认为是不同的子串。
注:子串一定是连续的。例如"010"有6个子串,分别是 "0, “1”, “0”, “01”, “10”, “010”

输入描述:
第一行是一个整数k,表示子串中有k个1就有可能是病毒。其中 0 <= k <= 1 000 000

第二行是一个字符串,就是library的代码部分的二进制表示。字符串长度 <= 1 000 000。并且字符串中只包含"0"或"1".

输出描述:
输出一个整数,所有满足只包含k个1的子串的个数。

输入例子1:
1
1010输出例子1:
6例子说明1:
满足条件的子串有:"1", "1", "10", "01", "10", "010".
输入例子2:
2
01010输出例子2:
4例子说明2:
满足条件的子串有: "101", "0101", "1010", "01010".
/*
思路: 使用两个辅助vector,一个记录1的位置v1,一个记录某个1的前面0的数量v2,
用一个长度为k的窗口在v1上滑动,满足条件的子串的数量与窗口首尾位置对应的v2记录的0的数量相关,
将每一个窗口的结果相加即可。结果应该设置成long long类型,有一个测试用例有很多0。
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{int k;string str;cin>>k>>str;vector<int> keysindex;//存放每一个1的索引位置;vector<int> keyszeros;//存放每一个1前0的个数;int czeros=0;for(int i=0;i<str.size();i++){if(str[i]=='0')czeros++;else if(str[i]=='1'){keysindex.push_back(i);keyszeros.push_back(czeros);czeros=0;}}if(czeros>0)keyszeros.push_back(czeros);elsekeyszeros.push_back(0);long long sums=0;if(k==0){long long temp;//换成long longfor(int i=0;i<keyszeros.size();i++){temp=keyszeros[i];sums += temp*(temp+1)/2;// temp=((long long)keyszeros[i]*(keyszeros[i]+1)/2);  sums+=temp;//注意这样写一定要强制转换,因为右边可能超过int的范围}}else if(keysindex.size()<k)sums=0;else{int i=0,j=k;while(j<keyszeros.size()){int tmp=(keyszeros[i]+1)*(keyszeros[j]+1);sums += tmp;i++;j++;     }}cout<<sums<<endl;return 0;
}

快手2020校园招聘秋招笔试--工程C试卷(21题)滑动窗口解决字串相关推荐

  1. 快手2020校园招聘秋招笔试--工程C试卷 (编程题题解全)

    1.病毒检测 滑动窗口题 例子: 2 0101010(第一位下标为1) 1)找到第一个最短的满足k条件的子串,即s[2~4],l=2,r=4 2)找出这个子串左右连续的0的个数,分别为a,b,则对于这 ...

  2. 快手2020校园招聘秋招笔试--工程A试卷 (编程题题解全)

    "好序列"的个数 反着求,先求出所有序列个数,再减去不符合的个数. 黑边把图分成一个,一个的连通分量. 所以我们只要用dfs求出每个不包含黑边的连通分量的包含点个数sz,sz^k就 ...

  3. 快手2020校园招聘秋招笔试--工程B试卷

    攻击者使用无效IP地址,利用TCP连接的三次握手过程,连续发送会话请求,使受害主机处于开放会话的请求之中,直至连接超时,最终因耗尽资源而停止响应.这种攻击被称为 A. DNS欺骗攻击 B. DDoS攻 ...

  4. 快手2020校园招聘秋招笔试--工程A试卷

    1.(计算机网络原理)若用斜杠记法标识子网掩码,则255.255.240.0对应于 B A. /19 B. /20 C. /21 D. /22 解析 255.255.240.0转换为二进制为11111 ...

  5. 快手2020校园招聘秋招笔试--工程B试卷 订正

    1.三种攻击 DNS欺骗攻击:冒充域名 把原来查询的IP改为其他IP ddos攻击:大量合法的服务器向某一目标不断发送请求,导致其他用户无法使用 SYN Flooding攻击:攻击者使用无效IP地址 ...

  6. 快手2020校园招聘秋招笔试--工程C试卷

    1. 关于java的异常处理机制,以下说法正确的是: A. 当某个线程抛出OutOfMemoryError时,其他线程有可能不受影响 B. 当大量抛出RuntimeException时,不会影响系统的 ...

  7. 快手2020校园招聘秋招笔试--工程A试卷 题4

    题意:中文题面自行理解 思路:处理出每块由红色边连成的连通块的点个数,ans=总方案数-所有只有红边相连的块的总方案数+只有黑边与之相连的点个数 代码: #include<bits/stdc++ ...

  8. 渣渣做后端真题-- 快手2020校园招聘秋招笔试--工程A试卷 选择题

    真的是一枚渣渣,题在牛客网找的,有错误求大神指导,求一起做题的小伙伴,没写的题是我会的,有问题可以给我留言呀- A:记忆小Tips:4** 没有402(阿玛尼红管402 ,一只鲜艳的苹果红),5** ...

  9. 快手2020校园招聘秋招笔试--算法B试卷

    四个编程题总体算比较简单,基本都在LeetCode出现过.但是我的速度太慢了,还要加油啊ヾ(◍°∇°◍)ノ゙ 牛客快手2020校园招聘秋招笔试–算法B试卷 合法数独 给定一个数独板的输入,确认当前的填 ...

最新文章

  1. 开源项目 eRedG4_V1.03.1发布
  2. Gallery简单应用
  3. 用枚举enum替代int常量
  4. python 实现队列功能 queue insert() pop()
  5. Win Api 有名管道通信--扫雷辅助(四)
  6. 在python中使用grpc和protobuf
  7. 从桌面到移动:异构计算翻天覆地的技术变革
  8. 华为tsm_台积电:如果不能向华为销售芯片,其他订单可快速取代华为空缺
  9. xxl子任务_XXL-JOB v2.1.2 发布,分布式任务调度平台
  10. 机器学习与计算机视觉(深度学习)
  11. 魅族使用华为鸿蒙,魅族官宣接入华为鸿蒙,以后我们还能用魅族自家的flyme系统吗?...
  12. 教你在Windows轻松修改Hosts文件
  13. sqlalchemy按月水平分表、python元类、动态映射表名automap_base\ 模型类
  14. 2010年总结机器人领域sci期刊杂志
  15. 移动网络安全_徐州市“移动杯”网络安全技能竞赛 即将开始!
  16. 华为跑了?深圳终究留不住华为
  17. 六度短网址服务平台原理
  18. jstack详细介绍
  19. 最新微信三级分销系统源码 分销商城搭建 含完整代码包和安装部署教程
  20. 一文读懂Uniswap V2的改进与创新

热门文章

  1. 基于RISC-V架构的开源处理器及SoC研究综述(一)
  2. vue上传文件到后端,前端接收到后端传来的图片并显示。
  3. 通达信l2接口是什么意思?
  4. 【C语言游戏】井字棋游戏(电脑下棋算法优化)
  5. 超100篇!CVPR 2020最全GAN论文梳理汇总!
  6. 干货 | 数据治理落地难?携程度假数据治理需求设计实践
  7. win10删除/编辑注册表时出错的解决方法
  8. 用Java编写简单的扑克牌游戏
  9. miniui不显示textbox边框_280Hz超高刷率IPS面板 电竞显示器越来越疯狂了
  10. 记录一次在JavaWeb项目中,运行tomcat的时候,遇到XX程序包不存在的一系列排查问题。