传送门:cf 510D
给定n个字符串,问能否存在这样的字母表,使得字符串的排序满足字典序。即依据新的字母表,排序满足字典序大小。
假设满足字典序,则我们可以依据已有的字符串得出各字母之间的大小关系,然后通过拓扑排序来判断是否存在可行解,输出任意解,因此只需要判断是否存在解即可。
/***************************************************...
分类:
编程语言 时间:
2015-02-03 09:34:18
阅读次数:
248
题意: 给定m个串,让你找出它们的最长公共子串
思路: 先二分串的长度,枚举该长度的串(可以从第一个串里找),看该长度是否合法,(就是用这个长度的所有串去匹配给定的 第 2 - m 个串 为提高效率,用kmp)然后得到一个最大长度,再在该长度下寻找一个字典序最小的解即可
POJ3450代码(3080类似)
/**********************************...
分类:
其他好文 时间:
2015-02-02 23:16:32
阅读次数:
218
康托展开:给定一个排列(由n个数排列而成),我们可以计算出该排列在由n个数组成的所有排列中排名第几(按字典序),这就是康托展开。比如由4个数1,2,3,4组成排列那么2413在所有的排列中排第几呢?首先计算第一位数字比2小的排列有多少种,即 1 * fac[3],怎么得来的呢?首先比2小的数字只有1...
分类:
其他好文 时间:
2015-02-01 23:14:38
阅读次数:
272
题目:字母'A'~'Z'对应数值1~26,现在给你一个字母表和target,从里面选取5个字母v、w、x、y、z,
使得公式v - w^2 + x^3 - y^4 + z^5 = target成立,找到字典序最大的vwxyz。
分析:简单题、搜索。因为一定选取5个元素,所以直接暴力即可(模拟递归)。
说明:计算时标记取过的字母,避免重复计算。
#include
#...
分类:
其他好文 时间:
2015-01-31 21:55:40
阅读次数:
165
本文汇编了一些常见的字符串算法,包括字符串反转算法、字符串左旋算法、字符串右旋算法、字符串旋转匹配算法、字符串包含算法、字符串删除算法、字符串转整数算法、字符串全排列算法、字符串字典序组合算法等。
分类:
编程语言 时间:
2015-01-30 21:05:31
阅读次数:
355
枚举可重复排列的模板
#include
using namespace std;
int n,m,ans[15];
int a[15];//待排列的数存储在此
bool vis[15];
void dfs(int cnt)//按字典序输出n个数选m个数的所有排列
{
if(cnt==m)
{
for(int i=0;i<m;i++) cout<<ans[i]<<"...
分类:
其他好文 时间:
2015-01-29 21:14:37
阅读次数:
127
题目链接:点击打开链接
题意:
把输入的n个由小写字母构成的字符串连成字典序最小的一句话,使得所有字符串都恰好出现一次且相邻两个字符串相邻的字母相同
思路:
比如abcd,我们认为是这样一条边:a->d
所以我们在a->d间建一条边。
1、如:abcd, dfgh,
那么得到的边就是 a->d, d->h。
而题目的目标是每个字符串恰好用一次,即每条边恰好用一次。也就是找一条欧拉通...
分类:
其他好文 时间:
2015-01-29 14:39:19
阅读次数:
163
原题地址生成字典序,交换 + 逆序生成字典序的方法:1. 从后向前,寻找第一个正序对,即num[i] &num) { 2 int i = num.size() - 2; 3 while (i >= 0 && num[i] >= num[i + 1]) 4 ...
分类:
其他好文 时间:
2015-01-28 17:15:24
阅读次数:
139
题目描述:给出一个词典,找出所有的复合词,即恰好有两个单词连接而成的单词。输入每行都是一个由小写字母组成的单词。输入已按照字典序从小到大排序,且不超过12000个单词。输出所有的复合词按照字典序从小到大排列。
思路:用set存储所有的单词,对于每个单词,遍历所有可能子单词组合,然后判断在set中是否都已经存储,若是则输出该单词。算法复杂度为O(n*lgn*|S|),其中|S|表示单词最大长度。
...
分类:
其他好文 时间:
2015-01-28 14:44:22
阅读次数:
131
题目大意:给出n个字符串,让你求出最长的子串,如果有多个按照字典序顺序输出。
解题思路:将n个字符串连起来,中间需要隔开,然后我们二分枚举字符串的长度,求最长的长度,如果多个需要按照字典序保存起来,最后输出答案就可以了。时间复杂度是:O(n*log(n))。
Life Forms
Time Limit: 5000MS
Memory Limit: 65536K
...
分类:
编程语言 时间:
2015-01-27 16:23:07
阅读次数:
292