CF10E Greedy Change
- 题意:
CF10E
有一些大到小排列货币 ,每个可以选无限个,最小化凑出 的货币个数。
找到一个最小的hack贪心大到小选的 。
- 结论:
设 为 , 为贪心下每个货币选了的个数,实际上求的是满足和为 的最大字典序。
设 为最优解每个货币选了的个数,实际上求的是个数最少的前提下的最大字典序。
如果存在反例 , 那么 。
-
和 每位互不相同,可以理解为用零散的小的货币拼出一个完整的大货币,恰好不相交。
-
令 的最小和最大非零位为 , 和 的 为相同,第 位大 1。
所以可以枚举最高位的 , 这里 就是前 位 的 加上一个 。 利用 算出 ,再算出 比较。
int n;
cin >> n;
vector<ll> a(n);
for (ll &i : a) cin >> i;
ll ans = INF;
for (int i = 1; i < n; i ++) {
auto G = [=] (int x) {
int cnt = 0;
for (ll i : a)
cnt += x / i, x %= i;
return cnt;
};
int c = a[i - 1] - 1, now = c;
int M = 0;
for (int j = i; j < n; j ++) {
M += now / a[j];
now %= a[j];
ll w = c - now + a[j];
if (M + 1 < G(w))
ans = min(ans, w) ;
}
}
if (ans == INF) cout << -1;
else cout << ans;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?