tg 72 solution

tg 72 solution

T1

T1,DP估计所有人都可以推出来

但是,推出来的和值域有关吧?

我就知道死在这里的不止我一个

发现,由于这个x=←x2 的操作

事实上,可以用到的状态数O(nlogx)

证明考虑可达到的数范围关于操作1次数的变化

于是把DP改成记搜/DPstd::map<>就可以过了

注意,如果记搜90 pts,考虑

1.放弃std::map/unordered_map<>手写哈希表

2.放弃记搜,改用DP+std::unordered_map<>加上滚动

3.放弃改形式,特判过

看到题解按着暴力思路定义然后用

T2

做这个题,你需要知道:

首先,看好返回的先后顺序,因为这个东西,我改题异常艰难

其次,会做交互题

有关约数这种东西,首先想到

σ(n)n

(还有就是,这个函数上界n,很松)

于是我们发现,分解成n1才是最优方案

因为σ(1)=1,x.σ(x)x=xσ(1)

所以上述方案一定不劣

考虑最小值

首先需要知道哥德巴赫猜想

(这个没有证明,但是现在计算机已经通过验证表明这个范围的数满足哥猜成立)

通过形式1我们知道最优答案上界是5

通过形式2我们可以给出3/4的偶数构造

然后选择大力分讨,记prime为素数集合

1.n=1\ornprime

这个时候不用分拆

2.2|n

首先,我们看n1

如果n1prime,使用{1,n1}即可构造最优解,为3

否则,通过1+1的形式,我们可以构造出一个4的最优解

事实上似乎较小的那个质数非常小,枚举到1e3左右即可找到合法解

3.2n

我们可以通过1+2构造一个5的解

但是这个解可能不够优,

我们考虑不做拆分的情况即可

构造考虑先减掉一个1

然后奇数的情况就转换成偶数的情况了

然后按照继续分类讨论就结束了

似乎我原来的构造方式有问题就扔掉了

T3

T4

复述题解时间

kk+1的最优集合转变,必然是这样的:
1.新开一段
2.延长一段的两端

证明考虑KM算法证明过程
由于本人不会KM所以请看题解

image

于是我们维护这个贪心需要的东西

第一个是std::set<>维护连续段,第二个std::priority_queue<>维护最优决策

显然两个时间复杂度都是O(nlogn)

posted @   2K22  阅读(21)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示