题目背景

小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。

题目描述

这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。

假设内存中有MM个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入内存前,如果当前内存中已存入的单词数不超过M-1M−1,软件会将新单词存入一个未使用的内存单元;若内存中已存入MM个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。

假设一篇英语文章的长度为NN个单词。给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。

输入输出格式

输入格式:

共22行。每行中两个数之间用一个空格隔开。

第一行为两个正整数M,NM,N,代表内存容量和文章的长度。

第二行为NN个非负整数,按照文章的顺序,每个数(大小不超过10001000)代表一个英文单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

输出格式:

一个整数,为软件需要查词典的次数。

输入输出样例

输入样例#1: 复制

3 7
1 2 1 5 4 4 1

输出样例#1: 复制

5

本来想用队列来做  但是队列没有find 。。count   只有size然后强行模拟效率及其低下 o(nk)

#include<bits/stdc++.h>
using namespace std;
//input
#define rep(i,x,y) for(int i=(x);i<=(y);++i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m);
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s)
#define LL long long
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define N 10005
#define inf -0x3f3f3f3f
int main()
{int k,n;RII(k,n);int a[N];int len=0;int cnt=0;rep(i,1,n){int x;RI(x);int flag=0;rep(j,1,len)if(a[j]==x)flag=1;//找到了if(flag)continue;if(len<k){a[++len]=x;cnt++;}else if(len==k){cnt++;rep(j,1,len-1)a[j]=a[j+1];a[len]=x;}}
cout<<cnt;return 0;
}

View Code

有一种高效的方法就是用滑动窗孔维护 再加上哈希表 非常推荐!

#include<bits/stdc++.h>
using namespace std;
//input
#define rep(i,x,y) for(int i=(x);i<=(y);++i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m);
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s)
#define LL long long
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define N 1005
#define inf -0x3f3f3f3fint ha[N];
int letter[N];
int main()
{int k,n;RII(k,n);int left=0;int right=0;int cnt=0;rep(i,1,n){int x;RI(x);if(!ha[x]){   cnt++;ha[x]=1;letter[right++]=x;if(right-left>k)ha[ letter[left++] ]=0;}}cout<<cnt;return 0;
}

View Code

还有就是灵活使用STL

之前都不知道vector里面有find

不是专属于vector的    是顺序查找的快捷写法

STL中  set和string自带find   set里的find肯定是二分

STL写法的时间复杂度和第一个一样  但是最好写

要学会灵活使用erase和find

#include<bits/stdc++.h>
using namespace std;
//input
#define rep(i,x,y) for(int i=(x);i<=(y);++i)
#define RI(n) scanf("%d",&(n))
#define RII(n,m) scanf("%d%d",&n,&m);
#define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define RS(s) scanf("%s",s)
#define LL long long
#define REP(i,N)  for(int i=0;i<(N);i++)
#define CLR(A,v)  memset(A,v,sizeof A)
//
#define N 1005
#define inf -0x3f3f3f3f
vector<int>s;
int main()
{int k,n;RII(k,n);int cnt=0;rep(i,1,n){int x;RI(x);if(find(s.begin(),s.end(),x)==s.end()){cnt++;s.push_back(x);if(s.size()>k)s.erase(s.begin());}}cout<<cnt;return 0;
}

View Code

转载于:https://www.cnblogs.com/bxd123/p/10509947.html

P1540 机器翻译 模拟相关推荐

  1. 浴谷P1540 机器翻译

    浴谷P1540 机器翻译 #include<bits/stdc++.h> using namespace std; int m; int n; queue<int> memor ...

  2. TZOJ 4813 机器翻译(模拟数组头和尾)

    描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先在内存中查找这 ...

  3. P1540 机器翻译

    题目链接 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词 ...

  4. 洛谷——P1540 机器翻译

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...

  5. 可由一个尾指针唯一确定的链表有_L2数据结构第08课 单向链表和循环链表

    L2-数据结构-第08课 单向链表和循环链表 线性表 线性表是一种常用的数据结构,其中的每一个元素(结点)都有唯一的前驱和唯一的后续.当然,第一个元素只有后续,最后一个元素只有前驱. 线性表一般分为& ...

  6. 洛谷【数据结构1-1】线性表

    P3156 [深基15.例1]询问学号 传送门 题目描述 有 n(n≤2×1^6) 名同学陆陆续续进入教室.我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出.上课了,老师想知道第 ...

  7. 重走长征路---OI每周刷题记录---11月4日 2013

    总目录详见https://blog.csdn.net/mrcrack/article/details/84471041 做题原则,找不到测评地址的题不做.2018-11-28 重走长征路---OI每周 ...

  8. lotus表单域怎么获取视图结果_翻译案例 | 商业推广类文章怎么翻?如何修改译文?...

    请点击上方Multilingual俱乐部 订阅 Lotus 中英法口笔译 | 语言爱好者 | 吐槽少女 法国巴黎高翻笔译硕士,在法国度过了四年时光,对法语和牛角包满怀热爱. 很多关注我们的朋友对翻译这 ...

  9. NOIP大纲整理:(零)历年2000-2016NOIP提高组题目分析

    年份 题目名称 考查内容 难度   2000-2016年NOIP提高组复赛题目 2000-A 进制转换 初等代数,找规律 ★ 2000-B 乘积最大 资源分配DP ★★★ 2000-C 单词接龙 DF ...

最新文章

  1. django学习教程
  2. 一篇文章搞定Python全部基础知识
  3. 扩展webupload插件,增加ui界面
  4. 汤家凤高等数学基础手写笔记-极限与连续
  5. 若只让我推荐一名LiveVideoStackCon上海的讲师,就是他
  6. ejb 2.0 3.0_EJB 3.0注入和查找简介
  7. 前端学习(2432):上午总结
  8. 【名额有限】云开发AI拓展能力等你来体验!
  9. dockerfile拉取python3.7镜像
  10. matlab启动不了jvm,MATLAB ::在-nojvm启动选项下不再支持此功能
  11. jsp常用的onchange事件
  12. CCF 201412-1 门禁系统
  13. 乱码ictclas java_中科院分词系统(NLPIR)JAVA简易教程
  14. 0基础学python要多久-零基础学习Python开发需要多长时间?
  15. python穷举法_python 穷举指定长度的密码例子
  16. python相关函数_Python 函数相关概念
  17. ISP模块之色彩增强算法--HSV空间Saturation通道调整
  18. r语言进行自然语言处理_开始进行自然语言处理
  19. Gantt(甘特图)与PERT(项目计划评审技术)图
  20. iphone长截图哪个软件好_这应该是目前为止,iPhone上最好的长截图工具

热门文章

  1. python使用virtualenvwrapper
  2. H3C S1526交换机端口镜像配置
  3. substr 与 substring 的区别
  4. Android Http客户端如何选择?
  5. Javascript中操作cookie
  6. js里面关于IE和万恶的IE6的判断
  7. 未能找到服务器的主机名,未能找到服务器的主机名
  8. 亚太数学建模竞赛优秀论文_全国大学生数学建模竞赛介绍
  9. c语言在单行文本上删除子串,一道比较简单的题——PTA基础编程题目集 7-29 删除字符串中的子串 C语言试解-Go语言中文社区...
  10. 优良中差五个等级英文表达_谈谈英文医学论文的文体特征和翻译技巧