模拟Canada Cup 2016,ABC三题,Rank1376 第三题卡住了

Codeforces 725 C

求出两个相同字符的位置,记为x和y。

然后考虑把相同的那个字符放在第一行的什么地方,

然后把x+1..y-1的部分一折两半,放在第一行的末尾再折回第二行。

再把1..x-1和y+1..n放下来就可以了。

Codeforces 725 D

题意:有n个队伍,你是第一个队伍的一员,然后你可以把你们队伍拿到的一些气球给其他的队伍,如果一个队伍的气球数量大于他们的质量,那么他们就会被删除。

然后你的排名是比你的队伍获得的气球数量多的队伍的个数\(+1\)。

问你最高能得到怎样的排名。

思路:我们看如果我们把气球给了某个队伍会发生什么。

  • 这个队伍没有被删除,只是多了一些气球。(那还不如不给
  • 这个队伍被删除了,并且我们的队伍少了一些气球。

所以我们给气球的目的是删除队伍,并且要花费最少的代价。

那么我们不断地删除比当前我们队伍气球多的队伍中需要花费最少的代价来删除它的队伍。

然后我们把它干掉,更新答案。

这支队伍可以通过优先队列来维护。

对于每一个气球数量大于我们队伍的队伍,我们都要把他们删除的代价放到优先队列中,并且还要实时更新。

一直到没有气球数量大于我们队伍的时候结束。

05-11 22:23