YTU 2895: H--唱歌的鸟儿
2895: H--唱歌的鸟儿
时间限制: 1 Sec 内存限制: 128 MB
提交: 26 解决: 10
题目描述
烟大东门有一棵大杨树,树上经常会有很多鸟儿飞来飞去。春天来了,学生物的小姜发现了一些规律。在这棵杨树上,假如来了一只雄鸟,它会在树上唱歌,如果 p 分钟内有一只雌鸟飞来和它一起唱,它们就会一直呆在树上不走了,否则 p 分钟之后,这只雄鸟就会飞走。假如来的是只雌鸟,如果没有落单的雄鸟在树上,它不会落到树上而是直接飞走,否则它会选择等待时间最长的雄鸟和它一起唱歌,就再也不走了。如果在某个时刻,同时发生了鸟儿的飞进飞出,那么先有一只鸟儿飞出枝头,再由另一只鸟儿飞上枝头。
现在小姜记录了一段时间飞来这棵杨树的鸟儿,每隔一分钟可能会飞来一只雌鸟或雄鸟,或者什么都没有发生,现在小姜想知道这段时间内树上最多有多少只鸟儿,你可以帮助他吗?
输入
首先输入一个正整数T,T <= 50,表示有T组数据。
每组第一行给出两个整数n、p,分别表示记录时间段的长度,和每个雄鸟最多能等待的时间(1 < n <= 1000,1 <= p <= 10)。
第二行为一个长度为n的字符串,由 0, 1, 2 三种字符构成,表示这段时间内鸟儿飞来的情况,0表示没有鸟飞来,1表示来的是雄鸟,2表示来的是雌鸟。
输出
每组数据输出一行只包含一个数,表示最多的鸟儿数量。
样例输入
5
10 1
1212121212
10 3
1111122222
16 3
2221112222211111
2 1
22
5 4
11111
样例输出
10
6
9
0
4
提示
参考第三组样例,第15只鸟飞上枝头的时候,第12只鸟已经离开了。第12只鸟离开的原因是因为第15只是雄鸟,如果第15只是雌鸟,第12只就不会飞走了。
你 离 开 了 , 我 的 世 界 里 只 剩 下 雨 。 。 。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define N 1005
struct node
{
int a,b;
} f[N];
char str[N];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,n,p,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&p);
memset(f,0,sizeof(f));
scanf("%s",str);
for(i=0; i<n; i++)f[i].a=str[i]-'0';
for(i=0; i<n; i++)
{
if(f[i].a==2)
{
for(j=max(0,i-p); j<i; j++)
if(f[j].a==1&&f[j].b!=-1)
{
f[j].b=-1;
f[i].b=-1;
break;
}
}
}
int t=0,cnt=0,ans=0;
for(i=0; i<n; i++)
{
cnt=0;
if(f[i].b==-1)t++;
if(i-p<0)j=0;
else j=i-p+1;
for(; j<=i; j++)
if(f[j].a==1&&f[j].b!=-1)cnt++;
ans=max(ans,t+cnt);
}
printf("%d\n",ans);
}
return 0;
}
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define N 1005
struct node
{
int a,b;
} f[N];
char str[N];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
int i,j,n,p,T;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&p);
memset(f,0,sizeof(f));
scanf("%s",str);
for(i=0; i<n; i++)f[i].a=str[i]-'0';
for(i=0; i<n; i++)
{
if(f[i].a==2)
{
for(j=max(0,i-p); j<i; j++)
if(f[j].a==1&&f[j].b!=-1)
{
f[j].b=-1;
f[i].b=-1;
break;
}
}
}
int t=0,cnt=0,ans=0;
for(i=0; i<n; i++)
{
cnt=0;
if(f[i].b==-1)t++;
if(i-p<0)j=0;
else j=i-p+1;
for(; j<=i; j++)
if(f[j].a==1&&f[j].b!=-1)cnt++;
ans=max(ans,t+cnt);
}
printf("%d\n",ans);
}
return 0;
}
YTU 2895: H--唱歌的鸟儿的更多相关文章
- Python面向对象 | 初识
一.面向对象编程 类 : 具有相同属性和技能的一类事物 对象: 就是对一个类的具体的描述 实例化:类——>对象的过程 使用面向对象的好处: 使得代码之间的角色关系更加明确 增强了代码的可扩展性 ...
- YTU 2414: C语言习题 字符串排序
2414: C语言习题 字符串排序 时间限制: 1 Sec 内存限制: 128 MB 提交: 656 解决: 305 题目描述 输入n个字符串,将它们按字母由小到大的顺序排列并输出.编写三个函数实 ...
- YTU 2520: 小慧唱卡拉OK
2520: 小慧唱卡拉OK 时间限制: 1 Sec 内存限制: 128 MB 提交: 478 解决: 207 题目描述 小慧唱歌非常好听,小鑫很喜欢听小慧唱歌,小鑫最近又想听小慧唱歌了,于是小鑫请 ...
- 【BZOJ-1449&2895】球队收益&球队预算 最小费用最大流
1449: [JSOI2009]球队收益 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 648 Solved: 364[Submit][Status][ ...
- HDU 2895 编辑距离
#include<stdio.h> #include<iostream> #include<string.h> #include<algorithm> ...
- YTU 2019: 鞍点计算
2019: 鞍点计算 时间限制: 1 Sec 内存限制: 64 MB 提交: 66 解决: 30 题目描述 找出具有m行n列二维数组Array的"鞍点",即该位置上的元素在该行 ...
- YTU 3020: 对称矩阵(数组)
3020: 对称矩阵(数组) 时间限制: 1 Sec 内存限制: 128 MB 提交: 3 解决: 2 题目描述 已知A和B为两个n*n阶的对称矩阵,输入时,对称矩阵只输入下三角行元素,存入一维数 ...
- YTU 3019: 螺旋方阵
3019: 螺旋方阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 2 解决: 2 题目描述 以下是一个5*5阶螺旋方阵.设计一个程序,输出该形式的n*n阶方阵(顺时针方向旋进). ...
- YTU 2335: 0-1背包问题
2335: 0-1背包问题 时间限制: 1 Sec 内存限制: 128 MB 提交: 15 解决: 12 题目描述 试设计一个用回溯法搜索子集空间树的函数.该函数的参数包括结点可行性判定函数和上界 ...
随机推荐
- Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ...
- Web前端静态页面示例
目录结构: Web25\ |—css\ reset.css.common.css.index.css.login.css.reg.css |—js\ jquery-3.3.1.js.index.js. ...
- 四、SQL基础知识--约束和视图
--创建约束的方式 --一.在字段创建时将约束添加到字段之后 CREATE TABLE ZYJ_YUESHU( ZYJ_ID VARCHAR(20) NOT NULL PRIMARY KEY, --创 ...
- hexo干货系列:(四)将hexo博客同时托管到github和coding
前言 之前我们把hexo托管在github,但是毕竟github是国外的,访问速度上还是有点慢,所以想也部署一套在国内的托管平台,之前查资料听说gitcafe,但是听说gitcafe已经被coding ...
- [HNOI2004]宠物收养场(Treap)
洛谷传送门 这题真是恶心,一开始没理解题意. 原来如果有狗,狗就会存在收养场中,直到有人来领养: 如果有人,人也会存在收养场中,直到有狗来被领养. 就是建一个treap,狗来把狗插进去,人来后把狗领养 ...
- hdu4352 XHXJ's LIS(数位DP + LIS + 状态压缩)
#define xhxj (Xin Hang senior sister(学姐)) If you do not know xhxj, then carefully reading the entire ...
- [Bzoj3131][Sdoi2013]淘金(数位dp)(优先队列)
3131: [Sdoi2013]淘金 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 847 Solved: 423[Submit][Status][ ...
- java . 请在小于99999的正整数中找符合下列条件的数,它既是完全平方数,又有两位数字相同,如:144,676。
import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; //请在小于99999的正整数中找符合下列条件的 ...
- ABP每次生成前都执行bundle设置
ABP项目每次编译mvc项目时都会执行bundle,比较耗时. 可以在项目文件(*.csproj)中发现设置了每前生成前执行的命令 <Target Name="PreBuild&quo ...
- tomcat的安装和使用
1.下载最新的tomcat:https://tomcat.apache.org/download-90.cgi 最新版本9.0.2属于beta版本,就没有必要尝鲜踩坑了 使用8.5.24的稳定版本的二 ...