Codeforces Round #694 (Div. 2)
A
这个题目就是说有一个序列,并且给我们一个除数,我们可以对序列相邻的两项进行合并(也就是用这两个数的和数来替换掉原来的两个数),我们要求出的最大值和最小值。
思路:
最大值很显然就是对原来的序列不做任何的合并,这样原来序列中的所有数的贡献并不会被抵消所以,最小值是要将所产生的贡献尽可能的抵消掉,但是我们只能将相邻的两项相加,所以要使最后的贡献最小,就是将所有的数都加起来保证能够尽可能大的抵消掉所有数对最后结果的贡献,
B
题目就是给我们一个序列每一次在这个序列后面增加个,一直到不能整除为止,求
思路:
很显然每一次在序列后面加的数的和就是被分解的,所以我们只需要统计序列中被分解次数最小的那个数的位置和次数,最后求和的时候,在左边的所有数产生的贡献和就是,在右边的所有数的贡献就是;
C
题目就是说给个人买礼物,给第个人买的礼物只能是之前的礼物,但是所有的个礼物最多只能够买一次,如果不能买礼物的话,可以给第个物品所对应的价格,让我们求出他给朋友准备礼物花的最少的钱是多少。
思路:
很明显我们要让总钱数最小的话,就必须让本来对应的大的收到之前的礼物,所以我们先将进行排序,将价格小的物品优先给序号靠后的人,由于每一个礼物只能买给一个人,所以我们可以用一个下标来记录当前送到了第几个礼物,当的时候,我们就开始直接送钱,因为题目中保证了 所以这样的分配一定是最优的。
D
该题目告诉我们两个数它们的如果是一个完全平方数的话,我们就称它们是相邻的。 现在给我们一个长度为的数组,每一秒数组中的每个元素都被数组中与当前值相邻的所有元素(包括其自身)的乘积所取代。让是每一个的相邻的值,一个数组的美丽度被定义为。现在有次询问,每次都会让我们求出来秒后这个数组的美丽度是多少。
思路:
看到是一个完全平方数,可以想着去推一下式子,因为,所以可以将原式推导为 是一个完全平方数,所以可以写成当且仅当是完全平方数的时候该等式方才成立。那么问题就转化成了将分解质因数,其中每一个因子的幂次都可以被整除也就是,其中都是的倍数。因此我们只需要记录 ,如果说明两数相乘的质因子的幂次都为偶数,是个完全平方数。
用欧拉筛来得到每一个数的最小质因子
在我们得到的时候如果出现了偶数次幂,那么我们后面在判断完全平方数的时候还是会被分解掉,所以我们只需要在出现奇数次幂的时候在的基础上乘上一个
__EOF__

本文链接:https://www.cnblogs.com/Haven-/p/16142900.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)