当时看到这题一脸懵逼,莫名想到了复杂度为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;
}

洛谷 题解 CF910C 【Minimum Sum】的更多相关文章

  1. 洛谷 题解 UVA572 【油田 Oil Deposits】

    这是我在洛谷上的第一篇题解!!!!!!!! 这个其实很简单的 我是一只卡在了结束条件这里所以一直听取WA声一片,详细解释代码里见 #include<iostream> #include&l ...

  2. 洛谷 题解 P1600 【天天爱跑步】 (NOIP2016)

    必须得说,这是一道难题(尤其对于我这样普及组205分的蒟蒻) 提交结果(NOIP2016 天天爱跑步): OJ名 编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间 Libre ...

  3. 洛谷题解P4314CPU监控--线段树

    题目链接 https://www.luogu.org/problemnew/show/P4314 https://www.lydsy.com/JudgeOnline/problem.php?id=30 ...

  4. 洛谷 题解 2165 [AHOI2009]飞行棋

    本蒟蒻又来发题解了, 看到这个题目,本蒟蒻直接开始推公式.. 嗯,可以通过弧长,推出弦长(l = 2 * r * cos(90 * l / (r * Π)); 然后对比各条弦长的平方和与直径的平方. ...

  5. 【洛谷P2398】GCD SUM

    题目大意:求 \[\sum\limits_{i=1}^n\sum\limits_{j=1}^ngcd(i,j)\] 题解: 最重要的一步变换在于. \[\sum\limits_{k=1}^n k \s ...

  6. 洛谷题解 P1315 【观光公交】

    这道题很多人都用的模拟(或者暴力),今天我就写一个"标准"的贪心发给大家.(我这段代码差点超时···也差点超内存···) 主要思路:通过贪心求得最小值即可,把加速器用到乘客最多的两 ...

  7. 洛谷题解 CF777A 【Shell Game】

    同步题解 题目翻译(可能有童鞋没读懂题面上的翻译) 给你三张牌0,1,2. 最初选一张,然后依次进行n次交换,交换规则为:中间一张和左边的一张,中间一张和右边一张,中间一张和左边一张...... 最后 ...

  8. 洛谷题解 CF807A 【Is it rated?】

    同步题解 题目 好吧,来说说思路: 1.先读入啦~(≧▽≦)/~啦啦啦 2.判断a[i]赛前赛后是否同分数,如果分数不同,则输出,return 0 . 3.如果同分数,则判断a[i]赛前(或赛后)是否 ...

  9. 洛谷题解 P1138 【第k小整数】

    蒟蒻发题解了 说明:此题我用的方法为桶排(我翻了翻有人用了桶排只不过很难看出来,可能有些重复的,这个题只是作为一个专门的桶排来讲解吧) (不会算抄袭吧 ‘QWaWQ’) 简单来说(会的人跳过就行): ...

随机推荐

  1. jQuery.each(object, [callback])

    jQuery.each(object, [callback]) 概述 通用遍历方法,可用于遍历对象和数组.大理石平台检定规程 不同于遍历 jQuery 对象的 $().each() 方法,此方法可用于 ...

  2. click([[data],fn]) 触发每一个匹配元素的click事件。

    click([[data],fn]) 概述 触发每一个匹配元素的click事件. 这个函数会调用执行绑定到click事件的所有函数.大理石平台精度等级 参数 fnFunctionV1.0 在每一个匹配 ...

  3. HashMap判断键是否为null

    用containsKey(),而不用get(): HashMap中,null可以作为键,这样的键只有一个:可以有一个或多个键所对应的值为null.当get()方法返回null值时,即可以表示HashM ...

  4. Dubbo——基础

    一.分布式基础理论 1.1 什么是分布式系统? “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distributed system)是建立在网络之上的软件系 ...

  5. jmeter如何使用正则表达式,如何提取token等想要的数据

    使用正则表达式,提取你想要的任何数据, 例如要提取响应结果里的token字段及sex字段(响应内容为: "token":"83EEAA887F1D2F1AA1CDA9E1 ...

  6. IE与其他浏览器兼容性问题总结

    1.eval(idName) [问题描述]:IE.safari.Chrome浏览器下都可以使用eval(idName)或getElementById(idName)来取得id为idName的HTML对 ...

  7. PostgreSQL判断一个表是否存在

    postgresql判断一个表是否存在: 方法一: select count(*) from pg_class where relname = 'tablename'; 方法二: select cou ...

  8. 高性能高可用的微服务框架TarsGo的腾讯实践

    conference/2.3 高性能高可用的微服务框架TarsGo的腾讯实践 - 陈明杰.pdf at master · gopherchina/conferencehttps://github.co ...

  9. 17 Flutter仿京东商城项目 保存历史搜索记录 删除历史记录 清空历史记录 长按删除

    Storage.dart import 'package:shared_preferences/shared_preferences.dart'; class Storage{ static Futu ...

  10. LVS+Keepalived小试牛刀

    一.ipvsadm命令1.基本命令操作1.1)添加规则 ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p timeout] [-M netm ...