第一届湖南省信息学拔尖创新挑战活动 总结

\(100+85+40+40=265\)

拜谢 T4 放水了暴力多给了 \(20\)。可恶 T2 没给初值为极负值而痛失 \(15\)。愤恨 T3 没想到记搜错过正解。

我是 fw,我叫 fw!

Pro.A

简单题,对怪兽的战斗力从小到大排序,按着这个顺序来打怪就行了,可以证明是最优的。

Pro.B

前缀后缀 \(\max\) 整上,枚举中间值,找左右求即可。

注意一开始的初值要赋值为 \(-\infty\) 啊啊啊啊啊啊啊啊啊!!!!!!!1111111111
——来自丢失的 \(15\)pts 的呐喊。

Pro.C

简单记搜。一开始对 \(a\) 数组转个向,然后按顺序搜,边搜边记,\(dp_{i,j}\) 表示当前考虑前 \(i\) 个物品(转向后的)并且目前所占的容量总和为 \(j\),记录选择的物品个数(方便输出)以及上一个的情况 \(pre\),便于后面求解方案情况的时候回退。

注意在输出 \(0\) 的情况下还要多输出一个换行哟~(贼笑)

Pro.D

没听懂。阿拉啦。


经过一番与老师的激烈争吵询问老师之后懂了。(但是问了好久感觉老师都要无语死了)

还没写但是先记录下思路,防止又突然不会了。

首先根据巴士的路程进行建图,子节点连到父节点,肯定是一张森林。在这张图中,同一节点不同时间算作不同的节点。

于是一棵树的根节点就是那棵树里面时间最大的那个节点。

对于时间不同但是节点相同的节点,我们将其染上相同的颜色。

接下来考虑每种颜色,清空线段树,然后找所有这种颜色的节点,从根节点往下赋值,按照 DFN 序串成序列,然后对一个节点的子树赋值,为这种颜色节点的节点开个 vector 什么的存储一下,然后枚举遍历去赋值即可。用线段树,赋值的就是自身这个节点的时间值。

然后枚举所有查询了终点是这个节点的所有查询,把它们的值算出来即可。


我又不会了。最新问题:

题目不是保证了这些时间节点是互不相同的吗?那这怎么建出树呢?都只有一条边吧?

posted @ 2025-11-09 16:01  嘎嘎喵  阅读(10)  评论(0)    收藏  举报