R7-07-21 题目总览

我要困死了 我要睡觉 我要睡觉 我是た【数据删除】の
我太菜了,爆爆爆。估分 100/400,实际 75/400。把我给【数据删除】了算了。
顺便说一下,有些时候,我真的觉得这个 md to pdf 转换器的母亲有点【数据删除】。
汉字全部给我转成康熙部首了,我还搞个啥???
T1 study.cpp
TL:1s,ML:512MB
题目大意
在⾼⼀的第⼆个学期的
萧瑞希是⼀位⾼⼀学⽣。对于
⾏动 1 :萧瑞希去上课。如果他去上了课程
的⼀节课,那么他对课程 的理解程度会增加 。 ⾏动 2 :萧瑞希不去上课。他转⽽选择任意⼀⻔课,并且⾃学选中的那⻔课。如果他选中了课程
进⾏了时⻓为⼀课时的⾃学,那么他对课程 的理解程度会增加 。
⼀开始,对每⻔课的理解程度都为
给定学期的⻓度,课程的数量,以及对理解程度的提升数值,请写⼀个程序计算在期末考时对每⻔课的理解程度的最⼩值的最⼤可能值。
解答
二分答案,对于当前答案 long long
,把我最后的希望都磨没了。
T2 exam.cpp
TL:1s,ML:512MB
题目大意
华⼆信息组学⽣们集思⼴益,想出了
⼀位组题经验的同学提出,题⽬之间可以强⾏缝合:将任意两道题⽬缝合后,会得到⼀道新的题⽬,其变量数为原来的两题的变量数之和,其关键变量数为原来的两题的关键变量数之和。(注意,是任意两道题⽬都可以缝合,包括同⼀种题⽬的不同版本,以及缝合得到的题⽬都可以⽤于缝合。)缝合之后原来的两个题会消失,新的题加⼊题库。最终的试卷将从题库中选择⼀些题⽬产⽣。
对于⼀道题⽬,其爽度定义为其关键变量数除以其变量数的值。有两个整数序列
根据试卷规范,⼀场模拟赛的总变量数不能超过
解答
相当于是我们要在这
因为题目里面说
可以发现因为总变量数不能超过
并且发现这个性质后后面也好做了。对于每一个
T3 team.cpp
TL:2s,ML:1024MB
题目大意
Yuna 有
⼀个队伍的总能⼒定义为:三⼈中攻击⼒最强的⼈的攻击⼒值、三⼈中防御⼒最强的⼈的防御⼒值、三 ⼈中魔⼒最强的⼈的魔⼒值之和。此外,为了使分⼯明确,Yuna 希望她选出的队伍满⾜每个成员都有⾃⼰的特⻓,即:每个成员都有⼀项能⼒值严格⼤于其他两⼈的对应能⼒值。
在所有符合条件的组队中,Yuna 想要选⼀个总能⼒最强的队伍,请你帮她计算出最⼤的总能⼒值。若 不存在符合条件的队伍,输出 -1。
解答
如果一个人它在团队里属于:含有
这里我开了三个 priority_queue
,分别存目前 vis
数组打标记,然后再给需要删除的 priority_queue
pop
了。然后检测下一个是否已经 vis
了,是的话继续 pop
直到不是或者已经为空了为止。
当当前最大的三个值的下标都不违法的话,那么这三个值加起来就是答案。如果删掉之后只剩下 priority_queue
空了就输出
T4 memory.cpp
TL:2s,ML:512MB
题目大意
你需要维护
- 操作 1:区间
的集合中都插⼊ 。 - 操作 2:设
为区间 的集合的并集中最⼤的数,则对于所有 ,若集合 中存在数 ,集合 中删除恰好⼀个 。 - 操作 3:设
为区间 的集合的并集中最⼤的数,查询 ,若并集为空输出 。
解答
可以使用线段树维护。对于线段树上每一个节点维护一个堆。每一个堆相当于是一个标记永久化了的 lazytag。并且每一个节点维护一个
对于操作 2 的话,就可以先找到那个最大值
- 先把这所有
个区间找到。如果在路上就有堆头为 的,处理那个堆头即可。并且如果 或者 ,记得要把 的部分给插入进去。然后 return
。 - 找到之后,再对它们进行递归。如果当前点有堆头为
的,一样处理。一样 return
。 - 否则如果左儿子里面有
,即 ,那么就继续递归左子树。右子树同理。
势能分析一下就可以得出时间复杂度
总结
T2 没拿到分有一部分原因是题读错了导致没有往背包那方面去想,但更大的原因还是对背包问题的不熟悉。
T3 没有对原题进行认真分析导致那个性质没有被发现。
T4 则是当时想出来了与线段树有关,但是没有对线段树做法进行更深的考虑,以及后面对于势能的分析。
并且有些时候……
- Title: R7-07-21 题目总览
- Author: 11490DX
- Created at : 2025-07-21 23:07:37
- Updated at : 2025-07-21 23:14:38
- Link: https://11490dx.net/2025/07/21/20250721-sum/
- License: This work is licensed under CC BY-NC-SA 4.0.