P6101 [EER2]出言不逊
看到大家都是暴力枚举,但是其实这道题有数学方法。
首先,很明显,第一次找到一个出现次数最大的字符后,每次都是加上这么多同样的字符,这样才能最快。
假设原串长度为
#include <bits/stdc++.h>
using namespace std;
#define int __int128
int read()
{
int x = 0;
char ch = getchar();
while (ch >= '0' && ch <= '9')
{
x = (x << 1) + (x << 3) + (ch ^ 48);
ch = getchar();
}
return x;
}
void write(int x)
{
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
signed main()
{
string s;
int l, cnt = 0;
cin >> s;
scanf("\n");
l = read();
int now = s.length();
int len = s.length() - 1;
map<char, int> mp;
for (int i = 0; i <= len; i++)
{
mp[s[i]]++;
}
if (now >= l)
{
write(cnt);
puts("");
return 0;
}
cnt++;
int maxn = 0;
for (map<char, int>::iterator it = mp.begin(); it != mp.end(); ++it)
{
if (it->second > maxn)
{
maxn = it->second;
}
}
now += maxn;
int rem = l - now;
int q = ceil(rem * 1.0 / maxn);
q += 2;
int ans = ceil(log2(q * 1.0));
ans--;
cnt += ans;
write(cnt);
puts("");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现