这是一篇解题报告

首先,看到标签,考虑二分答案。

我们二分答案(即塔顶的值),把大于或等于这个值的变为1,否则变为0。

很容易发现,如果塔顶的答案是1,那么就说明值可以更大,否则相反。

复制一波样例

   4
454
36454
1637452

因为答案是4,所以我们把3、4、5为答案的情况都拿出来观察一下


3:
0
000
10000
1010001 5:
1
111
10111
1010111 4:
1
101
10101
1010101

很容易想到从左往右一直找,直到找到两个相同的值,并返回这个值。如果没有,那么就看第n项是0还是1,是0则可以,是1则不行

可是会被下面这种情况hack


1
011
00110
0001100

那么会不会是中间往两边的找到的第一组相等的值呢?

发现没有问题,but



   0
010
01010
0101010 0
010
01010
0101010
010101010

可以发现在找不到相同的相邻项时,层数不同,第n项的答案的影响不同。

然后可以发现如果是奇数层,那么塔顶的值就和塔底的第n项相同,否则就不同

然后就做完了qwq

代码如下(注释显示艰辛历程)

#include<bits/stdc++.h>
using namespace std; int n;
int a[400005];
int b[400005]; bool Cheak(int x){
for(int i=1;i<=n*2-1;i++)
b[i]=a[i]>=x;
for(int i=1;i<n;i++){
if(b[n-i]==b[n-i+1])
return b[n-i+1];
if(b[n+i]==b[n+i-1])
return b[n+i-1];
}
if(n&1)
return b[n];
return !b[n];
} int main(){
cin>>n;
for(int i=1;i<=n*2-1;i++)
scanf("%d",&a[i]);
int l=1,r=2*n-1;
int ans=l;
while(l<=r){
int mid=(l+r)>>1;
if(Cheak(mid))
ans=mid,l=mid+1;
else
r=mid-1;
// printf("%d %d\n",l,r);
}
printf("%d\n",ans);
return 0;
}
/*
4
454
36454
1637452 3:
0
000
10000
1010001 5:
1
111
10111
1010111 4:
1
101
10101
1010101 1
011
00110
0001100 qwq hack了 中间往边?
0
100
11001
1110011 中间贡献最大 如果没有相同?
1
101
10101
1010101 0
010
01010
0101010 看中间是否为1。 不对qwq 0
010
01010
0101010
010101010 层数变化会改变ans
F**k
*/

To_Heart—题解——AT2165的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. node.js的包加载机制

    加载一个模块 require('moduleName'); 现在核心模块中加载,如果核心模块中没有,那么就去node_modules目录下去找,核心模块的优先级最高. 如果加载模块式省略了文件的后缀名 ...

  2. Linux_软件包管理基本概述

    一.回去软件包的途径 1.系统发行版的光盘或官方的服务器镜像站 http://mirrors.aliyun.com        //阿里云镜像站 http://mirrors.sohu.com    ...

  3. 067.Python框架Django之DRF视图类

    一 关于视图类的一下概念 drf除了在数据序列化部分简写代码以外,还在视图中提供了简写操作.所以在django原有的django.views.View类基础上,drf封装了多个子类出来提供给我们使用. ...

  4. Java 单例模式:懒加载(延迟加载)和即时加载

    引言 在开发中,如果某个实例的创建需要消耗很多系统资源,那么我们通常会使用惰性加载机制(或懒加载.延时加载),也就是说只有当使用到这个实例的时候才会创建这个实例,这个好处在单例模式中得到了广泛应用.这 ...

  5. MQTT简介-(转自cacard)

    MQTT - MQ Telemetry Transport   轻量级的 machine-to-machine 通信协议. publish/subscribe模式. 基于TCP/IP. 支持QoS. ...

  6. LTC4020

    今天凯哥说他之前有一块电池放电低于20V了 然后接上4020后 会先浮充   涓流充 大约200ma  充过了20V后又是4A了

  7. CSS的起步

    初学CSS CSS语法规范 选择器{样式} 给谁改样式{改什么样式} 写在style标签里 健值对形式,分号结尾 color:red; <style> p { color:red; fon ...

  8. android设置时钟

    <TextClock        android:id="@+id/timeText"        android:layout_width="match_pa ...

  9. 性能调优必备:NIO的优化实现原理

    前言 我们就从底层的网络 I/O 模型优化出发,再到内存拷贝优化和线程模型优化,深入分析下 Tomcat.Netty 等通信框架是如何通过优化 I/O 来提高系统性能的. 网络 I/O 模型优化 网络 ...

  10. 程序员与年龄:四十岁普通开发、三十五岁首席架构、三十岁基层Leader

    最近,有一个词儿特别热门--躺平.有没有人跟你说过:"躺平说起来容易,做起来更容易." 和躺平相对的是另外一个词--内卷,群聊的时候,已经很多次看过草卷起来了.jpg表情包.某些节 ...