2010年提高组NOIP第一题如下:
机器翻译-普及第一关模拟
代码如下:
#include<iostream>
#include<cmath>
#include<cstring>using namespace std;
bool Hash[1000005]={0};
int Num[1000005]={0};
int main()
{
int n,m,a,sum=0,Head=0,Tail=0;
cin>>m>>n;
for(int i=0;i<n;++i)
{
cin>>a;
if(Hash[a]) continue;
sum++;
if((Tail-Head+m+1)%(m+1)!=m)
{
Hash[a]=true;
Num[Tail]=a;
Tail=(Tail+1)%(m+1);
}
else
{
Hash[Num[Head]]=false;
Head=(Head+1)%(m+1);
Num[Tail]=a;
Hash[a]=true;
Tail=(Tail+1)%(m+1);
}
}
cout<<sum<<endl;
return 0;
}
已试验,不必担心代码问题!