uestc 1904 樹上的鳥兒

本題是要求最多的鳥的數量,不一定在最後;

所以先把滿足題意的能配對的先確定下來;

然後要開始遍歷查找最大,在便利是在時間段n中進行的,把這個時間段能配對的鳥的數量,和雄鳥沒配對的數量(因爲每到飛走的時間)就是這個時間段總時間;

#include"stdio.h"
#include"string.h"
int a[10006],b[10006];
char str[10006];
int main()
{
 int m,n,i,j,k,sum,max,h;
 scanf("%d",&k);
 while(k--)
 {
  scanf("%d%d",&m,&n);
  memset(b,0,sizeof(b));
  scanf("%s",str);
  for(i=0;i<m;i++)
   a[i]=str[i]-'0';
  for(i=0;i<m;i++)
  {
   if(a[i]==1)
   {
       for(j=i+1;j<=i+n&&j<m;j++)
    if(a[j]==2&&b[j]==0)
    {
     b[i]=1;
     b[j]=1;
     break;
    }
   }
  }
     sum=0;max=0;
  for(i=0;i<m;i++)
  { 
   h=0;
   if(b[i]==1)
    sum++;
   if(i-n<0)
    j=0;
   else
    j=i-n+1;
   for(;j<=i;j++)
   {
    if(a[j]==1&&b[j]==0)
     h++;
   }
   if(max<h+sum)
    max=h+sum;
  }
   printf("%d\n",max);
 }
 return 0;
}


        

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章