T1
题意简述:给定一个序列 ,每次将当前 的第一个元素加入 的末尾然后翻转 ,然后删除 的第一个元素,求最后的 是什么。。
考虑模拟一下这个过程,发现就是奇数次向最后添加,偶数次向开头添加,最后再翻转 次,时间复杂度 。
T2
题意简述:定义两点的距离为 。现在给定 个点,保证坐标两两不同。接下来添加 条边,每条边连接 长度为 。现在求初始状态和添加每条边后图的最小生成树。,保证添加的边合法且不会构成自环。
首先发现带个 复杂度会很危险。于是我们先使用朴素 求出原图最小生成树并找出最小生成树上的边。接下来对于每条添加的边,用 找出两点间的边权的最大值,并看加上这条新边断掉这条最长的边是否更优,如果是就把原来的那条边替换掉,否则维持原状。时间复杂度 。
T3
题意简述:定义两个序列 的权值为 。现在可以任意次数交换 中的两个元素。求 的最小权值以及达到最小权值的最小交换次数。,保证 中元素两两不同, 中元素两两不同。
考虑一对 满足 且 ,考虑交换前后的贡献分别为 ,,做差得到:,故交换后更优,于是把 按照 的顺序放置即可。接下来我们把要交换的数分成两类:一个是两个数放反,另一个是不满足第一类的。显然后一类的每次交换至多归位 个。于是我们按照顺序尝试交换,如果这个数正好跟交换对象是反的,那么交换了 个,显然优;否则每次归位了 个,达到了上界,也是优的。于是我们直接按顺序交换就是对的,时间复杂度 。
T4
题意简述:对于一个 的方阵,其中 可能是任意正整数, 代表 上的数。如果其满足以下要求,则称其为魔法阵:;方阵两条对角线上的数的和不超过 ;从方阵中选出 个格子,这些格子两两不同列且两两不同行,所有选法的 之和相同。求有多少个魔法阵。 组测试数据,。
结论:考虑对第 行赋值一个自然数 ,第 列赋值一个自然数 ,令 ,那么 构成的方阵一定是魔法阵。接下来我们只需考虑对这个东西计数。不难发现对于一个状态,如果 全部减去 , 全部加上 ,构成的方阵完全相同,也就是计算会重复。所以我们要求 即可,因为减去 导致出现负数不合法,加上 最小值不是 不合法。此时 就是 ,然后将所有 减去 。就变成了将至多 个石头分成 个部分,且前 个部分至少有一个为空的方案数。先不考虑后面这部分的要求,方案数即为 ,因为 代表恰好 个石头分成 个部分,我们多用一个板,代表把这个板左边的东西扔掉。然后只需要减掉 ,其实就是先拿 个填到前面,然后对剩下的东西分组。最后的答案就是 。时间复杂度 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】