http://noi.openjudge.cn/_3.9数据结构之C++STL_1806:词典

题目

1806:词典
总时间限制: 3000ms 内存限制: 65536kB
描述
你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。

输入
首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。输入中出现单词只包括小写字母,而且长度不会超过10。
输出
在输出中,你需要把输入文档翻译成英文,每行输出一个英文单词。如果某个外语单词不在词典中,就把这个单词翻译成“eh”。
样例输入
dog ogday
cat atcay
pig igpay
froot ootfray
loops oopslay

atcay
ittenkay
oopslay
样例输出
cat
eh
loops

分析

不超过100000个词条
文档不超过100000行,每次逐个比对,时间复杂度100000100000超时。
词条建立后排序,每次二分查找,时间复杂度100000
log100000还可以。
用基于平衡二叉树建立的映射词典容器轻松搞定。

二分查找代码

#include <bits/stdc++.h>
using namespace std;
struct str{
string s1,s2;//s1外语,
}s[100010];
int m;
string sx;
void view(string sx){
cout<<sx<<endl;
for(int i=0;i<m;i++)
cout<<s[i].s1<<“\t”<<s[i].s2<<endl;
cout<<endl;
}
bool cmp(str s1,str s2){
return s1.s1<=s2.s1;
}
int main(){
//freopen(“data.cpp”,“r”,stdin);
while(1){
getline(cin,sx);
if(sx.empty())break;
else{
s[m].s2=sx.substr(0,sx.find(" “));
s[m].s1=sx.substr(sx.find(” “)+1,sx.length());
m++;
}
}
//view(“排序前”);
sort(s,s+m,cmp);//排序
//view(“排序后”);
while(cin>>sx&&!sx.empty()){
//cout<<sx<<”\t";
int l=0,r=m-1,mid;//二分查找
while(l<r){//左右没重叠就继续
mid=(l+r)/2;
if(sx<=s[mid].s1)r=mid;//目标值小于等于中间值,在左侧找
else l=mid+1;//否则在右侧找
}
//cout<<l<<“\t”<<r<<endl;
//cout<<“左:”<<s[l].s1<<“,”<<s[l].s2<<“\t右:”<<s[r].s1<<“,”<<s[r].s2<<endl;
if(s[r].s1==sx)cout<<s[r].s2<<endl;
else cout<<“eh\n”;
}
return 0;
}

映射词典容器map代码

#include <bits/stdc++.h>
using namespace std;
string sx;
map<string,string> dic;//基于红黑树建立的映射词典容器
void view(){
cout<<sx<<endl;
for(map<string,string>::iterator it=dic.begin();it!=dic.end();it++)//用迭代器便利词典
cout<first<<“\t”<second<<endl;
cout<<endl;
}
int main(){
freopen(“data.cpp”,“r”,stdin);
while(1){
getline(cin,sx);
if(sx.empty())break;
else{
string s2,s1;
s2=sx.substr(0,sx.find(" “));
s1=sx.substr(sx.find(” “)+1,sx.length());
dic[s1]=s2;//往词典有序插入元素
}
}
view();
while(cin>>sx&&!sx.empty()){
//cout<<sx<<”\t";
if(dic.find(sx)!=dic.end())cout<<dic[sx]<<endl;//能找到该元素就输出对应映射元素
else cout<<“eh\n”;
}
return 0;
}

小结

内容概要:文章基于4A架构(业务架构、应用架构、数据架构、技术架构),对SAP的成本中心和利润中心进行了详细对比分析。业务架构上,成本中心是成本控制的责任单元,负责成本归集与控制,而利润中心是利润创造的独立实体,负责收入、成本和利润的核算。应用架构方面,两者都依托于SAP的CO模块,但功能有所区分,如成本中心侧重于成本要素归集和预算管理,利润中心则关注内部交易核算和获利能力分析。数据架构中,成本中心与利润中心存在多对一的关系,交易数据通过成本归集、分摊和利润计算流程联动。技术架构依赖SAP S/4HANA的内存计算和ABAP技术,支持实时核算与跨系统集成。总结来看,成本中心和利润中心在4A架构下相互关联,共同为企业提供精细化管理和决策支持。 适合人群:从事企业财务管理、成本控制或利润核算的专业人员,以及对SAP系统有一定了解的企业信息化管理人员。 使用场景及目标:①帮助企业理解成本中心和利润中心在4A架构下的运作机制;②指导企业在实施SAP系统时合理配置成本中心和利润中心,优化业务流程;③提升企业对成本和利润的精细化管理水平,支持业务决策。 其他说明:文章不仅阐述了理论概念,还提供了具体的应用场景和技术实现方式,有助于读者全面理解并应用于实际工作中。
内容概要:本文档详细介绍了基于霜冰优化算法(RIME)优化门控循环单元(GRU)融合注意力机制进行多变量时序预测的项目实例。项目旨在通过融合GRU和注意力机制,解决多变量时序数据的高维复杂性和非线性依赖问题,同时引入RIME优化算法实现全局智能参数优化,提高模型训练的稳定性和预测性能。项目涵盖了从数据预处理、模型构建、训练优化到部署应用的完整流程,并提供了详细的代码实现和GUI设计。此外,项目还讨论了多变量时序预测在智能制造、能源管理、智慧城市等多个领域的应用。 适合人群:具备一定编程基础,特别是对深度学习和优化算法有一定了解的研发人员和数据科学家。 使用场景及目标:①通过融合GRU和注意力机制,提升多变量时序数据的预测精度;②利用RIME优化算法解决模型训练中易陷入局部最优的问题,提高训练效率和模型泛化能力;③通过多样化的数据模拟技术增强模型泛化能力,适应复杂工业与城市时序数据的动态特征;④提供完整的开源实现和跨平台数据格式支持,促进学术界和工业界的共享与合作。 阅读建议:此资源不仅提供了代码编写和实现,更注重模型架构设计、优化算法原理及其在实际应用中的表现。因此,在学习过程中应结合理论知识和实践操作,理解模型的工作机制和优化策略,并通过调试代码加深对各个模块的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值