2017多校第一场 HDU 6034 Balala Power! 贪心,细节题
来源:互联网 发布:大数据时代安全挑战 编辑:程序博客网 时间:2024/06/16 20:54
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6034
题意:给了N个字符串,字符都是小写的,每一个字符可以对应一个0-25的数字,所有的字符串需要满足,如果字符不相同那么数字也不相同,就是要一一映射。问转换之后,在26进制意义下的和的最大值。
解法:我队很快就想到了利用每个字符相对于位权的贡献去贪心,然后交了几次WA。之后另外一个队友提醒前导0的情况没有考虑到,然后修改了一下,就是把按照贡献排序之后会被标成0的那个字符看一下是否可以出现前导0,不能的话就从小往大找第一个没有被可能成为前导0的数组标记的,然后把那个数放到最后来,把最后一个数倒那个数的一段向上平移就好了。
#include <bits/stdc++.h>using namespace std;typedef long long LL;const int mod = 1e9+7;const int maxn = 1e5+5;string s[maxn];char str[maxn];int mx;vector <vector <int> >num;bool cmp(int x, int y){ for(int i=mx-1; i>=0; i--){ if(num[x][i] < num[y][i]){ return 1; } else if(num[x][i] > num[y][i]){ return 0; } } return 0;}int main(){ int n, ks=0; while(~scanf("%d", &n)) { mx = 0; bool vis[26]={false}; for(int i=0; i<n; i++){ scanf("%s", str); if(str[1]!=0){ vis[str[0]-'a'] = true; } s[i] = str; mx = max(mx, (int)s[i].size()); reverse(s[i].begin(), s[i].end()); } mx += 400; num = vector <vector<int> >(26,vector<int>(mx, 0)); for(int i=0; i<n; i++){ for(int j=0; j<s[i].size(); j++){ num[s[i][j]-'a'][j]++; } } for(auto &i:num){ for(int j=0; j<mx-1; j++){ i[j+1] += i[j]/26; i[j] %= 26; } } int id[26]; for(int i=0; i<26; i++) id[i]=i; sort(id, id+26, cmp); //deal with lead zeros if(id[0]){ for(int i=0; i<26; i++){ if(!vis[id[i]]){ int temp = id[i]; for(int k=i; k>0; k--){ id[k]=id[k-1]; } id[0]=temp; break; } } } //cal score int score[26]; for(int i=0; i<26; i++){ score[id[i]] = i; } LL ans = 0; for(int i=0; i<n; i++){ LL temp = 1; for(auto j:s[i]){ int vv = score[j-'a']; ans = (ans + vv * temp) % mod; temp = (temp * 26) % mod; } } printf("Case #%d: %lld\n", ++ks, ans); } return 0;}
阅读全文
0 0
- 2017多校第一场 HDU 6034 Balala Power! 贪心,细节题
- HDU 6034-(2017多校第一场 Balala Power!)(贪心)
- HDU6034 Balala Power!(贪心,坑!!!)(2017 HDU多校联赛第一场)
- 2017多校联合第一场 1002题 hdu 6034 Balala Power!
- 2017 多校训练第一场 HDU 6034 Balala Power!
- hdu 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!【贪心】
- HDU 6034 Balala Power!【贪心】
- 多校联合赛第一场 Balala Power
- 【2017多校】第一场B题:Balala Power!
- HDU 6034 Balala Power! 排序 贪心
- HDU 6034 Balala Power! (贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- HDU-6034 Balala Power!
- [HDU]-6034 Balala Power!
- Linux基于TCP/IP简单的客户端、服务器通信程序实例
- c++笔记4-类的静态成员
- Pentaho Report Desinger 函数API(中文)
- Linux常用命令
- 【bzoj3261】【最大异或和】可持久化trie树+贪心
- 2017多校第一场 HDU 6034 Balala Power! 贪心,细节题
- 序列化、反序列化与jsoncpp学习
- 测试小故事46:回复(feedback)
- Jetty 的工作原理以及与 Tomcat 的比较
- 20170725 jQuery语法简介
- zabbix3.2.7-server端部署-01
- js程序设计基础
- Spring配置文件之引入命名空间
- RG_4