AHOI2018 排列

Posted hzoi-cbx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AHOI2018 排列相关的知识,希望对你有一定的参考价值。

首先是那个非常吃shi的题意,想好久一会就能发现题里面的意思是:

  如果某一个数的值为x,那么它必须排在第x个数后面。

  然后我们就可以发现形成了一棵树,第i个数的父亲是i,如果出现了环就说明无解。

  于是原题变成了:给出一棵n+1个节点以0为根的树,选每个数之前必须选他的父亲,第i个数将会对答案造成w×i的贡献,最大化收益。

  显然每次取出权值最小的点会更优,若某个点是当前最小的,那么取出当前点父亲之后,必然会立刻取出当前点。

  于是我们可以将这两个点合并。

  稍微推一下式子,新的点更优的条件是平均数更小。

  在每次合并时考虑父亲对它的贡献即可。

  lojA了,自己oj一直wa,网上说要用long double,然而我开了就会T。。。。。。

  最后发现原来可以避免算平均数的除法爆精,改成乘法。然后就A了。

  顺便为了卡常打了个手写堆。

思路非常好,序列上的问题转化到树上,然后贪心也很神仙

以上是关于AHOI2018 排列的主要内容,如果未能解决你的问题,请参考以下文章

[AHOI2018初中组][二分查找] 分组

bzoj 1800: [Ahoi2009]fly 飞行棋

1800: [Ahoi2009]fly 飞行棋

bzoj1264 [AHOI2006]基因匹配Match 树状数组+lcs

BZOJ 1264 AHOI2006 基因匹配Match 动态规划+树状数组

[HNOI 2018]排列