字典序

使用文件读写操作统计哈利波特英文版中的字母,单词,并按要求输出

我们两清 提交于 2019-12-03 21:00:07
要求如下: 1.将哈利波特英文电子版导入,并统计每个英文字母出现概率(区分大小写),由大到小排序 2.统计该txt 文件中每个单词的个数,并按照要求输出频率最高的几个单词数目 和出现概率 功能1: 输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字典序排列。 功能2: 指定目录,对目录下的每一个文件执行功能1 操作 功能3: 指定文件目录,但是会递归目录下的所有子目录,每个文件执行功能1的操作。 问题: 1.程序如何识别每一个单词: 当出现非字母符号时划分为一个单词,用正则表达式来分割句子, 形成单词; 1 //非单词用来分割单词 2 String [] words = str.split("[^(a-zA-Z)]+"); 2.如何存储单词和后边的数据:使用Map 数组, key值设置为 String 存储单词 ,value 根据需要改变类型 1 //创建哈希表 记录数目 2 Map<String,Integer> map =new HashMap<String,Integer>(); 主要思想: 读取文件内的数据,将数据转换为char类型,区分大小写统计字母个数,于此同时统计字母总个数。 1.使用BufferedReader 读取的缓存流进行读取,将数据添加到字符串缓冲区 StringBuffer 当中,将字符串缓冲区中的数据转换为char类型进行存储

[CSP-S模拟测试]:reverse(模拟)

匿名 (未验证) 提交于 2019-12-03 00:11:01
题目传送门(内部题56) 输入格式 第一行包含一个整数:$T$,表示数据组数。 接下来$T$行,每行包含两个字符串:$a\ b$。 输出格式 对于每组数据,如果存在$c$,输出最长的情况下字典序最大的$c$,否则输出$-1$。 样例 样例输入: 3 AB BA ABA BAB AB ABAA 样例输出: -1 AB AB 数据范围与提示 样例解释: 对于第一组数据,不存在这样的$c$。 对于第二组数据,$AB$以通过第一种操作到$ABA$,$AB$可以通过第二种操作到$BAB$。 对于第三组数据,$AB$不需要操作即可得到$AB$,$AB$进行两次第二种操作即可得到$ABAA$,并且$AB$是长度最长的字典序最小的满足条件的$c$。 数据范围: 对于$10\%$的数据,$1\leqslant |a|<|b|\leqslant 6$; 对于$30\%$的数据,$1\leqslant |a|<|b|\leqslant 12$; 对于$100\%$的数据,$1\leqslant |a|<|b|\leqslant 2,000,1\leqslant T\leqslant 20$,保证$a,b$都是由$A,B$字符组成。 题解 这道题的难点就在于怎么让其字典序问题。 其实,我们根本不用考虑字典序的问题,这可以从两点看出。   $\alpha.$题目和样例解释中都说的是字典序最小

第九讲 背包问题问法的变化

匿名 (未验证) 提交于 2019-12-03 00:03:02
以上涉及的各种背包问题都是要求在背包容量(费用)的限制下求可以取到的最大价值,但背包问题还有很多种灵活的问法,在这里值得提一下。但是我认为,只要深入理解了求背包问题最大价值的方法,即使问法变化了,也是不难想出算法的。 例如,求解最多可以放多少件物品或者最多可以装满多少背包的空间。这都可以根据具体问题利用前面的方程求出所有状态的值(f数组)之后得到。 还有,如果要求的是“总价值最小”“总件数最小”,只需简单的将上面的状态转移方程中的max改成min即可。 下面说一些变化更大的问法。 输出方案 一般而言,背包问题是要求一个最优值,如果要求输出这个最优值的方案,可以参照一般动态规划问题输出方案的方法:记录下每个状态的最优值是由状态转移方程的哪一项推出来的,换句话说,记录下它是由哪一个策略推出来的。便可根据这条策略找到上一个状态,从上一个状态接着向前推即可。 还是以01背包为例,方程为 f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 。再用一个数组g[i][v],设g[i][v]=0表示推出f[i][v]的值时是采用了方程的前一项(也即f[i][v]=f[i-1][v]),g[i][v]表示采用了方程的后一项。注意这两项分别表示了两种策略:未选第i个物品及选了第i个物品。那么输出方案的伪代码可以这样写(设最终状态为f[N][V]): 另外

$Poj1934\\ Trip$ 线性$DP+$搜索

匿名 (未验证) 提交于 2019-12-02 23:51:01
Luogu Description 爱丽丝和鲍伯想去度假,他们每个人都制定了一个参观城市的清单,该地区正好有26个城市,因此它们被编码为小写字母“a”到“z”.清单上可能重复出现某个城市.因为他们想一起旅行,他们必须走同样的路线.他们不想增加城市或改变城市顺序,所以只能从名单上删除一些城市.他们想尽可能多地参观城市.请你将他们两人的清单合成一个清单. Input 输入的第一行包含一个整数,表示测试用例数T(T<=10).每个测试用例有两行:第一行是爱丽丝的列表,第二行是鲍伯的列表.每个列表包含1到80个小写字母. Output 输出所有符合条件的清单,数据保证至少有一种可能的次序,但不超过1000次,按字典序输出.每个测试用例后输出一个空行. Sol 这题的重点才不是DP,是搜索鸭QwQ. So DP求LCS就不讲了 这里要记录所有长度为ans的序列并按照字典序输出 注意到n的范围较小(1,80),所以是可以用枚举+搜索的 怎么搜呢,用到两个辅助数组,a,b a[i][j]表示在序列1的前1到j位中,(i+'a'-1)这个字母出现的最大下标 b[i][j]表示在序列2............(同上) dfs中就只要记录(l1,l2,l,s)表示当前序列1的长度为l1,序列2的长度为l2,待枚举的字母数是l,已经有的字符串s(就是前面枚举的字母形成的字符串鸭) 由于我是字符串白纸

AGC001做题小记

ⅰ亾dé卋堺 提交于 2019-12-02 03:35:24
E. BBQ Hard 题意 给定 $ n $ 和数组 $ A $ , $ B $ , 求: \[ \sum_{i≠j}\dbinom{A_i+A_j+B_i+B_j}{A_i+A_j} \] $ n ≤ 200000 $ , $ A[i], B[i] ≤ 2000 $ 题解 亮点在于模型转化。 考虑坐标平面上的 $ n $ 个点 $ (A_i, B_i) $ , $ \dbinom{A_i+A_j+B_i+B_j}{A_i+A_j} $ 就是从 $ (-A_i, -B_i) $ 走到 $ (A_j, B_j) $ 的方案数。 求和的话只是可以有多个起点而已。DP即可。 注意要去掉 $ (-A_i, -B_i) $ 走到 $ (A_i, B_i) $ 的贡献。 代码 F. Wide Swap 题意 给定 $ 1 $ ~ $ n $ 的一个排列 $ p $ 和整数 $ K $ , 每次可以选择两个数 $ i $ , $ j $ 满足 $ j - i ≥ K $ 且 $ abs(p_i - p_j) = 1 $ , 然后交换 $ p_i $ , $ p_j $ 。 问最小可以得到的字典序。 n ≤ 500000 题解 $ j - i >= K $ 这个限制非常难处理。所以我们转而在 $ p $ 的逆上进行操作。 令 $ q_{p_i} = i $ , 交换的限制就变成了

有趣的数

こ雲淡風輕ζ 提交于 2019-12-01 05:20:40
考虑如何处理字典序的大小问题 可以发现在位数相同时,大小关系便是字典序 i 位数 比 k 字典序小的有取 k 的前 i 位的值减去 10的 i 次方的值 // i > k 的位数时在后面补零即可 首先将 k 从高到低位取出更新前 i 位k 字典序小的 //此时如果前 i 位与 k 相同,则应该判为 k 字典序大 然后继续增加位数,直到比 k 字典序小的个数 == m-1 ///此时如果前 i 位与 k 相同,则应该判为 k 字典序小 来源: https://www.cnblogs.com/Go-and-Fight/p/11658150.html

@codeforces - 1209F@ Koala and Notebook

大兔子大兔子 提交于 2019-11-29 15:50:37
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 点 m 边的无向连通图,每条边的编号按照输入顺序依次为 1, 2, ..., m。 现从 1 号点出发,当经过编号为 i 的边时,将 i 写下来。因为写的数之间没有空隙,所以写下来的所有数最终会连成一个数。 对于每一个除 1 以外的点,当它作为终点时,最终连成的数最小是多少? 输出答案模 10^9 + 7。注意,你应该输出 最小可能的数的余数 ,而不应该是 最小可能的余数 。 Input 第一行包含两个整数 n 和 m (2≤n≤10^5,n−1≤m≤10^5),表示点数与边数。 接下来 m 行,每行两个整数 xi 与 yi,表示第 i 条无向边连接 xi, yi。 保证没有重边。保证图连通。 Output 输出 n - 1 个数字,第 i 个数字表示以 i + 1 为终点的最小可能的数 mod 10^9 + 7。 Examples Input 11 10 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 Output 1 12 123 1234 12345 123456 1234567 12345678 123456789 345678826 @solution@ 首先考虑一条边 u -> v

欧拉图 洛谷P1341 无序字母对

萝らか妹 提交于 2019-11-29 09:57:48
题目链接: https://www.luogu.org/problem/P1341 题意:给你n个无序对(位置可以颠倒),但必须相邻,问能否构造一个长为n+1的字符串,使得包含每个无序对,如果可以,输出字典序最小的字符串 分析:必须包含每个无序对,每个无序对必须相邻,我们可以抽象为图论问题,无序对间连一个无向边,那么问题就转化为一笔画问题了 即能不能在图中找到一个欧拉回路或者欧拉通路 注:欧拉通路:经过图上的每一条边 一开始要先用并查集判断是否联通 无向图判断欧拉回路:度数全为偶数 无向图判断欧拉通路:除了两点为奇数,其余度数全为偶数,存在以该两点为起始点的欧拉通路 有向图判断欧拉通路:入度等于出度 有向图判断欧拉回路:最多有一点入度等于出度+1,最多有一点入度等于出度-1,就会有一条从出度大于入度(没有则等于)的点出发,到达出度小于入度(没有则等于)的点的一条欧拉路径。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int inf=0x3f3f3f3f; const ll mod=1000000007; const int maxn=1e5+7; int mp[200][200]; char in[2]; int du[200],fa[200];//分别用来存储度数和父亲 int

第九讲 背包问题问法的变化

若如初见. 提交于 2019-11-29 09:37:26
以上涉及的各种背包问题都是要求在背包容量(费用)的限制下求可以取到的最大价值,但背包问题还有很多种灵活的问法,在这里值得提一下。但是我认为,只要深入理解了求背包问题最大价值的方法,即使问法变化了,也是不难想出算法的。 例如,求解最多可以放多少件物品或者最多可以装满多少背包的空间。这都可以根据具体问题利用前面的方程求出所有状态的值(f数组)之后得到。 还有,如果要求的是“总价值最小”“总件数最小”,只需简单的将上面的状态转移方程中的max改成min即可。 下面说一些变化更大的问法。 输出方案 一般而言,背包问题是要求一个最优值,如果要求输出这个最优值的方案,可以参照一般动态规划问题输出方案的方法:记录下每个状态的最优值是由状态转移方程的哪一项推出来的,换句话说,记录下它是由哪一个策略推出来的。便可根据这条策略找到上一个状态,从上一个状态接着向前推即可。 还是以01背包为例,方程为 f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} 。再用一个数组g[i][v],设g[i][v]=0表示推出f[i][v]的值时是采用了方程的前一项(也即f[i][v]=f[i-1][v]),g[i][v]表示采用了方程的后一项。注意这两项分别表示了两种策略:未选第i个物品及选了第i个物品。那么输出方案的伪代码可以这样写(设最终状态为f[N][V]): 另外

HBase 系列(七)——HBase 过滤器详解

蓝咒 提交于 2019-11-28 14:46:53
一、HBase过滤器简介 Hbase 提供了种类丰富的过滤器(filter)来提高数据处理的效率,用户可以通过内置或自定义的过滤器来对数据进行过滤,所有的过滤器都在服务端生效,即谓词下推(predicate push down)。这样可以保证过滤掉的数据不会被传送到客户端,从而减轻网络传输和客户端处理的压力。 二、过滤器基础 2.1 Filter接口和FilterBase抽象类 Filter 接口中定义了过滤器的基本方法,FilterBase 抽象类实现了 Filter 接口。所有内置的过滤器则直接或者间接继承自 FilterBase 抽象类。用户只需要将定义好的过滤器通过 setFilter 方法传递给 Scan 或 put 的实例即可。 setFilter(Filter filter) // Scan 中定义的 setFilter @Override public Scan setFilter(Filter filter) { super.setFilter(filter); return this; } // Get 中定义的 setFilter @Override public Get setFilter(Filter filter) { super.setFilter(filter); return this; } FilterBase 的所有子类过滤器如下: 说明