Atcoder agc006D
Posted denverjin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Atcoder agc006D相关的知识,希望对你有一定的参考价值。
agc006d
题意:给一个序列,现在将其放在一个金字塔的底部,然后每一层比下一层少左右两个数,每一个数是下一层的距离他最近的三个数的平均数。现在要求最上面一个数是什么。
思路:根据去年grq
神仙讲的内容,我们需要首先二分这个最上面的数。
然后呢我们可以根据每一个位置上的数是否大于等于这个最上面的数来把序列变成一个0-1
的。
其中,1
代表这个数大于等于最上面的数。
那么,如果我们求出来的最上面的数是1
,就说明答案其实是大于等于现在二分出的数的,需要将lb
提升。否则需要将rb
下降。
下面就是如何计算0-1
序列答案的问题了。
我们开始找规律。
1
111
01111
0101110 -> 1
0
001
00011
0100110 -> 0
得到结论:
- 如果我们有两个连续的数,那么肯定会有两个竖直向上的和他们一样的列。
- 否则我们的数值斜向上传递,直到中线截止。
那么就可以做了:
我们找到最靠近中间的两个连续的数,如果他们在中线左边,那么就是先向上传递,然后斜向上直接传递到顶,即答案就是他们的值
否则就像第二个例子,只能够传递左侧与之对称的那个数(但是我不知道为什么他就传递不上去了。。。
这样就做完了。
以上是关于Atcoder agc006D的主要内容,如果未能解决你的问题,请参考以下文章
AtCoder AGC004E Salvage Robots (DP)
Atcoder AGC031B Reversi (DP计数)
AtCoder AGC033F Adding Edges (图论)