| solved | A | B | C | D | E | F | G | H | I | J | K | L |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 6 / 12 | O | Ø | · | · | · | · | Ø | Ø | · | O | · | O |
- O:比赛时通过
- Ø:赛后通过
- !:比赛时尝试了未通过
- ·:比赛时未尝试
A.The Third Cup is Free
Solved by Tryna.00:06:25(+)
题意: 每3杯咖啡有一杯免费,sort一下。
AC代码
1 |
|
B.wash
Solved by lllllan.(-)
题意: L件衣服,N台洗衣机和M台烘干机,一台机器每次工作只能处理一件衣服,并且都有分别的清洗/烘干时间,问先清洗再烘干,最少需要多少时间洗完并烘干所有的衣服。
思路:
贪心是显而易见的,但是又需要清洗又需要烘干,并且有先后顺序。然后就需要想,可以分别贪心吗? 答案是可以的,先只考虑清洗,列出洗i件衣服分别需要多少时间,然后倒过来将最后清洗的衣服使用用时最短的烘干机,清洗时间短的和烘干时间长的去匹配,其中出现的最大值就是需要的答案。
思考:
为什么可以分开贪心: 烘干机的选择,受清洗机选择的影响是肯定的,但是清洗机的选择,并不受烘干机选择的影响,所以可以先对清洗贪心,列出最优选择之后,再去匹配烘干机。
为什么清洗时间短的去匹配烘干时间长的: 首先如果一件衣服同时选择了清洗时间最短和烘干时间最少的机器,那留给最后一件衣服的就是清洗时间和烘干时间都很长的机器,那时间就边长了。那反向匹配就一定正确吗? (我发现我语言解释不了,读者可以自己想一下,确实是这样的)
具体做法: 将pair<int, int> 插入优先队列,first表示可以用这台机器的时间(若是多次使用,则要等之前使用完成才能再次使用),second表机器工作一次的时间。按从小到达的顺序排好,依次取出清洗第i件衣服。记录下时间,倒序之后,相同操作去处理干燥机。
AC代码
1 |
|
G.Pandaland
Solved by lllllan.(-)
题意: 给定一个无向图,求出其中的最小环。
题解: 之前做到过一次最小环的问题,所以留着了Floyd求最小环的模板,但是报MLE了,反正Floyd的复杂度是不能接受的。办法就是换乘Dijstra,暴力枚举,删除i-j的边,然后求i到j的最短路。
AC代码
1 |
|
H.Engineer Assignment
Solved by Sstee1XD. (-)
题意:有个任务,完成这些任务需要一些领域的知识。有个工程师,每个工程师都有一些自己会的领域。每个工程师只能选择一个任务,若参与这项任务的工程师具备了完成所需的所有知识,这项任务则被完成。问最多能完成几个任务。
题解:题目给的和都很小,所以想到了状压去实现表示前个任务在使用工程师状态下最多能完成的任务个数。在维护状态之前,要额外跑一遍来确定能完成第个任务的方案,用于最后的状态转移。
AC代码
1 |
|
J.Worried School
Solved by Sstee1XD. 2:37(+5)
题意:给你一个学校名,再给你五场区域赛的前名,再给你一场的前名,现在要给他们发一定数量的入围的资格。区域赛以名次优先,名次相同时看它给你的区域赛的顺序,先打的优先获得资格。获得过资格的队伍不会再获得,但仍占排名。分配完区域赛之后,再给剩下的资格。现在只知道总资格数量,不知道怎么分配,问你给你的学校能否进入,不能则输出最小的分配给的资格数量,使得该学校无法进入。
题意:给的数据范围很小,读懂题目了就能暴力循环。
AC代码
1 |
|
L.Daylight Saving Time
Solved by Tryna. 03:18:10(+)
题解: 打表打出每年三月第二个周日和十一月第一个周日
AC代码
1 |
|