TIANKENG’s restaurant(Ⅱ) hdu 4886 思维暴力
2017-06-10 22:04
459 查看
TIANKENG’s restaurant(Ⅱ)
Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 130107/65536 K (Java/Others)Total Submission(s): 717 Accepted Submission(s): 257
Problem Description
After improving the marketing strategy, TIANKENG has made a fortune and he is going to step into the status of TuHao. Nevertheless, TIANKENG wants his restaurant to go international, so he decides to name his restaurant in English. For the lack of English skills,
TIANKENG turns to CC, an English expert, to help him think of a property name. CC is a algorithm lover other than English, so he gives a long string S to TIANKENG. The string S only contains eight kinds of letters-------‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’.
TIANKENG wants his restaurant’s name to be out of ordinary, so the restaurant’s name is a string T which should satisfy the following conditions: The string T should be as short as possible, if there are more than one strings which have the same shortest length,
you should choose the string which has the minimum lexicographic order. Could you help TIANKENG get the name as soon as possible?
Meanwhile, T is different from all the substrings of S. Could you help TIANKENG get the name as soon as possible?
Input
The first line input file contains an integer T(T<=50) indicating the number of case.
In each test case:
Input a string S. the length of S is not large than 1000000.
Output
For each test case:
Output the string t satisfying the condition.(T also only contains eight kinds of letters-------‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’.)
Sample Input
3
ABCDEFGH
AAABAACADAEAFAGAH
ACAC
Sample Output
AA
BB
B
看了数据这么长,以为肯定是某个数据结构。。。。
其实并不是。。。。
题意:给一个串,求不是这个串的子串的字典序最小的那个字符串
其实结果最大长度不会超过7,可以想一下长度小于等于7的字符串就已经有8^7种了(只有A~H八种字符),如果一个串的子串这些都包括了,那这个串必然特别长,会超过1000000(估计法。。),所以就只需要暴力一下串就可以了,map复杂度会高一写,可以使用O1的hash,把字符串当做一个八进制数
为了区别A和AA,不同长度的可以分别考虑
#include<bits/stdc++.h>
using namespace std;
int book[5000005];
int main()
{
ios::sync_with_stdio(0);
int T,i,n,j,k;
cin>>T;
string s;
while(T--)
{
cin>>s;
string ans;
int flog=0;
for(i=0;i<6;i++)
{
memset(book,0,sizeof(book));
for(j=0;j+i<s.size();j++)
{
int now=0;
for(k=j;k<=j+i;k++)
{
now=now*8+s[k]-'A';
}
book[now]=1;
}
int up=(int)pow(8,i)*8;
int len=0;
for(j=0;j<up;j++)
{
if(book[j]==0)
{
while(j)
{
ans=(char)('A'+j%8)+ans;
len++;
j/=8;
}
for(;len<=i;len++)
ans='A'+ans;
cout<<ans<<endl;
flog=1;
break;
}
}
if(flog)
break;
}
}
return 0;
}
相关文章推荐
- hdu 4886 TIANKENG’s restaurant(2)(hash+暴力)
- HDU 4886 TIANKENG’s restaurant(Ⅱ)【hash+暴力】
- HDU 4883--TIANKENG’s restaurant【区间覆盖 && 暴力】
- HDU 4886 TIANKENG’s restaurant(Ⅱ) (暴力+Hash)
- HDU 4886 TIANKENG’s restaurant(Ⅱ) ( 暴力+hash )
- hdu 4886 TIANKENG’s restaurant(Ⅱ) (hash)
- 杭电 hdu 5616 Jam's balance【思维】【暴力枚举】
- HDU 4886 TIANKENG’s restaurant(Ⅱ) (哈希)
- hdu 4970 Killing Monsters (思维 暴力)
- hdu 4886 字符串 hash+暴力
- HDU 4883 (BC#2 1001题)TIANKENG’s restaurant(水)
- HDU 4883 TIANKENG’s restaurant (贪心)
- HDU 4883 TIANKENG’s restaurant
- hdu 5556 Land of Farms【思维+暴力枚举+最大独立集】好题!
- HDU 4883 Best Coder Round 2 TIANKENG’s restaurant 题解
- HDU - 5962 Counting Cliques 【思维 + dfs 暴力】
- hdu 4146 Flip Game【思维+暴力】
- 2017多校第8场 HDU 6138 Fleet of the Eternal Throne 思维,暴力
- HDU 4886 TIANKENG’s restaurant(Ⅱ) hash+dfs
- TIANKENG’s restaurant HDU - 4883 (暴力)