NOIP2010 提高组 复赛 translate 机器翻译
1.读题,很快弄明题意,单词不在内存中就查字典,统计查字典次数。
2.内存采用队列方式。统计进队列次数,即为查询次数。
3.程序很快编好,两个样例通过,提交20分,重新读题,发现误解题意,清空的不是第一个内存块内容,而是第一个单词内容,修改,两个样例通过,提交20分,发现,反复读题,发现内存容量用的是样例1中的3,马上修改成m,提交AC.
4.心里素质还好,此题读下来,肯定能拿100分的,所以要反复尝试,绝不能跳过,做下一道。
5.有一点要注意,队列要开1000+10。
耗时:35分钟(从拿到题目开始,其中经历两次20分,第三次AC)
附上AC代码,编译环境Dev-C++4.9.9.2
//2010 translate
#include <stdio.h>
int queue[1000+10];//队列
int main(){
int head,tail,cur;
int m,n,v,count;
int i;
scanf("%d%d",&m,&n);
head=0;
tail=0;
count=0;
for(i=0;i<n;i++){
scanf("%d",&v);
cur=head;//遍历队列
while(cur!=tail){
if(queue[cur]==v)
break;
cur++;
}
if(cur==tail){//队列中没找到
//队列容量未到m
if(tail-head<m){
queue[tail]=v;
tail++;
}else{//队列容量已是m
queue[tail]=v;
tail++;
head++;
}
count++;
}else{//队列中找到
//无需查字典,故不进行操作
}
}
printf("%d\n",count);
return 0;
}