HDU 6034 6038

6034:给每个字母26进制的贪心。例如一个字母 c = 7*26^89 + 6*26^50.... 这个字符串有10^5长度。普通的大整数会超时,这里要稀疏这个大数一个pair<int,int> 型即可 (89,7),计算好每一个字母的贡献值,排序。

前导0的处理是,如果要用到0了,说明所有字母都出现了,那么从后往前,如果一个数他贡献值最小而且可以为0,那他就是0;

6038:

时间: 2024-10-16 06:15:41

HDU 6034 6038的相关文章

HDU 6034 Balala Power!(贪心+排序)

Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1411    Accepted Submission(s): 239 Problem Description Talented Mr.Tang has n strings consisting of only lower case characters.

hdu 6034 Balala Power!

题目链接:hdu 6034 Balala Power! 题意: 给你n个字符串,都是包含小写字母,现在让你给a~z赋值0~25,使得这些字符串变成的26进制的数的总和最大. 不能有前导0的情况,他们保证至少有一个字母不出现在第一位. 题解: 每个字符对答案的贡献都可以看作一个 26 进制的数字,问题相当于要给这些贡献加一个 0 到 25 的权重使得答案最大.最大的数匹配 25,次大的数匹配 24,依次类推.排序后这样依次贪心即可,唯一注意的是不能出现前导 0. 前导0的具体处理看代码. 1 #i

Balala Power! HDU - 6034

Balala Power! HDU - 6034 题意:给n个字符串,让你给每一个小写字母赋一个值(0到25),使得所有的字符串的总和最大. 把每一个字符串看作一个26进制的数 先统计每个字母在不同位置出现的次数,然后按出现次数的多少排序,出现的多的自然赋大的值 注意题目要求不能有前导零,所以排序后拍到最后的那个字母如果在某个字符串首位出现过,就要和前面的换一下 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define ll lon

hdu 6034

http://acm.hdu.edu.cn/showproblem.php?pid=6034 首次参加多校训练,不得不说还是太菜了,弱爆了 这个题目在比赛的时候一直在想这个问题,怎么来记录它的权值,然后再用权值排序,想了很久都没能解决这个问题,最后结束了,看了一下题解 发现还是太菜了 题目:给你一些字符串,每个字符用0-25进行替换,要求转换成26进制后,总和最大 思路:首先转换成26进制也就是在位置上乘以26i然后加起来,由此可知字符串前面的字母用大的数字进行替换的话,那么总和加起来就会大,但

2017 Multi-University Training Contest - Team 1 1002&amp;&amp;HDU 6034 Balala Power!【字符串,贪心+排序】

Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 2668    Accepted Submission(s): 562 Problem Description Sample Input 1 a 2 aa bb 3 a ba abc Sample Output Case #1: 25 Case #2: 132

HDU 6034 【贪心】

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6034 题意: 给出 N 个字符串,要求我们对每个字符映射成 0~25中的一个数字,要求最后所有字符串转换为26进制能得到的最大值. 解题思路: 统计每个字符在每一位上得贡献(用数组模拟26进制),然后按照这个模拟得26进制诸位比较, 贪心映射: 但是注意一个点就是不能出现前缀 0  的情况,所以我们要标记哪种字符可以作为前缀0哪种不可以,排序完后处理一下不满足前缀 0 的情况,最后暴力答案即可: AC

HDU 6034 Balala Power! (贪心+坑题)

题意:给定一个 n 个字符串,然后问你怎么给 a-z赋值0-25,使得给定的字符串看成26进制得到的和最大,并且不能出现前导0. 析:一个很恶心的题目,细节有点多,首先是思路,给定个字符一个权值,然后要注意的进位,然后排序,从大到小,给每个字符赋值,如果最后一个出现前导0,就得向前找一个最小的不在首字符的来交换,但不能动了相对的顺序. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <c

HDU 6034 Balala Power!【排序/进制思维】

Balala Power![排序/进制思维] Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 6703    Accepted Submission(s): 1680 Problem Description Talented Mr.Tang has n strings consisting of only lower case cha

HDU 6038 Function(思维+寻找循环节)

http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意:给出两个序列,一个是0~n-1的排列a,另一个是0~m-1的排列b,现在求满足的f的个数. 思路: 先看一下样例吧: 对于这组数来说,假如我们先指定了f(0)对应的在b中的值,那么根据第2个式子,就可以得出f(1),根据f(1)就又可以得出f(2),最后根据f(2)就可以检验f(0)的值是否正确. 这也就是说,对于a中的一个循环节,只要确定了其中一个数所映射的值,那么其它数就都被相应的确定了. 所