CF1836
A.Destroyer
开个桶记录个数,看满不满足单调不上升即可。
B.Astrophysicists
辛辛苦苦写了这么久的文章就没了????烦死了。
自己做 Virtual Contest 的时候这道题打表打了半天(
20min)才搞定……
题目大意
有 个人, 个金币,每个金币价值 个银币。
良心公司要把这 个金币作为工资分给这 个人,但是没有办法平均分配,良心老板想出了分配规则:
-
由你设定每个人分配的银币数 。
-
你需要保证 。
-
老板会把银币数转化为金币发放,所以想出了以下规则:
-
令 ,如果 ,那么公司会额外花费 个银币以凑出完整的金币(此时花费了 个银币)。
-
反之,会吞掉这 个银币以凑出完整的金币(此时花费了 个银币)。
-
假定最终公司的花费为 个银币。你需要最小化 ,并输出 。
解题思路
如果开始没有思路,那么打表是一个很好的方法。
首先我们可以很轻易的得到一个 的 DP 算法。
设 表示处理到第 个人,一共分配了 个银币公司省下的最多银币。
有转移方程:
其中:
运行后输出 DP 数组,结合 可以很轻易的发现规律:
最终的数组分为两个部分:
-
第一个部分为 ,下标与数值一一对应。
-
第二部分为 不断循环。
现在我们来严谨证明一下。
理想状态下,我们自然是给每一个人分发 个银币,这样就可以吞掉 个银币。
但是可能存在一下两种情况:
-
其实根本没有 个银币,所以全部都分配到 个。所以全部可以吞掉。对应上文中第一部分。
-
还剩下了 个银币。由于我们可以按照一个金币为单位再分配,所以我们只需要关注 的值。
显然,如果把这些银币分给不同的人是不优的,因为破坏了老板吞掉更多人 个银币的美梦。
所以这些银币应该全部分配给一个人,对于答案做出贡献 。
(
化简一下)对应上文中第二部分。
提交记录:https://codeforces.com/contest/1836/submission/211134556
C.k-th equality
注意,注意:
Each input file has at most 5 test cases which do not satisfy A,B,C≤3.
所以, 可以过。
那么考虑顺序枚举 位的数 ,满足的数 应该为一个连续区间,这个可以 解决。
所以区间长度与 判断一下即可。
提交记录:https://codeforces.com/contest/1836/submission/211137329
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App