poj2418map或者字典树
题意:
给你一些串,然后求出每个串出现的概率。
思路:
简单题目,做法也很多,我用字典树做了下,然后又用map做了下,其实这个题目我感觉直接排序一遍之后线性输出应该是最简单最快的(这个没敲),就是只是排序的时间复杂度而已O(n*log(n)*len)字典序的排序时间复杂度记得*len.
字典树829MS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef struct Tree
{
Tree *next[129];
int v;
}Tree;
typedef struct
{
char s[32];
}SS;
Tree root;
SS S[10005];
bool camp(SS a ,SS b)
{
return strcmp(a.s ,b.s) < 0;
}
void BuidTree(char *str)
{
int len = strlen(str);
Tree *p = &root ,*q;
for(int i = 0 ;i < len ;i ++)
{
int id = str[i];
if(p -> next[id] == NULL)
{
q = (Tree *)malloc(sizeof(root));
q -> v = 0;
for(int j = 0 ;j <= 128 ;j ++)
q -> next[j] = NULL;
p -> next[id] = q;
p = p -> next[id];
}
else p = p -> next[id];
}
p -> v ++;
}
int Query(char *str)
{
int len = strlen(str);
Tree * q = &root;
for(int i = 0 ;i < len ;i ++)
{
int id = str[i];
q = q -> next[id];
if(q == NULL) return 0;
}
return q -> v;
}
int main ()
{
int i ,n ,id;
char str[35];
n = id = 0;
for(i = 0 ;i <= 128 ;i ++)
root.next[i] = NULL;
while(gets(str))
{
if(!Query(str))
{
id ++;
int len = strlen(str);
for(int j = 0 ;j <= len ;j ++)
S[id].s[j] = str[j];
}
BuidTree(str);
n ++;
}
sort(S + 1 ,S + id + 1 ,camp);
for(i = 1 ;i <= id ;i ++)
printf("%s %.4lf\n" ,S[i].s ,Query(S[i].s) * 100.0 / n);
return 0;
}
map 1500ms
#include<map>
#include<string>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef struct
{
char s[35];
}SS;
SS S[10005];
map<string ,int>mark;
bool camp(SS a ,SS b)
{
return strcmp(a.s ,b.s) < 0;
}
int main ()
{
mark.clear();
char str[35];
int id = 0 ,n = 0;
while(gets(str))
{
if(mark[str] ++ == 0)
{
int len = strlen(str);
id ++;
for(int i = 0 ;i <= len ;i ++)
S[id].s[i] = str[i];
}
n ++;
}
sort(S + 1 ,S + id + 1 ,camp);
for(int i = 1 ;i <= id ;i ++)
{
printf("%s %.4lf\n" ,S[i].s ,mark[S[i].s] * 100.0 / n);
}
return 0;
}
poj2418map或者字典树的更多相关文章
- 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏感词(UTF-8编码)
前几天写好了字典,又刚好重温了KMP算法,恰逢遇到朋友吐槽最近被和谐的词越来越多了,于是突发奇想,想要自己实现一下敏感词屏蔽. 基本敏感词的屏蔽说起来很简单,只要把字符串中的敏感词替换成"* ...
- [LeetCode] Implement Trie (Prefix Tree) 实现字典树(前缀树)
Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...
- 字典树+博弈 CF 455B A Lot of Games(接龙游戏)
题目链接 题意: A和B轮流在建造一个字,每次添加一个字符,要求是给定的n个串的某一个的前缀,不能添加字符的人输掉游戏,输掉的人先手下一轮的游戏.问A先手,经过k轮游戏,最后胜利的人是谁. 思路: 很 ...
- 萌新笔记——C++里创建 Trie字典树(中文词典)(一)(插入、遍历)
萌新做词典第一篇,做得不好,还请指正,谢谢大佬! 写了一个词典,用到了Trie字典树. 写这个词典的目的,一个是为了压缩一些数据,另一个是为了尝试搜索提示,就像在谷歌搜索的时候,打出某个关键字,会提示 ...
- 山东第一届省赛1001 Phone Number(字典树)
Phone Number Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 We know that if a phone numb ...
- 字典树 - A Poet Computer
The ACM team is working on an AI project called (Eih Eye Three) that allows computers to write poems ...
- trie字典树详解及应用
原文链接 http://www.cnblogs.com/freewater/archive/2012/09/11/2680480.html Trie树详解及其应用 一.知识简介 ...
- HDU1671 字典树
Phone List Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- *HDU1251 字典树
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
随机推荐
- $nextTick解决Vue组件卸载在加载合并的问题
情况是这样的,父子组件都是复选框,点击父组件的复选框,子组件的复选框要显示并全选,取消复选框,子组件隐藏.子组件显隐我用的 v-if ,使用created钩子函数来使子组件处于全选状态. 但是出现的问 ...
- Typescript开发学习总结(附大量代码)
如果评定前端在最近五年的重大突破,Typescript肯定能名列其中,重大到各大技术论坛.大厂面试都认为Typescript应当是前端的一项必会技能.作为一名消息闭塞到被同事调侃成"新石器时 ...
- 关于PHP的表单提交显示
实现功能:html页面,向表单内填入账号.密码:php页面,将填写的账号与密码信息展示出来. demo6.html代码如下: 1 <!DOCTYPE html> 2 <html& ...
- Shell编程中变量用法
1. 变量替换 语法 说明 ${变量名#匹配规则} 从变量开头进行规则匹配,将符合最短的数据删除 ${变量名##匹配规则} 从变量开头进行规则匹配,将符合最长的数据删除,贪婪匹配 ${变量名%匹配规则 ...
- C指针与二维数组
先贴上完整的代码: #include<stdio.h> int main(int argc, char *argv[]){ int a[3] [5]={1,2,3,4,5,6,7,8,9, ...
- CSS篇-dispaly、position、定位机制、布局、盒子模型、BFC
display常用值 参考链接英文参考链接中文 // 常用值 none:元素不显示 inline:将元素变为内联元素,默认 block:将元素变为块级元素 inline-block:将元素变为内联块级 ...
- 仿String()构造器函数 【总结】
需求 实现以下方法: 控制台结果: 需求分析: 首先确定new调用的this和什么对象绑定,如果跟默认返回的对象绑定肯定做不到 [ ] 这样的访问,所以要在构造器内部返回一个包装过的数组 1.leng ...
- KeyError:‘uid' Python常见错误
使用不存在的字典键值 检查字典和要查的内容 如有不正确改正即可
- 【C/C++】面向对象开发的优缺点
原创文章,转发请注明出处. 面向对象开发的优缺点 面向对象开发 是相对于 面向过程开发 的一种改进思路. 由于流水线式的面相过程开发非常直接,高效.在面对一些简单项目时,只需要几百行,甚至是几十行代码 ...
- Python数据分析入门(十六):设置可视化图表的信息
现在我们添加图后,没有指定x轴代表什么,y轴代表什么,以及这个图的标题是什么.因此以下我们通过一些属性来设置一下. 设置线条样式: 使用plot方法:plot方法就是用来绘制线条的,因此可以在绘制的时 ...