tg 67

T1

按下列情况先后讨论即可
(3,3,4),(3,3,2,2),(4,4,2),(4,2,2,2),(2,2,2,2,2)
这样可以尽可能把木棍全部用完,符合贪心策略

如果后面4,2两种木棍共存但是处于N2=N4[0.5,3]的时候,
解方程注意精度

如果N2最后一个不剩,不需要讨论只用2的情况

注意代码顺序!

T2

首先可以把 ai从小到大排序,发现这样并不会改变答案而且简化了问题。
没有什么其他的性质了,直接考虑 dp吧。
考虑每次增量一个左部的点,然后考虑它连出去的两条边,达到的效果就是合并两条路径。
所以我们可以记录路径个数,为了简化计算我们定义路径为有向路径。
fi,j表示考虑前 i 个左部点,形成的有向路径数量是 j 个。
转移可以分两部,第一步是添加 aiai1个右部单点:

dp[i][j]k=0aiai1dp[i1][jk](aiai1k)

第二步是任取两条有向路径合并:

dp[i][j]dp[i][j+1]j(j+1)

时间复杂度 O(n2),我们在第一步转移之后将 dp[i][1] 计入答案。

T3

题意等价于"最大值最小"
发现答案有单调性
直接二分答案

考虑转换成是否可以安排K个点使得mid时间合法
发现还是做不了,考虑进一步转换
存在性找最小值,就是最少安排多少点使得mid时间合法
最后看ans是否大于0

直接树形DP维护这个过程。
对于一棵子树,有可能被完全覆盖了,
也有可能遇到一个叶子深度小于k,这个时候暂时不去覆盖它。
完全覆盖的情况我们记录树根往外延伸的距离。
有叶子没覆盖的情况就记录这个叶子的深度,
这种情况不用记录上个情况的距离,
我们最后是用子树外的点去覆盖它,
这个点从树根延伸出去的距离肯定大于当前的距离。
直接合并子树信息即可。

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