这里给一个智障做法,不会贪心的选手默默流下了眼泪。
容易发现我们会在最后一次经过某个节点的时候捐款,这样考虑捐款的序列 P P P,那么 P P P的每个后缀都是连通的,所需的钱数即为 max ( ∑ j = 1 i − 1 B P j + A P i ) \max(\sum_{j=1}^{i-1}B_{P_j}+A_{P_i}) max(∑j=1i−1BPj+APi)(似乎贪心的做法也要这一步)。
我们考虑二分最后剩下的钱数 d d d,把 A i A_i Ai减去 B i B_i Bi,倒着考虑的话就是判断是否能从一个满足 A A A不大于
Atcoder arc098F
最新推荐文章于 2020-02-17 17:13:23 发布
博客探讨了一种针对Atcoder ARC098F问题的非贪心解法,指出在最后一次通过节点时捐款。通过分析捐款序列P,确定所需捐款最大值。接着,提出二分搜索剩余捐款数d,并利用并查集与可并堆优化的BFS,将时间复杂度降低到O(nlog^2n),但仍然无法达到最优解。
摘要由CSDN通过智能技术生成