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 & ...
随机推荐
- gdb 调试,当发现程序退出,需要定位程序退出位置时。
在进入gdb后设置,执行下面语句 handle SIGSEGV nopass handle SIGSEGV nostop 执行程序,触发问题,gdb侧执行c 故障出现时,执行bt,显示堆栈调用.
- RHEL高级磁盘管理—Stratis
2. Stratis 本地存储管理工具,通过Stratis可以便捷的使用Thin Provisioning.Snapshots.Pool-based的管理和监控等高级存储功能. Stratis 基于x ...
- IPMI中sol的使用
IPMI中sol的使用 转载韦远科 最后发布于2013-05-09 15:19:18 阅读数 7920 收藏 http://blog.chinaunix.net/uid-1838361-id-3 ...
- PHP使用mail函数发送邮件
yum install sendmail #需要使用到sendmail hostname jb51.net #建议修改主机名为域名格式,否则启动sendmail会很慢 systemctl start ...
- docker容器中日志文件过大处理方法
背景 :在日常工作中一个基于centos镜像构建起来的python爬虫程序,日志文件在两个月内到了500G,日志存放在根目录下面,在不扩容的情况下把这个问题给解决掉.通过定时任务和脚本的方法,定期的清 ...
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 ltp-pan
LTP--linux稳定性测试 linux性能测试 ltp压力测试 zhangzj1030关注14人评论33710人阅读2011-12-09 12:07:45 说明:在写这篇文章之前,本人也不曾了 ...
- 转载 https://www.cnblogs.com/bobo-pcb/p/11708459.html
https://www.cnblogs.com/bobo-pcb/p/11708459.html #### 1 用VMware 15.0+win10企业版 1次安装成功 20200124 2 不要用v ...
- Centos7 网卡DHCP重新获取IP地址
问题:局域网内一台linux系统(Centos7.4)DHCP自动获取的IP地址和另一台手动配置的静态IP冲突了 解决方法:让DHCP自动获取的IP地址重新获取一个别的IP地址 DHCP重新获取IP ...
- Centos6.9以下查看端口占用情况和开启端口命令
Centos查看端口占用情况命令,比如查看80端口占用情况使用如下命令: lsof -i tcp:80 列出所有端口 netstat -ntlp 1.开启端口(以80端口为例) ...
- 贪心算法leetcode-763
int[] lastShow = new int[26]; var list = new LinkedList<Integer>(); for (int i = 0; i < s.l ...