作为电子科大的一员,大家都知道,我们校园有很多高大的银杏树,现在小明正在观察一棵树上的鸟儿,他发现了一些规律。

在这个树上,有一些雄鸟和雌鸟(小明很厉害,能分得出鸟儿的雄雌),假如来了一只雄鸟,它会在树上唱歌,如果p分钟内有一只雌鸟飞来和它一起唱,它们就会一直呆在树上不走了,否则p分钟之后,这只雄鸟就会飞走。假如来的是只雌鸟,如果没有落单的雄鸟在树上,它不会落到树上而是直接飞走,否则它会选择等待时间最长的雄鸟和它一起唱歌,就再也不走了。

现在小明记录了一段时间飞来这个银杏树的鸟儿,每隔一分钟可能会飞来一只雌鸟或雄鸟,或者什么都没有发生,现在小明想知道这段时间内树上最多有多少只鸟儿,你可以帮助他吗?

Input

首先输入一个正整数T,T≤50,表示有T组数据。

每组第一行给出两个整数n、p,分别表示记录时间段的长度,和每个雄鸟最多能等待的时间(1<n≤1000,1≤p≤10)。

第二行为一个长度为n的字符串,由 012三种字符构成,表示这段时间内鸟儿飞来的情况,0表示没有鸟飞来,1表示来的是雄鸟,2表示来的是雌鸟。

Output

每组数据输出一行只包含一个数,表示最多的鸟儿数量。

Sample input and output

Sample Input Sample Output
5
10 1
1212121212
10 3
1111122222
16 3
2221112222211111
2 1
22
5 4
11111
10
6
9
0
4

Hint

如果在某个时刻,同时发生了鸟儿的飞进飞出,那么先有一只鸟儿飞出枝头,再由另一只鸟儿飞上枝头,参考第三组样例,第15只鸟飞上枝头的时候,第12只鸟已经离开了。第12只鸟离开的原因是因为第15只是雄鸟,如果第15只是雌鸟,第12只就不会飞走了。

#include <iostream>
#include <stdio.h>
using namespace std;
char str[1010];
int a[1010];
int main()
{int t,n,p;scanf("%d",&t);while (t--){scanf("%d%d",&n,&p);scanf("%s",str);for (int i=0;i<n; i++)a[i]=str[i]-'0';int ans=0;for (int i=0; i<n; i++){if(a[i]==1){for (int j=i+1; j<=i+p && j<n; j++) //处理可以在时间段p内配对的鸟{if(a[j]==2){a[i]=3;  //更改已配对的的标记a[j]=3;break;}}}}int Max=0;for (int i=0; i<n; i++){int cnt=0;int m=0;if(i+p>n)m=n;elsem=i+p;for (int j=i; j<m; j++){if(a[j]==1) //找未配对但是在该时间段内还留着树上的鸟cnt++;else if(a[j]==3)  //已留在树上的鸟儿{a[j]=0;  //更改标记ans++;}}if(Max<ans+cnt)   //每个时间段都要更新Max=ans+cnt;}printf("%d\n",Max);}return 0;
}

uestc 1904 树上的鸟儿相关推荐

  1. CDOJ 763 树上的鸟儿(水题/模拟题)

    树上的鸟儿 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 作为电子科大的一员, ...

  2. 有关“树上剩余几只鸟”的问题的思考及解答

    最近,我被问到了一个貌似脑筋急转弯的问题:"树上有五只鸟,猎人开枪打死了一只,请问树上还剩下几只鸟?" 对于这个问题,想必大家都有被问到过,或者是在什么地方看到过.这个问题实际上并 ...

  3. html5考试总结300字,期中考心得300字5

    为了检验学生半个学期所学的知识而进行的一次考试,有利于学生比较正式地检验自己平时的学习水平,根据这个成绩,学生可以及时的调整学习心态和方法,更有效率地进行下一阶段的学习,期中考试主要考察学生前半学期的 ...

  4. 记忆的天空:智能进化三部曲

    作者:钟振余,宁波大学 相对于人工智能的快速发展,人类对于生命智能的理解显得很肤浅.由于缺失大脑活动原理的理论指导,人们只能用知识考试去评判一个人的智能,用相当于几岁孩子的智能去比对某些高级动物的智能 ...

  5. 数学之美番外篇:快排为什么那样快

    目录 0. 前言 1. 猜数字 2. 称球 3. 排序 3.1 为什么堆排比快排慢 3.2 为什么快排其实也不是那么快 3.3 基排又为什么那么快呢 4. 信息论!信息论? 5. 小结 0. 前言 知 ...

  6. hdu 5199 map或二分或哈希

    题目描述:给出n棵树的高度,每棵树上都站着一只鸟,枪手Jack站在最左边那棵树的左边对鸟进行射击,当Jack在高度为H的地方向右发射一颗子弹的时候,高度为H的树上的鸟儿就会掉落(注:其他树上的鸟儿不会 ...

  7. 一只老猴子说的话,太经典了!

    一只老猴子说的话,太经典了! 故事一 一只猴子,肚子被树枝划伤,流了很多血. 它见到一个猴子就扒开伤口说,你看我的伤口好痛. 每个看见它伤口的猴子都安慰它,告诉它不同的治疗方法. 它就继续给朋友们看伤 ...

  8. 英文材质翻译表_英语翻译5大技巧,用了才知道是真好

    一.略读全文 在翻译过程中,理解是表达的前提,不能正确理解就谈不上正确表达.因此,首先要略读全文,从整体上把握整篇文章的内容,并理解划线部分与文章其他部分之间的语法与逻辑关系. 二.分析划线部分 在整 ...

  9. Kotlin入门(6)条件分支的实现

    上一篇文章介绍了字符串的相关操作,其中示例代码用到了if和for语句,表面上看,Kotlin对控制语句的处理与Java很像,可实际上,Kotlin在这方面做了不少的改进,所以本篇和下一篇文章就分别介绍 ...

最新文章

  1. 瞭望丨光子芯片能否让中国“换道超车”
  2. 大数据开发实战:Hive表DDL和DML
  3. 【转】校园网综合布线系统设计方案
  4. 关于C/C++中的几个关键字(C基础)
  5. 特斯拉Model X成NASA官方宇航员转运车辆,已打上NASA标志
  6. Python发布 - distutils简单使用
  7. Component 初识组件
  8. windows 进程学习
  9. Spring学习之整合Activiti(一)
  10. winscp连接Linux步骤
  11. Python黑帽子 黑客与渗透测试编程之道(三)取代netcat
  12. Cadence Orcad capture导出像Visio规格的图纸图文教程及视频演示
  13. java判断字符是否为0_Java判断字符串是否为空
  14. 计算机二级电子表格开根号函数,教你如何用函数方式在excel中开根号
  15. Unity如何开发微信小游戏
  16. 【DA】单侧T检验p值与双侧T检验p值的关系
  17. 大规模定制有哪些标志性的特点
  18. 导航栏菜单实现鼠标移入移出中英文切换的两种方法(css3和jQuery)
  19. 2021-5-11 atcoder C - Replacing Integer
  20. 一个古老故事--线程和线程池的故事

热门文章

  1. ATM系统对象模型建模
  2. 使用rclone挂载FTP目录到Minio
  3. 信号与系统——连续时间信号的基础运算方法(二)
  4. IE和Chrome最大化实现方法
  5. mysql 单机 数据_MySQL数据一致性-单机
  6. Day09 红帽Linux — 2控制对文件的访问
  7. Mybatis返回Map的一种实现
  8. 阿里云 OSS 静态网站托管
  9. echarts字符云相关配置说明
  10. lnmp mysql安装失败_LNMP一键安装包常见问题错误及解决方法(不定期更新)