Codeforces Round #774 (Div.2)
A. Square Counting
Description
Luis 有一个长为 的整数序列 ,保证 , 或 ,记 。现在 Luis 丢了这个序列,但是还留下 和 ,求序列中有几个数的值为 。
Solution
明显地,答案就是 ,也就是说,能放下几个 就放下几个 ,剩下的 一定能够将其他数字填充进去,因为 ,而剩下所有数和的最大可能值为 ,不用担心不够填充。
单次询问时间复杂度 。
Code
记得要开 long long
。
B. Quality vs Quantity
Description
有一个长为 的非负整数数列 ,将里面的数涂成红色 或者 蓝色。问是否有可能红色数的数量小于蓝色数的数量且红色数的总和大于蓝色数的总和。
Solution
必须的,我们要把 从小到大排序。每次我们枚举蓝色数的数量 ,为了使红色数的总和尽可能的大,我们令红色数的数量为 ,且取的就是最大的 个数,而蓝色数取的就是最小的 个数,一直枚举到两种颜色有交集,只要出现红色数的总和大于蓝色数的总和即 ,输出 YES
,若一直没有,则输出 NO
。
单次询问时间复杂度 。
Code
依然要开 long long
。
C. Factorials and Powers of Two
Description
定义一个数为 强大的 当其可以被写成 或 的形式()。特别的,。现给出一个正整数 ,问 最少能够拆解为几个不同的强大的数的和。若不能拆解,输出 -1
。
Solution
为了方便,此处定义阶乘的反函数为 。
题目给出的范围为 ,而 ,,其中 ,,所以在数据范围内不同的强大的数有 个。如果我们全部暴力 dfs 肯定是不行的。但是发现阶乘数却只有 个,如果只枚举阶乘数,是可以过的。
事实上,一个自然数 能被 个不同的 的整数幂分解,其中 为 的二进制表示中 的个数。这是显而易见的。于是我们可以枚举阶乘数,将余下的部分求 ,求得每一种方案的分解数,最后去最小值即可。
单次询问时间复杂度为 。
Code
还是要开 long long
。
D~F 题鉴于我太菜了,就不写了,也写不出来。
__EOF__

本文链接:https://www.cnblogs.com/ryanright/p/15972410.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)