首页 > 其他分享 >单词背诵

单词背诵

时间:2023-09-25 15:12:27浏览次数:38  
标签:cnt int tot 单词 背诵 mp define

P1381 单词背诵

我们发现,前后两个问题完全独立,我们先找出整个序列中共出现了多少个单词,扫一遍即可。

后面的问题就类似于逛画展了,我们只需要用尺取法解决。

英文字母当作下标太麻烦,所以用STL哈希一下。

时间复杂度线性。(刚开始还想着二分,后来发现直接求解就好了)。

#include<iostream>
#include<unordered_map>
#include<cstring>
using namespace std;
#define Ed for(int i=h[x];~i;i=ne[i])
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define Le(i,l,r) for(int i=l;i<=r;++i)
#define Re(i,l,r) for(int i=l;i>=r;--i)
#define L(i,l) for(int i=0;i<l;++i)
#define E(i,l) for(int i=1;i<=l;++i)
#define W(t) while(t--)
#define Wh while

const int N=100010,M=1010;
unordered_map<string,int>mp;
int cnt[M],n,m,a[N];
int calc(int mid){
    memset(cnt+1,0,n*4);
    int ans=N;
    int r=0,tot=0;
    E(l, m){
        Wh(r<m&&tot<mid)
            a[++r]&&!cnt[a[r]]++&&++tot;
        if(r==m&&tot<mid)break;
        ans=min(ans,r-l+1);
        !--cnt[a[l]]&&--tot;
    }
    return ans;
}
int main(){
    #ifndef ONLINE_JUDGE
    freopen("1.in","r",stdin);
    #endif
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n;
    E(i, n){
        string s;
        cin>>s;
        mp[s]=i;
    }
    cin>>m;
    E(i, m){
        string s;
        cin>>s;
        a[i]=mp.find(s)!=mp.end()?mp[s]:0;
    }
    int tot=0;
    E(i, m)
        a[i]&&!cnt[a[i]]++&&++tot;
    cout<<tot<<'\n'<<(tot?calc(tot):0);
    return 0;
}

标签:cnt,int,tot,单词,背诵,mp,define
From: https://www.cnblogs.com/wscqwq/p/17727960.html

相关文章

  • 统计单词数
    题目:[NOIP2011普及组]统计单词数题目描述一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。现在,请你编程实现这一功能,具体要求是:给定一个单词,请你输出它在给定的文章中出现的次数和第一次出现的位置......
  • leet code 58. 最后一个单词的长度
    leetcode58.最后一个单词的长度题目描述给你一个字符串s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例1:输入:s="HelloWorld"输出:5解释:最后一个单词是“World”,长度为5......
  • 不背单词
    ......
  • python实现一个简单的背单词程序
    功能需求给定一个words.txt文档,里面存放单词及其释意,要求编写一个python程序,实现自动背刺功能:程序开始时,首先随机给用户一个单词和其释义,用户自行选择师是否记住该单词,如果选择记住的话,程序会将该单词标记为需要记忆,在接下来的操作中会继续出现这个单词,直到用户不需要记忆为止;如果......
  • 珍惜环境,好好学习,感恩 单词
    珍惜环境,好好学习,感恩  有食物吃,有空调,就好好学习。日子怎么过的,就是有东西吃,有适宜的温度来之不易,就好好学习。   单词学习笔记:什么意思呀?这个意思对应是什么?怎么拼写呢?直背。看课本,拼写读三遍。不会的看课本加深印象。及时巩固。每天10分钟,20分钟。不熟就看书,看正确......
  • 我设计了一个专注背单词的小程序,欢迎交流功能UI设计
    1.名称“必须过”2.主页设计3.分类列表设计4.看亿模块的设计5.听忆模块的设计6.背诵单词模块的设计7.答题模块的设计8.听写模块的设计9.默写模块的设计10.趣味背单词-地鼠模块的设计11.趣味背单词-消消乐模块的设计12.趣味背单词-抓单词模块的......
  • 代码随想录算法训练营第8天| ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 0
    344.反转字符串mydemo--(一次就过)--(成功)classSolution{public:voidreverseString(vector<char>&s){intlen=s.size();chartmp;inti=0;intj=len-1;while(i<j){tmp=s[i];......
  • emacs查找光标处单词
     按下 C-sC-w 搜索光标处的单词(此时应该是“mail”).让我们再试试按下 C-sC-wC-w 会发现可以搜索光标处的多个单词.按下 C-sC-M-y 则表示搜索光标处的字符.类似的,按下 C-M-yC-M-y 会将接下来的两个字符也纳入搜索字符串中.按下 C-M-w 会删除搜索字符串中最......
  • 【Python新手参考】带界面的英文单词计数器
    事情经过昨天晚上用电脑写作文,由于不放心Word的计词器,一时又找不到合适的工具,于是索性自己写了一个。那么为什么要带界面呢?原因是我曾经尝试过input(),但是它不能处理文本中的换行,所以只能将tkinter.Text作为输入框。写完之后我发现这个东西似乎还有点参考价值,故post出来。包含......
  • 在flink-1.17中测试执行流处理版本的单词计数程序时,出现"Exception in thread "Thread
    场景描述采用单作业模式提交作业后发现报错了 报错内容Exceptioninthread“Thread-5”java.lang.IllegalStateException:Tryingtoaccessclosedclassloader.Pleasecheckifyoustoreclassloadersdirectlyorindirectlyinstaticfields.Ifthestacktrace......