码迷,mamicode.com
首页 > 其他好文 > 详细

【Atcoder agc006D】

时间:2019-05-21 21:09:05      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:规律   做了   strong   为什么   底部   距离   中间   根据   例子   

agc006d

题意:给一个序列,现在将其放在一个金字塔的底部,然后每一层比下一层少左右两个数,每一个数是下一层的距离他最近的三个数的平均数。现在要求最上面一个数是什么。

思路:根据去年grq神仙讲的内容,我们需要首先二分这个最上面的数。

然后呢我们可以根据每一个位置上的数是否大于等于这个最上面的数来把序列变成一个0-1的。

其中,1代表这个数大于等于最上面的数。

那么,如果我们求出来的最上面的数是1,就说明答案其实是大于等于现在二分出的数的,需要将lb提升。否则需要将rb下降。

下面就是如何计算0-1序列答案的问题了。

我们开始找规律。

   1
  111
 01111
0101110 -> 1

   0
  001
 00011
0100110 -> 0

得到结论:

  • 如果我们有两个连续的数,那么肯定会有两个竖直向上的和他们一样的列。
  • 否则我们的数值斜向上传递,直到中线截止。

那么就可以做了:

我们找到最靠近中间的两个连续的数,如果他们在中线左边,那么就是先向上传递,然后斜向上直接传递到顶,即答案就是他们的值

否则就像第二个例子,只能够传递左侧与之对称的那个数(但是我不知道为什么他就传递不上去了。。。

这样就做完了。

【Atcoder agc006D】

标签:规律   做了   strong   为什么   底部   距离   中间   根据   例子   

原文地址:https://www.cnblogs.com/denverjin/p/10902217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!