muti多校-1
HDU 6033
题目要求
参考AC代码
|
|
思路
解对数不等式1<=2^m/10^x<10 解得x=(int)(m*ln(2)/ln(10))
HDU 6034
题目要求
最大映射
给出若干个字符串 期中a-z可以有数字0-25替换 且一一对应 每一个字符串不能含有前导0 并且满足至少有一个字母不出现在首位
替换后每个字符串当成26进制数处理 求最大和
参考AC代码
|
|
思路
node a数组表示对于26个字母 对应的权值 t[0]存放该字母权重的长度 t[1]开始存放权重
开始对于每个字符串 从首位开始遍历 对应len-j的位置++
再对t[1]开始的权重进行转换进制操作 转换成26进制 注意可能在原来t[0]的长度上溢出 实时维护t[0]的长度并且找出maxnlen
数组k表示对26个字母的映射 对数组k排序 cmp针对权重比较
对于前导0的处理:从25开始从尾部遍历 找到第一个未在开头出现(vis数组判断)并且出现次数最小的位置 令该位置为0 把后面的数字
全部左移一位 由于最后一位是0不影响结果所以无需把该位置移到最后
对于1-maxlen 遍历每个位置 对于每个位置遍历0-24(25位置是0无需考虑) 利用k[j]找到从大到小权重对应的字母 用替换的数字基数base该位置大小即可
注意取模操作
HDU 6043
题目要求
Q有n双袜子 每双袜子对应1-n的一个编号且唯一
每天早上Q穿上编号最小的数字 每天晚上脱下 并且把袜子放入篮子里
篮子里的袜子如果等于n-1 Q会把这些袜子洗掉 在第二天的傍晚放回衣柜
问第k天早上穿上袜子的编号是多少
参考AC代码
|
|
思路
用优先队列模拟后打表找规律
发现规律
(n==4)
1234 123 124 123 124···
(n==5)
12345 1234 1235 1234 1235···
若k<=n直接输出
否则减去前n项后 (k-1)/(n-1)找出循环次数
为奇为偶额外判断 若为奇数需特判ans==n-1的情况 此时ans=n