To_Heart—题解——AT2165
这是一篇解题报告
首先,看到标签,考虑二分答案。
我们二分答案(即塔顶的值),把大于或等于这个值的变为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的更多相关文章
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
- CF100965C题解..
求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...
随机推荐
- curl -O http://www.linux.com/hello.sh
2.3:可以使用curl的内置option:-O(大写)保存网页中的文件要注意这里后面的url要具体到某个文件,不然抓不下来 # curl -O http://www.linux.com/hello. ...
- xrandr 直接输这个能显示可用的分辨和当前的分辨率 xrandr -s 1920x1200就设置成指定的分辨率
利用 xrandr 命令修改屏幕分辨率 时间 2016-10-29 原文 http://blog.csdn.net/mao0514/article/details/52965700 问题背景 ...
- Samba服务配置及配置文件说明
前言 1.配置Samba服务为什么要关闭防火墙(firewalld)和Selinux? 在linux操作系统中默认开启了防火墙,Selinux也处于启动状态,一般状态为enforing:所以,在我们搭 ...
- mysql基础之mysql主从架构半同步复制
一.概念 1.异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样 ...
- kylin优化的思想
kylin的核心优势在于使用额外的空间存储预计算的结果,以换取查询时间的缩减. 所以我们要对额外的空间进行优化,并且在空间优化之后,cuboid无法完全命中时,对查询时间进行优化. 空间优化的思路就是 ...
- Step By Step(Lua字符串库)
Step By Step(Lua字符串库) 1. 基础字符串函数: 字符串库中有一些函数非常简单,如: 1). string.len(s) 返回字符串s的长度: 2). string ...
- Step By Step(Lua基础知识)
Step By Step(Lua基础知识) 一.基础知识: 1. 第一个程序和函数: 在目前这个学习阶段,运行Lua程序最好的方式就是通过Lua自带的解释器程序,如: /> l ...
- node.js学习(4)事件
1 导入事件库
- 面阿里P7,竟问这么简单的题目?
关于作者:程序猿石头(ID: tangleithu),来自十八县贫困农村(查看我的逆袭之路),BAT某厂P7,是前大疆(无人机)技术主管,曾经也在创业公司待过,有着丰富的经验. 本文首发于微信公众号, ...
- CVPR2020:三维实例分割与目标检测
CVPR2020:三维实例分割与目标检测 Joint 3D Instance Segmentation and Object Detection for Autonomous Driving 论文地址 ...