记录编号 162215 评测结果 AAAAAAAAAA
题目名称 看球的巴士 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.065 s
提交时间 2015-05-15 13:57:59 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
using namespace std;
int n,d,a[2502],geshu;
char s[3];
int f[2502],p[2502],c[2501];
int main()
{
	freopen("iinput.in","r",stdin);
	freopen("iinput.out","w",stdout);
    cin>>n>>d;
    for(int i=1;i<=n;++i)
    {
      cin>>s;
      if(s[0]=='H')
        {       a[i]=1;
               for(int j=i;j>=1;--j)
                {
		          if(a[j]==1)
                    if(f[i]<f[j]+1)
                     f[i]=f[j]+1;
		          if(p[i]<p[j])
		            p[i]=p[j];
		        }
        }
      else
        {     a[i]=2;
              for(int j=i;j>=1;--j)
               {
		        if(a[j]==2)
                   if(p[i]<p[j]+1)
                      p[i]=p[j]+1;
		        if(f[i]<f[j])
		           f[i]=f[j];
		       }
     }
  }
  for(int i=1;i<=n;++i)
   {
	if(f[i]==i||p[i]==i||abs(f[i]-p[i])<=d)
	   c[i]=1;
	 else
	 {
	  c[i]=669666;
	  for(int j=1;j<=i;++j)
	   if(abs((f[i]-f[j])-(p[i]-p[j]))<=d||f[i]-f[j]==i-j||p[i]-p[j]==i-j)
	      c[i]=min(c[i],c[j]+1);
	 }
	}
 cout<<c[n]<<endl;
 //system("pause");
}