T1
n=22024 时最优方案为 2,2,⋯,4 此时 λ0=11012 则 λmin≥λ0。对于 λ=11012 构造,令 n=∏pi,pi=nai 其中 p 均为素数。那么问题转化为:
∑ai=1,其中 a>11012 的要单独分组 a≤11012 可以若干个分一组,但是要满足一组内的 ∑a≤11012。
充分性给出贪心构造策略:若存在 ax+ay≤11012 那么将 x 组和 y 组合并成一个新的组,其大小为 a′=ax+ay,若有多个合法的任选两个进行合并,直到不能合并为止,此时一定有组数 m≤2023,即得到一个合法方案。
证明:若 m≥2024,此时考虑 a1≤a2≤a3≤⋯≤am,其中 a1+a2>11012,那么一定有 a2>12024,则 a3,a4,⋯,am 均 >12024 ,那么
∑a=(a1+a2)+(a3+a4+⋯+am)>11012+m−22024≥11012+20222024=1
与 ∑a=1 的条件不符,故 m≤2023。
T6
这个做法抄的 by_chance 的。
令 n=99=4m−1 为顶点数,求最小操作次数使得能够从任意圆排列复原到顺时针 1,2,⋯,n 排列(这等价于任意到任意)。观察答案的上界,定义“劣弧逆序对” (i,j) 为从 i 逆时针走不超过 n−12 步能走到 j,并且放在 i,j 上的数有 ai<aj。最终状态劣弧逆序对个数为 0,而交换两个相邻的数劣弧逆序对至多 −1(若交换了 ax,ax−1,分类讨论 ax,ax−1,ax−n+12 三者大小关系即可得证)。从而对于顺时针 n,n−1,n−2,⋯,1 共 (n−1)24 个劣弧逆序对,所以答案的下界是 (n−1)24,现在证明任意圆排列均可以在不超过 (n−1)24 步还原为 1,2,⋯,n。
考虑将环分为大小为 2m−1 和 2m 的两部分,且两部分分别有 m 个 ≤2m 的数(称之为小数,反之为大数),因为对于 [1,2m−1],[2m,4m−2] 如果有其一有 m 个小数,那么即找到合法的解。否则一定其一 <m 个小数,另一 >m 个小数(如果都 <m 那么小数个数 (m−1)+(m−1)+1<2m 矛盾。此时考虑将一个长度为 2m−1 的区间在环上转的过程中,小数个数变化只能是 ±1 或 0,而 <m,>m 个小数的区间均存在,说明一定存在小数个数为 m 的长为 2m−1 的区间。
现在考虑将两段圆弧分别排序,让小数凑在一起,大数凑在一起,再将小数内部排序,大数内部排序。假设圆弧是分为左右两部分,那么有小数凑在上半部分和大数凑在上半部分两种情况,只需其中一种合法即可。
首先考虑圆弧内部的排序,此时变成直线上的问题,那么最小交换次数就是(严格)逆序对个数,两个方向加起来那就是 01 对个数,所以这部分两种情况的操作总和是 m(m−1)+m2=2m2−m。
再考虑同种数之间的排序,对于较小的数,假设两侧分别是 b1,b2,⋯,bm,c1,c2,⋯,cm,注意到对圆弧内部排序时并不会破坏 b,c 内部的相对顺序,所以两种情况相当于在直线上排序 b1,b2,⋯,bm,c1,c2,⋯,cm 和 c1,c2,⋯,cm,b1,b2,⋯,bm,那么逆序对分为 b,c 内部和 b,c 之间。b,c 之间贡献次数总和一定是 m2,而 b,c 内部最劣情况下是完全逆序,所以此时两种情况的操作总和是 4m(m−1)2+m2=3m2−2m。
同理,对于较大的数,操作次数总和是 2m(m−1)2+2(m−1)(m−2)2+m(m−1)=3m2−5m+2。
那么 (2m2−m)+(3m2−2m)+(3m2−5m+2)=8m2−8m+2=2(4m−2)24=2(n−1)24,说明两种情况至少有一种操作次数 ≤(n−1)24,证毕。
对于 n=4m+1 可以用同样的方式计算证明。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2022-11-28 「题解」Codeforces 1765L Project Manager