当时看到这题一脸懵逼,莫名想到了复杂度为O(10000000000*n)的算法,然而肯定会超时(废话)

算法楼上楼下都说的很清楚了

很明显这题是要用每个字母的权值进行排序。然后依次进行赋值。

\(\color{red}\text{注意:不能有前导零,所以要进行特判}\)

看代码吧:

#include<bits/stdc++.h>
using namespace std;
string s[1100];
int n;
struct Node
{
int num,sum;//num表示该数组下标表示的字母,因为排序后会打乱,所以要先记录一下
bool first;//是否首字母
}word[11];//分别表示a,b,c,d,e,f,g,h,i,j
int p[11];//表示a~j分别代表的
bool vis[11];//表示0~9这9个数是否用过
inline bool cmp(Node u,Node v)//按权值排序
{
return u.sum>v.sum;
}
int main()
{
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=10;i++)word[i].num=i;//先赋值
for(int i=1;i<=n;i++)
{
cin>>s[i];
word[s[i][0]-'a'+1].first=1;//首字母
for(int j=0;j<s[i].size();j++)
{
word[s[i][j]-'a'+1].sum+=pow(10,s[i].size()-j);//加权值
}
}
sort(word+1,word+11,cmp);//排序
/*for(int i=1;i<=10;i++)
{
cout<<word[i].num<<" "<<word[i].sum<<" "<<word[i].first<<endl;
}*/
for(int i=1;i<=10;i++)
{
if(word[i].first)//如果它是首字母
{
for(int j=1;j<=9;j++)if(!vis[j])//从1~9中选一个
{
vis[j]=1;//标记为用过
p[word[i].num]=j;//这时记录的东西就很有用了
break;
}
}
else
{
for(int j=0;j<=9;j++)if(!vis[j])//如果不是首字母,那就在0~9中选择
{
vis[j]=1;//标记为用过
p[word[i].num]=j;
break;
}
}
}
/*for(int i=1;i<=10;i++)cout<<p[i]<<" ";
cout<<endl;*/
int ans=0;
for(int i=1;i<=n;i++)
{
int cnt=0;
for(int j=0;j<s[i].size();j++)
{
cnt=cnt*10+p[s[i][j]-'a'+1];//计算当前字符串的值
}
ans+=cnt;//总答案加上
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. react-native ListView使用详解
  2. submit 读取mb52数据
  3. python中使用sub替换字符串中的元素
  4. ffmpeg入门
  5. ArcGIS Server新建主题图服务的步骤
  6. (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明
  7. Extjs中Chart利用series的tips属性设置鼠标划过时显示数据
  8. DNA和纳米(Nano)Fusion技术的发展趋势
  9. 邓_phpcms_数据库
  10. Android通过WebService实现图片的上传和下载(一)
  11. BZOJ_1654_[Usaco2007 Open]City Horizon 城市地平线_扫描线
  12. 用eclipse部署tomcat时出现异常:java.lang.IllegalArgumentException
  13. POJ 1251 Jungle Roads (最小生成树)
  14. C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码
  15. javascript中的onmousewheel事件处理
  16. 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足
  17. tensorflow读取训练数据方法
  18. 高级网络功能(Docker支持的网络定制配置)
  19. linux批量远程多服务器FTP并下载文件的脚本
  20. 解题:CQOI 2017 老C的方块

热门文章

  1. /bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8) centos7
  2. jvm参考(生产使用)
  3. window、BOM、 document、 DOM
  4. scapy2 爬取全站,以及使用post请求
  5. 049_指定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录
  6. 富文本编辑器粘贴word
  7. mfc编程之发送wm_paint消息时绘图界面只出现一瞬间
  8. python 导入包
  9. 微信小程序之简单记账本开发记录(二)
  10. PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句