记录编号 |
162215 |
评测结果 |
AAAAAAAAAA |
题目名称 |
看球的巴士 |
最终得分 |
100 |
用户昵称 |
forever |
是否通过 |
通过 |
代码语言 |
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");
}