SDUTOJ Message Flood (STL容器求解)
2014-11-19 23:15
309 查看
//这道题太狗了..一般查找的话,不用想,直接就回超时.于是第一次的想法就是构造字典树+查找..妈 蛋 ,SDUTOJ的内存我怀疑是否够65536K.无论怎么优化,直接MLE,悲剧了.最后还是容器求解吧....醉了..先附上MLE代码.. /*#include<iostream> #include<string.h> #include<stdlib.h> #include<stdio.h> using namespace std; typedef struct trie { int count; struct trie *next[26]; }trie; trie *root; void createtrie(char *s) { int i; int len=strlen(s); trie *p=root,*q; for(i=0;i<len;i++) { int id = s[i]-'a'; if(p->next[id]==NULL) { q=new trie; q->count=1; for(int j=0;j<26;j++) q->next[j]=NULL; p->next[id]=q; p=p->next[id]; } else { p->next[id]->count++; p=p->next[id]; } } p->count=-1; } int findtrie(char *s) { int i; int len=strlen(s); trie *p=root; for(i=0;i<len;i++) { int id=s[i]-'a'; p=p->next[id]; if(p==NULL) return 0; if(p->count==-1) return 1; } return 1; } void deal(trie *t) { for(int i=0;i<26;i++) { if(t->next[i]) deal(t->next[i]); } delete t; } void trans(char *s) { int len=strlen(s); for(int i=0;i<len;i++) { if(s[i]>='A'&&s[i]<='Z') s[i]=s[i]-'A'+'a'; } } int main() { int n,m,i,c,o; char s[11],s1[11]; while(cin>>n) { if(n==0) { break; } cin>>m; c=0; root=new trie; for(o=0;o<26;o++) root->next[o]=NULL; for(i=0;i<n;i++) { cin>>s; trans(s); createtrie(s); } for(i=0;i<m;i++) { cin>>s1; trans(s1); c+=findtrie(s1); } cout<<c<<endl; deal(root); } return 0; }*/ 下面就是容器求解的正确代码。。 #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <set> using namespace std; int main() { int n,m,i,j,len; char s[30]; while(scanf("%d",&n)!=EOF&&n) { set<string>mp;//声明set容器 set<string>::iterator it;//声明set迭代器 scanf("%d",&m); getchar(); for(i=0; i<n; i++) { gets(s); len=strlen(s); for(j=0; j<len; j++) { s[j]=towlower(s[j]); } mp.insert(s);//向set里加入一个元素 } for(i=0; i<m; i++) { gets(s); len=strlen(s); for(j=0; j<len; j++) { s[j]=towlower(s[j]); } if(mp.count(s))//判断容器里是否存在该元素 mp.erase(s);//如果容器里存在该元素,则删除 } printf("%d\n",mp.size());//输出容器内剩余元素个数 } return 0; }
相关文章推荐
- Message Flood sdutoj 1500 (STL map 的使用)
- 算法求解中的变量、数组与数据结构(STL 中的容器)
- STL 慎重选择容器类型
- STL的容器、算法与迭代器
- #516. 「LibreOJ β Round #2」DP 一般看规律 stl容器
- STL序列式容器中删除元素的方法和陷阱 四
- STL容器底层数据结构
- C++ STL — 第6章 STL容器(一)vector
- 对vector等STL标准容器进行排序操作
- STL的6大组件:容器、类属算法、迭代器、函数对象、适配器、分配器。
- STL通用容器之 list 容器
- STL容器选择
- STL容器的实现原理
- Note03--STL容器
- STL中与比较器有关的容器和算法
- STL之标准容器底层实现方式
- 用STL输出顺序容器
- STL容器里存放对象还是指针
- 带你深入理解STL之List容器
- 【C++】STL常用容器总结之九:集合set