Codeforces Round #764 (Div. 3)
A. Plus One on the Subset
即为答案。
B. Make AP
假设对进行唯一的操作,那么的值是确定的,修改后的值也可以通过等差数列的性质计算出来,即为,然后就看是否能被整除。
注意是正整数,所以还要加一个判断。
同理,任意一个可行即可。
C. Paint the Array
不妨先将所有数都通过给定操作搞到以内。
现在从大到小枚举,假设枚举到,由于最终要的是一个排列,所以如果中有多个,保留一个即可,其余的都再操作一次;如果没有,由于之前的操作,此时中也没有别的数能够通过操作转换成,无解。
D. Palindromes Coloring
对于一个回文串,两边的字符都出现了两次,如果回文串长度为奇数,那么中间有一个单独的字符。
统计中成对出现的字符的对数,和剩余字符的个数。
先只考虑两边的字符,中间的字符可以后面再加,易得此时最短的回文串长度为。
然后由于要的答案是最小长度,所以没用上的字符对也没必要用,此时,还有个字符没用,这些字符可以作为中间那个单独的字符。
如果,那么就可以给每一个回文穿加上中心。
E. Masha-forgetful
一开始想到后缀数组拼起来然后乱搞(现在想想好像也不可行),写了一半发现了个性质。。。
长度大于等于2的串一定可以由零或多个长度为2和零或多个长度为3的串拼起来。
然后就是简单DP了。
F. Interacdive Problem
二分。
假设现在要猜的区间是,令。
令为大于且最小的的倍数,为,如果操作之前,返回的值不会变;如果操作之前,返回的值会比之前大1。
所以操作之后的范围就会是和其中之一具体是哪一个看返回值是否改变,每次询问可以使的可能取值个数减半。
G. MinOr Tree
最小或生成树。。。
贪心加并查集。。。
首先把权值看成二进制数,然后先将答案置为全1,然后从高到低枚举每一个位,看这个位能不能为0,能为0就把答案的这个位置零。
如何判断一个位是否能为0呢?枚举所有边,看能不能用满足条件的边联通所有点:边的权值的对应位不为1且加入这条边不会使答案变大(即权值或上此时的答案还是答案)。如果可以就说明答案的对应位可以为0。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端