题目大意:
n m
n:n行字符串(长度<10)
m:m行字符串
结果:去掉m中含有的n中的字符串,返回n中剩余的个数.
解答1:
建立一个字典树,统计节点中1的个数.
#include <stdio.h>
//定义字典树
struct tree
{
tree():bj(0)
{
for(int i=0;i<26;i++)
node[i]=NULL;
}
tree* node[26]; //子节点
int bj; //标识根到该节点是否对应某个字串
}* root;
void update(char* s) //对大小写不敏感,统一转化为小写
{
while(*s) *s|=32,s++;
}
int n,m;
int ans; //保存结果.
char s[11];//输入的字串
//bj为1:插入字串
//bj为0:删除字串
void visit(tree* p,char* s,int bj) //遍历并更新字典树
{
char c=(*s)-'a'; //char类型,可以节省内存
if(p->node[c]) p=p->node[c]; //转移根节点
else
{
if(!bj) return; //要删除的字串不存在
p->node[c]=new tree; //新建一个叶子节点
p=p->node[c];//转移根节点
}
if(s[1]) visit(p,s+1,bj); //递归遍历下一个字符
else
{
if(p->bj!=bj) ans+=(bj? 1:-1);
//若是bj原来是1,现在为0,意味着删除,ans-1
//反之,意味着插入,ans+1
//相同:重复插入或是删除一个已经删除过的
p->bj=bj;
}
}
void release(tree* p)
{
for(int i=0;i<26;i++)
if(p->node[i]) release(p->node[i]);
delete p;
}
int main()
{
freopen("1.1.in","r",stdin);
int i;
while(scanf("%d %d",&n,&m),n) //这么写:输入0表示测试结束
{
root=new tree;
ans=0;
for(i=0;i<n;i++)
{
scanf("%s",s);
update(s);
visit(root,s,1); //插入操作
}
for(i=0;i<m;i++)
{
scanf("%s",s);
update(s);
visit(root,s,0); //删除操作
}
printf("%d\n",ans);
release(root);
}
return 0;
}
解答2:
利用STL中的set.
#include <iostream>
#include <set>
#include <string>
using namespace std;
void update(string& s)
{
for(int i=0;i<s.size();i++)
s[i]|=32;
}
int main()
{
string s;
int n,m;
int ans;
freopen("1.1.in","r",stdin);
int i;
set<string> setStr;
set<string>::iterator ite;
while(cin>>n>>m,n) //这么写:输入0表示测试结束
{
ans=0;
setStr.clear();
for(i=0;i<n;i++)
{
cin>>s;
update(s);
setStr.insert(s);
}
for(i=0;i<m;i++)
{
cin>>s;
update(s);
ite=setStr.find(s);
if(ite!=setStr.end())
setStr.erase(ite);
}
cout<<setStr.size()<<endl;
}
return 0;
}
注:附件中为测试数据
分享到:
相关推荐
《国际大学生程序设计竞赛例题解.三:图论、动态规划算法、综合题专集》是一本专门针对编程竞赛中的重要算法与问题解决策略的书籍。它涵盖了图论、动态规划以及综合题型,这些都是在竞赛中经常遇到并且至关重要的...
本系列丛书包括《ACM国际大学生程序设计竞赛:知识与入门》、《ACM国际大学生程序设计竞赛:算法与实现》、《ACM国际大学生程序设计竞赛:题目与解读》、《ACM国际大学生程序设计竞赛:比赛与思考》等4册,其中《ACM...
国际大学生程序设计竞赛例题解(六) 广东省大学生程序设计竞赛例题解析
### 国际大学生程序设计竞赛教程知识点概览 #### 一、国际大学生程序设计竞赛(ACM/ICPC)概述 - **主办单位**: ACM/ICPC由国际计算机学会(Association for Computer Machinery, ACM)主办,该学会是全球历史最...
第四本:国际大学生程序设计竞赛例题解 4 广东省信息学奥林匹克竞赛试题 2003-2006年 第五本:国际大学生程序设计竞赛例题解 5 广东省大学生程序设计竞赛试题解 2006-2007年 第六本:国际大学生程序设计竞赛例题解...
此资源压缩包分为两卷,此卷为part1。 《ACM国际大学生程序设计竞赛:题目与解读》讲述了ACM国际大学生程序设计竞赛(ACM—...《ACM国际大学生程序设计竞赛:题目与解读》为各类算法配备经典例题及题库,并提供解题思路。
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
《国际大学生程序设计竞赛例题解》是针对ACM(国际大学生程序设计竞赛)和信息学竞赛精心编纂的一份参考资料,尤其适用于广东省大学生程序设计竞赛的参赛者。该资源包含了一系列精选的竞赛题目,旨在帮助参赛者提升...
这个压缩包“国际大学生程序设计竞赛例题解二”显然是一个关于该竞赛的解题集,包含了解决过去竞赛题目的一些策略和方法。 在ICPC中,参赛队伍需要解决一系列复杂的算法问题,在限时内提交正确答案。这些题目通常...
- **国际大学生程序设计竞赛例题解系列**(郭嵩山):提供多种题型的解决方案,帮助学生拓宽解题思路。 - 在线编程平台如ZJU Online Judge、POJ、Codeforces等,提供了丰富的题库供学生练习。 #### 五、训练规范与...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
算法参考资料国际大学生程序设计竞赛例题解数论、计算几何、搜索算法专集
### 国际大学生程序设计竞赛辅导教程知识点概览 #### 一、国际大学生程序设计竞赛简介 - **背景与意义**: - **主办方**:由国际计算机领域历史悠久且颇具权威性的组织——ACM学会(Association for Computer ...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
本系列丛书包括《acm国际大学生程序设计竞赛:知识与入门》、《acm国际大学生程序设计竞赛:算法与实现》、《acm国际大学生程序设计竞赛:题目与解读》、《acm国际大学生程序设计竞赛:比赛与思考》等4册,其中《acm...
国际大学生程序设计竞赛(ICPC,International Collegiate Programming Contest)是一项全球性的计算机编程赛事,旨在提升大学生的算法设计、问题解决以及团队合作能力。本压缩包“竞赛例题解(六)光盘”包含了该赛事...
本压缩包“国际大学生程序设计竞赛例题解”包含了图论、动态规划以及综合题目的例题解析,是参赛者或对算法感兴趣的学者宝贵的参考资料。 首先,我们来探讨图论这一领域。图论是数学的一个分支,主要研究点(顶点)...
2005年》一书,主要为那些准备参加国际大学生程序设计竞赛(ICPC)以及广东省大学生程序设计竞赛的读者提供了过去竞赛中的一些例题以及解题方法。书中不仅包括了国际赛题,还特别针对广东省的比赛提供了解题资源,...