Loading

11.19 CW 模拟赛 T1.谁开了小号

算法

嗯, 和赛时做法也是没有一点相似之处, 寄!

挂个 \(\rm{TJ}\)
题解下载


对于暴力, 显然可以用 \(\rm{dfs}\) 实现, 这种 \(\rm{dfs}\) 我还没有见过

大概有个想法, 每次有两种选择, 要么新开集合, 要么从前面加一个进去, 大概就这样, 也比较简单, 剪剪枝小数据包过的


正解做法有些神奇

注意到, 参加了 \(4\) 场比赛的账号必然是一个真人, 那么参加了 \(3, 2, 1\) 场比赛的账号呢?

我们观察到, 分为这几种情况贪心

  • 参加了 \(3\) 场比赛的账号
    最好是参加了另外一个单独比赛的账号为其小号

  • 参加了 \(2\) 场比赛的账号
    最好是参加了另外两场单独比赛的账号加到一起, 要不就搞两个分别单独参加了另外两场比赛的账号

  • 参加了 \(1\) 场比赛的账号
    四个一匹配即可

关于贪心顺序:
感性上理解其实就是先让贡献大的匹配, 如果贡献相同先让不太容易匹配的先匹配

代码

对于每一个点, 记录它参加了哪些比赛, 参加了几场比赛, 然后按照上面的贪心即可
略了

总结

就算现在赛后看到了正解, 差不多我也只能打 \(35 \rm{pts}\) , 乐

这种题不太好搞, 拼天赋?

posted @ 2024-11-19 16:50  Yorg  阅读(23)  评论(0)    收藏  举报