安徽师大附中%你赛day4T1 金字塔 解题报告
金字塔
题目背景:
\(Zdrcl\)带着妹子们来到了胡夫金字塔周边旅游, 发现这里正在进行一个有关金字塔的游戏
题目描述:
游戏规则如下:
1、 这里的金字塔是一个 \(N\) 阶的二维金字塔。
2、 把金字塔的每一层从上往下从 \(1\) 到 \(N\) 顺次标号, 对于第 \(i\) 层,有 \(2*i-1\) 个格子, 且第 \(i\) 层的格子比第 \(i+1\) 层少的两个格子恰好是第 \(i+1\)层两端的格子。 (如不理解, 可参考下图)
一个 \(4\) 阶的金字塔
3、 游戏的主办方在第 \(N\) 层的 \(2×N-1\) 个格子中写了一个 \(1\) ~ \(2×N-1\) 的排列。 他希望你填上剩下的所有格子: 对于第 \(1\) ~ \(N-1\) 层的所有格子上的数, 应该等于这个格子左下方, 正下方和右下方格子上所填的三个数的中位数。
4、 游戏的主办方又觉得刚才的想法非常不(sha)行(diao), 因为如果那样的话, 选手们要填的格子可能会非常多。 所以, 他只要求你告诉他第一层的那一个数是什么就行了。Zdrcl 想在妹子面前展现自 己博学的形象, 可是他又不愿自 己亲手去做, 于是他向在考场上的你发出了 求助。 你能帮助 Zdrcl么? 帮助了他的话, 他就会给你 100 分作为奖励哦!
输入输出格式
输入格式:
第一行一个正整数表示 \(N\)。
第二行有 \(N×2-1\) 个数表示主办方在最后一行填的数是什么。(注: 保证给你的数是 \(1\) ~ \(N×2-1\) 的排列)
输出格式:
一行一个整数表示答案。
说明:
对于 30%的数据: \(N ≤ 2*10^3\)
对于 50%的数据: \(N ≤ 8.5*10^3\)
对于 100%的数据: \(N ≤ 1*10^6\)
对于 50%的数据, 排列随机, 在各测试点中均匀分布。
二分答案题,没看出来
基本算是套路吧,二分顶点,然后大于它的置1,反之置0
然后手玩
发现0101010类似的是每一层取反
11或00是一直向上走相当于屏障
于是我们可以从中间往左右两边走,第一次碰到的00或11就是顶
因为是奇数,所以不可能距离相等
如果一直是01,按层数算一算就行了
Code:
#include <cstdio>
const int N=2e6+10;
int a[N],d[N],n;
bool check(int m)
{
for(int i=1;i<n<<1;i++) d[i]=a[i]>m;
int l=-1,r=-1;
for(int i=n-1;i;i--)
{
if(d[i]^d[i+1]) continue;
l=i;break;
}
for(int i=n+1;i<n<<1;i++)
{
if(d[i]^d[i-1]) continue;
r=i;break;
}
if((!~l)&&(!~r)) return d[n]^(n-1&1);
if(!~l) return d[r];
if(!~r) return d[l];
return n-l>r-n?d[r]:d[l];
}
int main()
{
scanf("%d",&n);
for(int i=1;i<n<<1;i++) scanf("%d",a+i);
int l=1,r=(n<<1)-1;
while(l<r)
{
int mid=l+r>>1;
if(check(mid))
l=mid+1;
else
r=mid;
}
printf("%d\n",l);
return 0;
}
2018.8.16
安徽师大附中%你赛day4T1 金字塔 解题报告的更多相关文章
- 安徽师大附中%你赛day3T1 怜香惜玉 解题报告
怜香惜玉 题意: 已知 \(f(x)=\frac{2 \times \sum_{(i,x)=1}^x i}{φ(x)}\) 先给定数据组数\(t\)和\(k\) 每组数据给出\(n\),求\(\sum ...
- 安徽师大附中%你赛day2T3 巧克力 解题报告
巧克力 题目描述 小\(T\)有\(N\)块巧克力, 每块巧克力上都有一句话(由小写英文字母组成,不含标点) .现在每块巧克力都断成了若干截,更糟糕的是,有一些碎片丢失了 ,但是剩下的碎片之间的顺序是 ...
- 安徽师大附中%你赛day4T2 演讲解题报告
演讲 题目背景: 众所周知,\(\mathrm{Zdrcl}\)是一名天天\(\mathrm{AK}\)的高水平选手. 作为一民长者,为了向大家讲述自己\(\mathrm{AK}\)的经验,他决定在一 ...
- 安徽师大附中%你赛day9 T2 富 解题报告
富 题目背景 出于某些原因, 苟先生在追杀富先生. 题目描述 富先生所在的地方是一个\(n\times m\)的网格,苟先生排出了他的狼狗大军,共有\(k\)条狗,第\(i\)条狗所在的位置为\((x ...
- 安徽师大附中%你赛day9 T3 贵 解题报告
贵 问题描述 苟先生的狼狗大军没有追上富先生, 所以他把它们都解雇了, 决定去雇佣一些更好的狗, 不过狗可是很贵的.苟先生有 \(w\) 元钱, 有 \(n\) 条狗可以雇佣, 第 \(i\) 条狗有 ...
- 安徽师大附中%你赛day7 T2 乘积 解题报告
乘积 题目背景 \(\mathrm{Smart}\) 最近在潜心研究数学, 他发现了一类很有趣的数字, 叫做无平方因子数. 也就是这一类数字不能够被任意一个质数的平方整除, 比如\(6\).\(7\) ...
- 安徽师大附中%你赛day6 T3 Hamsters [POI2010]CHO-Hamsters 解题报告
[POI2010]CHO-Hamsters 题意: 给出n个互不包含的字符串,要求你求出一个最短的字符串S,使得这n个字符串在S中总共至少出现m次,问S最短是多少? 范围: \(1 \le n \le ...
- 安徽师大附中%你赛day5 T3 树上行走 解题报告
树上行走 题目背景 \(\mathrm{Smart}\) 的脑洞非常大, 经常幻想出一些奇怪的东西. 题目描述 某一天,\(\mathrm{Smart}\) 幻想出了一棵没有边际的二叉树,脑补着在那棵 ...
- 模拟赛T2 交换 解题报告
模拟赛T2 交换 解题报告 题目大意: 给定一个序列和若干个区间,每次从区间中选择两个数修改使字典序最小. \(n,m\) 同阶 \(10^6\) 2.1 算法 1 按照题意模拟,枚举交换位置并比较. ...
随机推荐
- python 摘要算法
一.概述: 摘要算法主要特征是加密过程不需要密钥,并且加密的数据无法解密,只有输入相同的明文数据经过相同的摘要算法才能得到相同的密文.摘要算法主要应用在“数字签名”领域.接下来会讲述RSA公司的MD5 ...
- Leecode刷题之旅-C语言/python-14.最长公共前缀
/* * @lc app=leetcode.cn id=14 lang=c * * [14] 最长公共前缀 * * https://leetcode-cn.com/problems/longest-c ...
- (数据科学学习手札30)朴素贝叶斯分类器的原理详解&Python与R实现
一.简介 要介绍朴素贝叶斯(naive bayes)分类器,就不得不先介绍贝叶斯决策论的相关理论: 贝叶斯决策论(bayesian decision theory)是概率框架下实施决策的基本方法.对分 ...
- python中的os,shutil模块的定义以及用法
# os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Uni ...
- 521. [NOIP2010] 引水入城 cogs
521. [NOIP2010] 引水入城 ★★★ 输入文件:flow.in 输出文件:flow.out 简单对比时间限制:1 s 内存限制:128 MB 在一个遥远的国度,一侧是风景秀 ...
- Anytime项目开发记录0
Anytime,中文名:我很忙. 开发者:孤独的猫咪神. 这个项目会持续更新,直到我决定不再维护这个APP. 2014年3月10日:近日有事,暂时断更.希望可以会尽快完事. 2014年3月27日:很抱 ...
- 如何激活win10
第一步:用管理员权限打开命令提示符: 第二步:输入命令---slmgr.vbs /upk (成功卸载了产品密钥) 第三步:slmgr /ipk NPP ...
- volatility的使用
volatility取证的使用----windows内存 简介 kali下默认安装 可以对windows,linux,mac,android的内存进行分析 内存文件的准备 Win2003SP2x86下 ...
- 10-Mysql数据库----数据的增删改
本节重点: 插入数据 INSERT 更新数据 UPDATE 删除数据 DELETE 再来回顾一下之前我们练过的一些操作,相信大家都对插入数据.更新数据.删除数据有了全面的认识.那么在mysql中其实最 ...
- [P2387魔法森林
题面 题意: 给出一个图,边权有两维,a与b. 求1到n的一条路径使得路径经过的边的最大的a与b的和最小,输出最小之和. \(Solution:\) 如果做过这题,那么就显得很简单了很好想了. 又是想 ...