洛谷 题解 CF910C 【Minimum Sum】
2024-08-29 05:25:28
当时看到这题一脸懵逼,莫名想到了复杂度为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;
}
最新文章
- react-native ListView使用详解
- submit 读取mb52数据
- python中使用sub替换字符串中的元素
- ffmpeg入门
- ArcGIS Server新建主题图服务的步骤
- (BUG已修改,最优化)安卓ListView异步加载网络图片与缓存软引用图片,线程池,只加载当前屏之说明
- Extjs中Chart利用series的tips属性设置鼠标划过时显示数据
- DNA和纳米(Nano)Fusion技术的发展趋势
- 邓_phpcms_数据库
- Android通过WebService实现图片的上传和下载(一)
- BZOJ_1654_[Usaco2007 Open]City Horizon 城市地平线_扫描线
- 用eclipse部署tomcat时出现异常:java.lang.IllegalArgumentException
- POJ 1251 Jungle Roads (最小生成树)
- C# 中使用 ThoughtWorks.QRCode.dll 生成指定尺寸和边框宽度的二维码
- javascript中的onmousewheel事件处理
- 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足
- tensorflow读取训练数据方法
- 高级网络功能(Docker支持的网络定制配置)
- linux批量远程多服务器FTP并下载文件的脚本
- 解题:CQOI 2017 老C的方块
热门文章
- /bin/sh: warning: setlocale: LC_ALL: cannot change locale (zh_CN.UTF-8) centos7
- jvm参考(生产使用)
- window、BOM、 document、 DOM
- scapy2 爬取全站,以及使用post请求
- 049_指定目录路径,脚本自动将该目录使用 tar 命令打包备份到/data 目录
- 富文本编辑器粘贴word
- mfc编程之发送wm_paint消息时绘图界面只出现一瞬间
- python 导入包
- 微信小程序之简单记账本开发记录(二)
- PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句