Wannafly模拟赛4 D Fancy Signal Translate(字典树)
来源:互联网 发布:hao123网络连接错误 编辑:程序博客网 时间:2024/06/08 19:24
题目链接:https://www.nowcoder.com/acm/contest/16/D
时间限制:1秒 空间限制:131072K
题目描述
FST是一名可怜的小朋友,他很强,但是经常fst,所以rating一直低迷。
但是重点在于,他真的很强!他发明了一种奇特的加密方式,这种加密方式只有OIer才能破解。
这种加密方式是这样的:对于一个01串,他会构造另一个01串,使得原串是在新串中没有出现过的最短的串。
现在FST已经加密好了一个串,但是他的加密方式有些BUG,导致没出现过的最短的串不止一个,他感觉非常懊恼,所以他希望计算出没出现过的最短的串的长度。
但是重点在于,他真的很强!他发明了一种奇特的加密方式,这种加密方式只有OIer才能破解。
这种加密方式是这样的:对于一个01串,他会构造另一个01串,使得原串是在新串中没有出现过的最短的串。
现在FST已经加密好了一个串,但是他的加密方式有些BUG,导致没出现过的最短的串不止一个,他感觉非常懊恼,所以他希望计算出没出现过的最短的串的长度。
输入描述:
一行,一个01串。长度≤105
输出描述:
一行,一个正整数,表示没有出现过的最短串的长度。
示例1
输入
100010110011101
输出
4
解析:一共才1e5个01串,最大长度不超过13, (2^13 - 1) * 13 = 106483 > 1e5,咱可以建立字典树,然后BFS搜最短长度,第一个不能到的深度就是答案
借鉴大牛博客:http://www.cnblogs.com/SCaryon/p/7702224.html
代码:
#include<bits/stdc++.h>using namespace std;char str[100005];typedef struct node{ struct node *n[2]; node() { memset(n, 0, sizeof(n)); }}Q, *T;T root = new node();typedef pair<T, int> P;void Creat(char *s){ T p = root; for(int i = 0; s[i] && i <= 13; i++) { int id = s[i] - '0'; if(p->n[id] == NULL) { p->n[id] = new node(); } p = p->n[id]; }}int Find(){ T p = root; queue<P> q; q.push(make_pair(p, 1)); while(!q.empty()) { P cur = q.front(); q.pop(); T x = cur.first; int k = cur.second; for(int i = 0; i < 2; i++) { if(x->n[i] != NULL) q.push(make_pair(x->n[i], k+1)); else return k; } } return 13;}void F(T S){ if(S == NULL) return ; for(int i = 0; i < 2; i++) { if(S->n[i]) F(S->n[i]); } delete S; S = NULL;}int main(){ scanf(" %s", str); for(int i = 0; str[i]; i++) { Creat(&str[i]); } printf("%d\n", Find()); F(root); return 0;}
阅读全文
0 0
- Wannafly模拟赛4 D Fancy Signal Translate(字典树)
- [NOIP2017模拟]Fancy Signal Translate
- [NOIP模拟]Fancy Signal Translate
- Wannafly模拟赛4
- Wannafly模拟赛5 D Aria(全排列)
- Wannafly模拟赛4 CSum(线段树)
- Wannafly模拟赛 树(dp)
- Wannafly模拟赛4 题解
- newCoder Wannafly挑战赛4:D 树的距离(补)
- Wannafly模拟赛5 D Aria 全排列
- Wannafly模拟赛4 A Laptop (RMQ)
- Wannafly模拟赛4 C Sum(树状数组)
- Wannafly模拟赛4 A Laptop (前缀数组)
- Wannafly模拟赛4:A-Laptop(后缀)
- Wannafly模拟赛3 监视任务(贪心+线段树)
- Wannafly挑战赛4 D 树的距离
- Wannafly模拟赛4 B Distance
- Wannafly模拟赛4 B Distance
- js获取userAgent中操作系统版本
- OkHttp的使用
- 字符串全排列
- 手把手教你玩转Maven
- QT QNetworkDatagram类
- Wannafly模拟赛4 D Fancy Signal Translate(字典树)
- #数据结构
- 例题7-12 旋转游戏(The Rotation Game, Shanghai 2004, UVa1343)
- Java实现传教士与野人过河问题
- p43-3.1(1)
- Python学习笔记:七 银行管理系统
- Google C++命名规范
- Wannafly模拟赛4 CSum(线段树)
- JS五种运算符,运算符的优先级