这是一篇解题报告

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

我们二分答案(即塔顶的值),把大于或等于这个值的变为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. CSS中常用的函数

    一.CSS函数的用法 设置css的属性值时可以使用css函数,如果color:rgba(20,30,50,0.5),css中有很多这样的函数. 二.常用的CSS函数 a.calc()函数   这个函数 ...

  2. 013.Ansible Playbook include

    一 include 当项目越大,tasks越多的时候.如果将多有的task写入一个playbook中,可读性很差,就需要重新组织playbook 可以把一个playbook分成若干份晓得palyboo ...

  3. 测usb读写

    dd if=/dev/sda of=/dev/null bs=1M count=1000每次测完 清一下 memory cacheecho 3 > /proc/sys/vm/drop_cache ...

  4. 059.Python前端Django组件cooki和session

    一 会话跟踪技术 1.1 什么是会话 会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程. 1.2 什么是会话跟踪 对同一个用户对服务器的连续的请求和接受响应的监视.(将用户与同一用户发 ...

  5. shell基础之变量及表达式

    本节内容 1. shell变量简介 2. 定义变量 3. 使用变量 4. 修改变量的值 5. 单引号和双引号的区别 6. 将命令的结果赋值给变量 7. 删除变量 8. 变量类型 9. 特殊变量列表 1 ...

  6. 2021 docker安装宝塔面板

    拉取CentOS镜像 docker pull centos 创建 docker 容器 启动镜像,映射主机与容器内8888(宝塔面板).888(PHPMYADMIN)端口 -v 挂在目录 为了能够保存( ...

  7. 如何彻底禁止 macOS Big Sur 自动更新,去除更新标记和通知

    作者:gc(at)sysin.org,主页:www.sysin.org 请访问原文链接:https://sysin.org/article/Disable-macOS-Update/,查看最新版.原创 ...

  8. 吐血整理!Python常用第三方库,码住!!!

    ​ Python作为一种编程语言近年来越来越受欢迎,它为什么这么火? 其中一个重要原因就是因为Python的库丰富--Python语言提供超过15万个第三方库,Python库之间广泛联系.逐层封装.几 ...

  9. 高频访问SQLite数据库

    SQLite 是一款开源的 SQL 数据库引擎,由于其自包含.无服务.零配置和友好的使用许可(完全免费)等特点,在桌面和移动平台被广泛使用. 在应用开发过程中,如果想保存点数据,自然而然地就会想到 S ...

  10. 使用Apache TVM将机器学习编译为WASM和WebGPU

    使用Apache TVM将机器学习编译为WASM和WebGPU TLDR 在Apache TVM深度学习编译器中引入了对WASM和WebGPU的支持.实验表明,在将模型部署到Web时,TVM的WebG ...