#构造,二分#[AGC006B] [AGC006D] Median Pyramid
分析(Easy)
若\(X=1\)或\(X=2n-1\)无解,否则在正中间构造\(X-1,X,X+1\),
其余位置升序铺入剩余数,
若\(X-1\)左侧数大于\(X-1\)那么\(X-1\)和\(X\)上方必定为\(X\),
\(X+1\)上方为\(X+1\),可以发现比原来更接近\(X\),显然到塔尖答案即为\(X\)
\(X+1\)右侧数小于\(X+1\)的情况同理
代码
#include <cstdio>
#define rr register
using namespace std;
int n,x,t;
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
signed main(){
scanf("%d%d",&n,&x);
if (x==1||x==2*n-1) return !puts("No");
puts("Yes"),t=1;
for (rr int i=1;i<n-1;++i){
while (x-1<=t&&t<=x+1) ++t;
print(t++),putchar(10);
}
print(x-1),putchar(10),
print(x),putchar(10),
print(x+1),putchar(10);
for (rr int i=1;i<n-1;++i){
while (x-1<=t&&t<=x+1) ++t;
print(t++),putchar(10);
}
return 0;
}
分析(Hard)
考虑二分答案,令\(b[i]=a[i]\leq ans\)
按照Easy越接近中间越有可能成为答案
所以越靠中间只要存在两个1,这个答案就可以被传上去,
否则如果存在两个0显然不行,否则如果都判断不了就用\(b[1]\)判断
代码(Hard)
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
int n,a[200011];
inline signed iut(){
rr int ans=0,f=1; rr char c=getchar();
while (!isdigit(c)) f=(c=='-')?-f:f,c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans*f;
}
inline bool check(int k){
for (rr int i=0;i<n-1;++i){
if ((a[n-i-1]>k&&a[n-i]>k)||(a[n+i]>k&&a[n+i+1]>k)) return 0;
if ((a[n-i-1]<=k&&a[n-i]<=k)||(a[n+i]<=k&&a[n+i+1]<=k)) return 1;
}
return a[1]<=k;
}
signed main(){
n=iut();
for (rr int i=1;i<=n*2-1;++i) a[i]=iut();
rr int l=2,r=2*(n-1);
while (l<r){
rr int mid=(l+r)>>1;
if (check(mid)) r=mid;
else l=mid+1;
}
return !printf("%d",l);
}
#构造,二分#[AGC006B] [AGC006D] Median Pyramid的更多相关文章
- 【AtCoder】【模型转化】【二分答案】Median Pyramid Hard(AGC006)
题意: 给你一个排列,有2*n-1个元素,现在进行以下的操作: 每一次将a[i]替换成为a[i-1],a[i],a[i+1]三个数的中位数,并且所有的操作是同时进行的,也就是说这一次用于计算的a[], ...
- AGC006D Median Pyramid Hard
闲扯 今天模拟的题,应该是挺简单的二分和贪心,就是没想出来,我好弱啊 顺便ORZ聚聚BLUESKY007,踩爆我了 思路 今天发现中位数性质如此优秀 二分最后塔顶的数,大于等于它的数变为1,小于它的数 ...
- [agc006D]Median Pyramid Hard-[二分+乱搞]
Description 题目大意:给你一个长度为n*2-1的排列,将除了该序列头尾的两个数外的其他数(设为i)变为原序列i-1,i,i+1下标数的中位数.求最后的数是什么.例子如下: Solution ...
- B - Median Pyramid Easy 构造题
B - Median Pyramid Easy Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Statemen ...
- AT2165 Median Pyramid Hard 二分答案 脑洞题
无论再来多少次也不可能想到的写法. 二分一个最小的顶端值\(k\),大于设为\(1\)小于等于设为\(0\),可以证猜出来(你跟我说这可以?)如果存在两个连在一起的0/1那么它们会一直往上跑,还可以很 ...
- [AGC006] D - Median Pyramid Hard 二分
Description 现在有一个NN层的方块金字塔,从最顶层到最底层分别标号为1...N1...N. 第ii层恰好有2i−12i−1个方块,且每一层的中心都是对齐的. 这是一个N=4N=4的 ...
- $AT2163\ Median\ Pyramid\ Easy$ 构造
正解:构造 解题报告: 传送门$QwQ$ 考虑如果有两个相邻格子是相同数字那么它们以上这两列就都会是这列数字(显然$QwQ$? 所以考虑只要构造出第$n-1$行的中心和中心右侧($or$左侧一样的$Q ...
- Atcoder Grand Contest 006 D - Median Pyramid Hard(二分+思维)
Atcoder 题面传送门 & 洛谷题面传送门 u1s1 Atcoder 不少思维题是真的想不出来,尽管在 Atcoder 上难度并不高 二分答案(这我倒是想到了),检验最上面一层的数是否 \ ...
- AT2163 [AGC006B] Median Pyramid Easy
需要一点灵感的题目. 可以发现这样一个事情,当三个数中有两个数相同时,中为数一定是这两个相同的数. 基于这个观察,我们想让每一行都存在这样两个相同的两个数,就一定能保证第一层的值为 \(x\) 了. ...
- AT2165 Median Pyramid Hard
题目链接:戳我 一看范围1e5,往二分上想. 可是再怎么也没有想到这个神仙的二分答案qwq 我们二分一个数x,设比他大的数为1,小于等于他的数为0.那么我们就可以把原来的那个转化成一个01塔. 然后我 ...
随机推荐
- 一个有意思的问题:Kafka的消费Offset会溢出吗
最近在项目上接入公司APP产品的用户点击日志数据时,发现消费者组的Offset值非常大,才一天的时间,已提交的Offset值就有千亿级别了. 于是不禁想了一个问题:假设一个Topic就只有一个Part ...
- 如何在矩池云使用 Poetry 管理项目环境
官网介绍:Poetry is a tool for dependency management and packaging in Python. It allows you to declare th ...
- c++复习笔记——STL(vector)
c++-----STL容器系列(1) vector 1 介绍 Vector是stl容器中一种常见的容器 ,基本和数组类似,其大小(size)可变,常用于数组长度不确定时来代替数组,当数据超过vecto ...
- 磁盘 U盘找不到
及磁盘找不到了, 第一步: 看排线是否插好,稳当 第二步:在磁盘管理下面,磁盘是否还在,如果磁盘显示在,只是没有磁盘符 第三步:diskpart ,进入磁盘 其他的命令自己 查询 第四步:进入 CM ...
- 我为什么使用Linux做开发
系统选择 目前市面上主流的桌面操作系统在大多数人眼里只有Windows和MacOS,那为什么我没选择它们两呢? 首先,不选MacOS的原因,就是太贵.当然这是我的原因不是苹果的原因,我最早使用Linu ...
- Word中的公式复制到Visio中乱码问题
将word中编辑好的公式复制到Visio中出现乱码问题 如图所示问题: 解决方案(Visio 选项 --> 高级 --> 显示 ->勾选禁用增强元文件优化) 具体的公式导入和解决操作 ...
- aardio调用c语言dll动态库传结构体详细教程
开发日记3.11 此篇用于记录发那科数控机床(Fanuc CNC)采集程序开发中,C语言写底层然后用aardio写窗口调用dll的摸索出来的类型对应和踩坑整理. 由于发那科提供的开发套件是C语言的,所 ...
- CYQ.Data 操作 Redis 性能测试:对比 StackExchange.Redis
前言: 前几天,点开自己的博客,看了一下 CYQ.Data V5系列 都有哪些文章, 发现了一篇2019年写的:CYQ.Data 对于分布式缓存Redis.MemCache高可用的改进及性能测试,于是 ...
- day11-2-内置Tomcat的配置和切换
SpringBoot内置Tomcat的配置和切换 1.基本介绍 SpringBoot支持的webServer:Tomcat,Jetty,Undertow 因为在spring-boot-starter- ...
- drf(视图组件)
一. 前言 Django REST framwork 提供的视图的主要作用 1. 控制序列化器的执行(检验.保存.转换数据) 2. 控制数据库查询的执行 二. 两个视图基类 两个视图基类: APIVi ...