zoukankan      html  css  js  c++  java
  • Problem C: 机器翻译【stl-队列】

    Problem C: 机器翻译

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 54  Solved: 27
    [Submit][Status][Web Board]

    Description

     小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义 来替换。对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有, 软件就会用它进行翻译;如果内存中没有,软件就会在外存中的词典内查找,查出单词的中 文含义然后翻译,并将这个单词和译义放入内存,以备后续的查找和翻译。 假设内存中有 M 个单元,每单元能存放一个单词和译义。每当软件将一个新单词存入 内存前,如果当前内存中已存入的单词数不超过 M−1,软件会将新单词存入一个未使用的 内存单元;若内存中已存入 M 个单词,软件会清空早进入内存的那个单词,腾出单元来, 存放新单词。 假设一篇英语文章的长度为 N 个单词。给定这篇待译文章,翻译软件需要去外存查找多 少次词典?假设在翻译开始前,内存中没有任何单词。

    Input

     输入文件名为 translate.in,输入文件共 2 行。每行中两个数之间用一个空格隔开。 第一行为两个正整数 M 和 N,代表内存容量和文章的长度。 第二行为 N 个非负整数,按照文章的顺序,每个数(大小不超过 1000)代表一个英文 单词。文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。

    Output

     输出文件 translate.out 共 1 行,包含一个整数,为软件需要查词典的次数。

    Sample Input

    3 7 1 2 1 5 4 4 1

    Sample Output

    5

    HINT

     【输入输出样例 1 说明】 整个查字典过程如下:每行表示一个单词的翻译,冒号前为本次翻译后的内存状况:


    空:内存初始状态为空。


    1. 1:查找单词 1 并调入内存。


    2. 1 2:查找单词 2 并调入内存。


    3. 1 2:在内存中找到单词 1。


    4. 1 2 5:查找单词 5 并调入内存。


    5. 2 5 4:查找单词 4 并调入内存替代单词 1。


    6. 2 5 4:在内存中找到单词 4。


    7. 5 4 1:查找单词 1 并调入内存替代单词 2。


    共计查了 5 次词典。 

     【分析】:观察得此为队列结构,按照题意模拟即可。

    #include<iostream>
    #include<fstream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<set>
    #include<queue>
    using namespace std;
    int n,m;
    queue<long> q;
    int ans;
    bool y[1005];
    int main()
    {
        cin>>m>>n;
        int a;
     for(int i=1;i<=n;i++)
    {
            cin>>a;
            if(y[a]==false)
          {
                q.push(a);
                y[a]=true;
                ans++;
             if(q.size() > m)
              {
                  y[q.front()]=false;
                   q.pop();
              }
         }
     }
          cout<<ans;
     return 0;
     }
    

      

  • 相关阅读:
    iot 表索引dump《2》
    heap表和iot表排序规则不同
    Cannot complete the install because one or more required items could not be found.
    iot表输出按主键列排序,heap表不是
    iot 表主键存放所有数据,且按数据插入顺序排序
    iot表和heap表排序规则不同
    org.eclipse.graphiti.ui.editor.DiagramEditorInput.
    Oracle 排序规则
    perl 异步超时 打印错误
    14.6.3 Grouping DML Operations with Transactions 组DML操作
  • 原文地址:https://www.cnblogs.com/Roni-i/p/7375245.html
Copyright © 2011-2022 走看看