$CH0601\ Genius\ ACM$

ACWing

Description

 给定一个长度为N的数列A以及一个整数T.我们要把A分成若干段,使得每一段的'校验值'都不超过N.求最少需要分成几段.

Sol

首先是校验值的求法:

要使得'每对数的差的平方'之和最大,显然就是先排序,然后取最大和最小为一对,次大和次小为一对.....

然后是问题的转化:求最少分的段数,显然就是确定左端点后,在校验值不超过T的前提下尽量扩展右端点.

优化就在于右端点的扩展,当然就是用倍增辣qwq

还有就是求校验值的优化:可以不用每次都快排,而是先排增加的一段,然后归并就好了

Code

  Wa了inf次,明天重构qwq

Description

 给定一个长度为N的数列A以及一个整数T.我们要把A分成若干段,使得每一段的'校验值'都不超过N.求最少需要分成几段.

Sol

首先是校验值的求法:

要使得'每对数的差的平方'之和最大,显然就是先排序,然后取最大和最小为一对,次大和次小为一对.....

然后是问题的转化:求最少分的段数,显然就是确定左端点后,在校验值不超过T的前提下尽量扩展右端点.

优化就在于右端点的扩展,当然就是用倍增辣qwq

还有就是求校验值的优化:可以不用每次都快排,而是先排增加的一段,然后归并就好了

Code

  Wa了inf次,明天重构qwq

猜你喜欢

转载自www.cnblogs.com/forward777/p/11240241.html
ACM