P4407 [JSOI2009]电子字典】的更多相关文章

题目描述 人们在英文字典中查找某个单词的时候可能不知道该单词的完整拼法,而只知道该单词的一个错误的近似拼法,这时人们可能陷入困境,为了查找一个单词而浪费大量的时间.带有模糊查询功能的电子字典能够从一定程度上解决这一问题:用户只要输入一个字符串,电子字典就返回与该单词编辑距离最小的几个单词供用户选择. 字符串a与字符串b的编辑距离是指:允许对a或b串进行下列“编辑”操作,将a变为b或b变为a,最少“编辑”次数即为距离. 删除串中某个位置的字母: 添加一个字母到串中某个位置: 替换串中某一位置的一个…
传送门 我的哈希打挂了--然而大佬似乎用哈希可以过还跑得很快-- 删除,枚举删哪个字符,记删之后的哈希值存map 插入,相当于在单词里删字符,去对应的map里查找 更改,相当于两个都删掉同一个位置的字符然后相等 //minamoto #include<bits/stdc++.h> #define rint register int #define ull unsigned long long using namespace std; const int N=25; int n,m,len,an…
暴力枚举,然后\(hash\)表判断 复杂度\(O(26 * 20 * n)\) 具体而言 对于操作1:暴力枚举删除 对于操作2:暴力添加,注意添加不要重复 对于操作3:暴力替换,同样的注意不要重复 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define ri register int #define…
题面:洛谷 题解: 做法....非常暴力. 因为要求的编辑距离最多只有1,所以我们直接枚举对那个位置(字符)进行操作,进行什么样的操作,加入/修改/删除哪个字符,然后暴力枚举hash判断即可, #include<bits/stdc++.h> using namespace std; #define R register int #define AC 25 #define ac 10100 #define base 26 #define LL long long #define us unsig…
2786: [JSOI]Word Query电子字典 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 3  Solved: 3[Submit][Status][Web Board] Description 人们在英文字典中查找某个单词的时候可能不知道该单词的完整拼法,而只知道该单词的一个错误的近似拼法,这时人们可能陷入困境,为了查找一个单词而浪费大量的时间.带有模糊查询功能的电子字典能够从一定程度上解决这一问题:用户只要输入一个字符串,电子字典就返回…
1819: [JSOI]Word Query电子字典 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 729  Solved: 238[Submit][Status] Description 人们在英文字典中查找某个单词的时候可能不知道该单词的完整拼法,而只知道该单词的一个错误的近似拼法,这时人们可能陷入困境,为了查找一个单词而浪费大量的时间.带有模糊查询功能的电子字典能够从一定程度上解决这一问题:用户只要输入一个字符串,电子字典就返回与该单词编辑距…
题目: Description 人们在英文字典中查找某个单词的时候可能不知道该单词的完整拼法,而只知道该单词的一个错误的近似拼法,这时人们可能陷入困境,为了查找一个单词而浪费大量的时间.带有模糊查询功能的电子字典能够从一定程度上解决这一问题:用户只要输入一个字符串,电子字典就返回与该单词编辑距离最小的几个单词供用户选择. 字符串a与字符串b的编辑距离是指:允许对a或b串进行下列"编辑"操作,将a变为b或b变为a,最少"编辑"次数即为距离.  删除串中某个位置的字母…
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1819 题意概括 字符串a与字符串b的编辑距离是指:允许对a或b串进行下列“编辑”操作,将a变为b或b变为a,最少“编辑”次数即为距离. 删除串中某个位置的字母: 添加一个字母到串中某个位置: 替换串中某一位置的一个字母为另一个字母: 对于一个待查询字符串,如果它是单词,则返回-1:如果它不是单词,则返回字典中有多少个单词与它的编辑距离为1. 题解 根据输入的单词构建trie,然后大力搜索即可.…
多的不说,直接上代码: 里面涉及的字典文件在这:这是传送门,下载下来以后把该文件放在工程目录下即可 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #define MAX 111111 //最大记录数 struct dict { char *key; char *content; }; //…
正解是trie树...在树上跳来跳去什么的 然而在企鹅qq那题的影响下我写了hash... 添加一个字母到一个串,就相当于另一个串删对应位置上的字母. 改变某个位置上的字母,就相当于两个字符串删掉同一个位置上的字母. 所以要记录的东西也不多..存一下每个串删掉每个位置上的字母后的hash值并排序,然后查询的时候二分一下就行了. 但要注意的是,两个字符串可能有多种编辑方式...比方说字符串cccc,分别删掉四个位置上的字母后得到的都是ccc.. 所以一开始要再去一下重.(要不是老司机提醒我还不知道…