闲扯

今天模拟的题,应该是挺简单的二分和贪心,就是没想出来,我好弱啊

顺便ORZ聚聚BLUESKY007,踩爆我了

思路

今天发现中位数性质如此优秀

二分最后塔顶的数,大于等于它的数变为1,小于它的数变为0,然后发现当有两个相邻的0或1在一起的时候,就会不会被去掉,会向上移动,利用这个性质,可以搞出快速判断的方法

就是找到距离中轴线最近的连续两个0或1,如果是0,就证明小于它的数在塔顶,否则证明大于等于它的数在塔顶,然后二分

注意判断没有任何一组的情况(即01相间),此时最边缘的会在顶端,特判一下

代码

#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int a[200100],n;
bool check(int x){
for(int i=0;i<=n-1;i++){
if((a[n-i]<x&&a[n-i-1]<x)||(a[n+i]<x&&a[n+i+1]<x))
return false;
if((a[n-i]>=x&&a[n-i-1]>=x)||(a[n+i]>=x&&a[n+i+1]>=x))
return true;
}
return a[2*n-1]>=x;
}
int main(){
scanf("%d",&n);
for(int i=1;i<=2*n-1;i++){
scanf("%d",&a[i]);
}
int l=1,r=2*n-1,ans=0;
while(l<=r){
int mid=(l+r)>>1;
if(check(mid))
l=mid+1,ans=mid;
else
r=mid-1;
}
printf("%d\n",ans);
return 0;
}

AGC006D Median Pyramid Hard的更多相关文章

  1. [agc006D]Median Pyramid Hard-[二分+乱搞]

    Description 题目大意:给你一个长度为n*2-1的排列,将除了该序列头尾的两个数外的其他数(设为i)变为原序列i-1,i,i+1下标数的中位数.求最后的数是什么.例子如下: Solution ...

  2. B - Median Pyramid Easy 构造题

    B - Median Pyramid Easy Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statemen ...

  3. 【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)

    题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[], ...

  4. AT2165 Median Pyramid Hard 二分答案 脑洞题

    无论再来多少次也不可能想到的写法. 二分一个最小的顶端值\(k\),大于设为\(1\)小于等于设为\(0\),可以证猜出来(你跟我说这可以?)如果存在两个连在一起的0/1那么它们会一直往上跑,还可以很 ...

  5. AT2165 Median Pyramid Hard

    题目链接:戳我 一看范围1e5,往二分上想. 可是再怎么也没有想到这个神仙的二分答案qwq 我们二分一个数x,设比他大的数为1,小于等于他的数为0.那么我们就可以把原来的那个转化成一个01塔. 然后我 ...

  6. [AGC006] D - Median Pyramid Hard 二分

    Description ​ 现在有一个NN层的方块金字塔,从最顶层到最底层分别标号为1...N1...N. ​ 第ii层恰好有2i−12i−1个方块,且每一层的中心都是对齐的. 这是一个N=4N=4的 ...

  7. [AGC06D] Median Pyramid Hard (玄学)

    Description 现在有一个N层的方块金字塔,从最顶层到最底层分别标号为1...N. 第i层恰好有2i−1个方块,且每一层的中心都是对齐的. 这是一个N=4的方块金字塔 现在,我们首先在最底层填 ...

  8. $AT2163\ Median\ Pyramid\ Easy$ 构造

    正解:构造 解题报告: 传送门$QwQ$ 考虑如果有两个相邻格子是相同数字那么它们以上这两列就都会是这列数字(显然$QwQ$? 所以考虑只要构造出第$n-1$行的中心和中心右侧($or$左侧一样的$Q ...

  9. [atAGC006D]Median Pyramid Hard

    二分答案,考虑答案是否会大于等于这个mid,显然所有数值分为两类:大于等于mid和小于mid将n个数转化为01串,如果0和1不相邻,那么答案就是第一个数/最后一个数(一定会相同),考虑有连续两个0/1 ...

随机推荐

  1. hdu5489 树状数组+dp

    2015-10-06 21:49:54 这题说的是个给了一个数组,然后删除任意起点的一个连续的L个数,然后求最长递增子序列<是递增,不是非递减>,用一个树状数组维护一下就ok了 #incl ...

  2. jQuery选择器--:eq(index)、:lt(index)和:gt(index)

       :eq(index) 概述 匹配一个给定索引值的元素 参数 index  从 0 开始计数    :gt(index) 概述 匹配所有大于给定索引值的元素 参数 index  从 0 开始计数 ...

  3. python 将字节写入文本文件

    想在文本模式打开的文件中写入原始的字节数据 将字节数据直接写入文件的缓冲区即可 >>> import sys >>> sys.stdout.write(b'Hell ...

  4. 转:SQL Server游标的使用

    使用游标步骤:1.在某个查询的基础上声明游标 --声明游标 declare c_Customers cursor for --查询所有店铺客户的客户编号 下面我们来看游标定义的参数: LOCAL和GL ...

  5. SQL 语法速记

    ----------------------------------DML(数据操作语言)---------------------------------- -- 一.INSERT VALUES语句 ...

  6. JS中对象与数组(大括号{}与中括号[])

    一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen",&qu ...

  7. Hadoop学习笔记之一:Hadoop IPC

    因为某些原因需要把前一段时间对Hadoop(版本基于0.20.2)的学习积累搬到这里,成为一个系列.写得会很简单,只为必要时给自己提醒. IPC框架 所有Hadoop协议接口的实现都依赖Hadoop ...

  8. MyBatis中#{ }和${ }的区别,数据库优化遵循层次和查询方法

    MyBatis中#{ }和${ }的区别详解 1.#将传入的数据当成一个字符串,会对自动传入的数据加一个 双引号. 例如order by #id#,如果传入的值是111,那么解析成sql时变为orde ...

  9. 获取微信access_token

    /** * 获取微信access_token * @return mixed */function get_access_token() { $appId = C('APPID'); $secret ...

  10. self asyncio

    import asyncio from threading import Thread import time print('main start:',time.time()) async def d ...