tg 80 solution

T1

卡掉愚蠢的O(nlogn)做法!
首先玩一个小数据
它长这样:

6 3
abcdef
2 4 6

答案长这样:

febacd

观察一下它的规律:
假设有一个双端队列,一开始是空的
然后把元素依次插入这个队列,
当第i次操作的时候,
如果2i,对于[posi1+1,posi]的部分是从头插入
否则是从尾插入

但是用下发样例的话会发现这个是假的
区别在于是否有2|k
2k的时候上面的那个是对的,
否则就是反过来
当第i次操作的时候,
如果2i,对于[posi1+1,posi]的部分是从尾插入
否则是从头插入

T2

打表好题,可以回去折腾一顿whk同学
首先打一个n=1e5的表
然后会发现第一个生成规律:
y=x3
证明比较简单,直接往回代y分解质因数就好了
然后会发现有些数对不满足这个规律,
比方说(8,30)
然后多打几个就会发现:
如果有(x,y),y=x3
那么计此时x为一条新的链的起点b
然后对于一个新的y的生成规律,有
y=b2yx,(y,y)就是一对合法的数对
发现在n=1e18这个范围以内,每个y仅会在一个数对里出现
于是考虑把所有的y存下来,总共106个这样的y
(因为这玩意y=O(x3),所以至多会有n3个这样的对)
然后每次二分下标找就行了

T3

不知道为什么题解写的最详细的东西是最好理解的东西
更不知道题解为什么把最难理解的东西就用4个字概括......
首先那个最好理解的东西,就是
如果你让aj覆盖i,那么aj=min{ak},k[i,j]
只有所有的操作都满足这个的时候,操作合法
然后你套路性先做个单调栈找出每个点能覆盖的区间

然后考虑DP
fi表示区间已经覆盖完[1,i]的方案数
然后枚举每一个区间,会有这个转移方程:
fifj1+fi,
然后发现这个东西是可以前缀和优化的
于是我们时间复杂度就O(n2)

不用区间DP的原因是:
虽然区间DP感觉很自然,但是时间复杂度下不去
还是要抛弃维护冗余状态的心理
然后上面的东西没有要求左右端点分别位于原位置两侧,是因为这样会算漏

T4

会个非常垃圾的状压,好像还是错的......

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