D. Constructing the Array Codeforces Round 642 (Div. 3)

从零理解Brep:用Python玩转3D建模的边界表示法(附OpenCASCADE示例) 本文深入解析了边界表示法(Brep)在3D建模中的应用,通过Python和OpenCASCADE的实战示例,详细介绍了Brep的核心数据结构、布尔运算、网格转换及3D打印优化技巧。适合CAD设计、3D打印和计算机图形学领域的开发者学习与实践。 阅读详情

题目链接:Problem - 1353D - Codeforcesicon-default.png?t=N7T8https://codeforces.com/problemset/problem/1353/D

题目大意:

往空的数组里从1~n填数字,每次填最长的空区间的中间位置(位置向下取整)。

思路:

用二分判断放每一个数字时此区间的大小。

排序完后再将数字放入对应的位置。

方法:

用dfs去实现二分:

void dfs(ll l ,ll r){//用二分判断填一个数字时的区间大小 
	if(l <= r){
		ll mid = l + (r-l >> 1);
		p[mid].first = l-r-1;//区间大的先排,负数影响了排序规则 
		dfs(l ,mid-1);
		dfs(mid+1 ,r);
	}
	return;
}

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"

const ll N = 2e5+7;
ll n;
ll v[N];
pair<ll,ll>p[N];

void dfs(ll l ,ll r){//用二分判断填一个数字时的区间大小 
	if(l <= r){
		ll mid = l + (r-l >> 1);
		p[mid].first = l-r-1;//区间大的先排,负数影响了排序规则 
		dfs(l ,mid-1);
		dfs(mid+1 ,r);
	}
	return;
}

void solve(){
	cin >> n;
	dfs(1,n);
	for(ll i = 1 ; i <= n ; i ++)//数字放在哪个位置 
		p[i].second=i;
	sort(p+1,p+n+1);
	for(ll i = 1 ; i <= n ; i ++)//依次放数字进数组 
		v[p[i].second]=i;
	for(ll i = 1 ; i <= n ; i ++)
		i > 1 ? cout << " " << v[i] : cout << v[i];
	cout << endl;
	return;
}

int main() {
	ll t=1;cin >> t;
	while(t --)solve();
	return 0;
}
OpenMMLab实战指南:从环境搭建到首个检测模型运行 本文是一份详细的OpenMMLab实战指南,重点介绍了如何从零开始搭建环境并运行首个目标检测模型。内容涵盖Miniconda环境配置、PyTorch与CUDA版本匹配、使用MIM工具安装MMCV和MMDetection的核心步骤,并通过RTMDet-tiny模型演示了完整的推理流程,帮助开发者高效入门这一计算机视觉开源算法体系。 阅读详情

相关推荐

字节跳动高频111道核心前端面试题解析,web开发增强

但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。自定义指令(v-check、v-focus)的方法有哪些?v-model是什么?

2401_84094620的博客 1200

Codeforces Round #642 (Div. 3) D.Constructing the Array

Codeforces Round #642 (Div. 3)-1353 D.Constructing the Array 问题分析: 模拟一个0数列,用优先队列 然后把按照两个规则进行出列 连续0长度长的优先级高,同长度的开始位置考前优先 具体看大佬代码 AC代码: #include<map> #include<set> #include<cmath> #include<queue> #include<vector> #include<cst

MaxVen 245

解析vCard 3.0:提取电子名片中的姓名

N:LastName;FirstName;;;END:VCARD和END:VCARD标记数据块的开始和结束。N字段存储结构化姓名(分号分隔)。FN字段为直接可读的显示名称。其他字段如TELEMAIL等保存联系信息。

qq_45797625的博客 2779

Codeforces Round #642 (Div. 3) D.Constructing the Array

Codeforces Round #642 (Div. 3) D.Constructing the Array 题目链接 You are given an array a of length n consisting of zeros. You perform n actions with this array: during the i-th action, the following sequence of operations appears: Choose the maximum by length

旺崽的博客 2659

NXP S32K5 MCU如何赋能Zonal架构与软件定义汽车?

汽车电子架构正从分布式ECU向域集中、再向Zonal分区架构演进,核心驱动力在于线束简化、算力下沉与软件分层解耦。区域控制器作为物理区域的“调度员”,需要同时满足实时响应、功能安全、多网络协议转换和OTA升级等要求,这使MCU与SoC的选型成为系统工程的关键决策。MCU凭借确定性的微秒级启动、低功耗、丰富的IO控制以及成熟的ASIL-D认证路径,仍是区域控制器的主流选择。NXP S32K5正是面向这一场景发布的系列MCU:它集成多核锁步、CAN-XL、TSN以太网、硬件安全模块与双Bank Flash,补齐

weixin_28721917的博客 356

Python实战项目2:b站评论采集

本文不对数据采集的过程做探讨,直接上代码。

lyccomcn的博客 3199

codeforces Round #642 div.3 D. Constructing the Array

D. Constructing the Arraytime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given an array aa of length nn consisting of zeros. You perform nn actions with this array: during the ii-th action, the f

Think_kill的博客 528

三模冗余、纠错编码、单粒子翻转防护

本文探讨了高可靠性FPGA系统设计的三大关键技术:三模冗余(TMR)、纠错编码(ECC)和单粒子翻转(SEU)防护。TMR通过三个并行模块和表决器实现容错,但会增加硬件资源和功耗;ECC利用汉明码等编码方式检测和纠正数据错误,适用于存储器保护;SEU防护则针对高能粒子引发的位翻转问题,采用配置刷新、TMR和ECC等方法。文章还通过Verilog代码示例展示了这些技术的实现,并提出了一个综合应用案例,结合三种技术构建高可靠性控制系统。这些技术在航空航天、医疗设备等关键领域具有重要应用价值。

2301_79143213的博客 715

Codeforces Round #642 (Div. 3) D. Constructing the Array

D. Constructing the Array time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output You are given an array a of length n consisting of zeros. You perform n actions with this array: during the i-th action, the

马角的逆袭的博客 264

20 硬件工程师笔面试高频考点真题解析——寄存器

摘要: 寄存器是由多个边沿触发的D触发器组成的多位存储单元,用于同步时序电路中的数据暂存、隔离毛刺、跨时钟域同步等。选型需考虑位宽、触发方式(边沿/电平)、异步控制、电气参数等。核心时序参数包括建立时间(Tsu)、保持时间(Thold)和时钟输出延迟(Tco)。寄存器广泛应用于时序逻辑、流水线分割、毛刺消除、跨时钟域同步及计数分频等场景。同步复位依赖时钟边沿,时序易收敛但需时钟支持;异步复位独立于时钟,上电可靠但需注意亚稳态风险。

XU157303764的博客 1342

开关电源-LLC基本原理

本文详细介绍了LLC谐振变换器的兴起原因、基本工作原理、变换器特点及拓扑结构。重点讨论了半桥、全桥LLC及其软开关技术,包括零电压开关(ZVS)和零电流开关(ZCS)。通过理解简单的谐振电路(RL、RC、LC)来阐述LLC如何改变电压增益,以及如何通过调节频率实现输出电压的稳定性。

让你爱上电路设计 2万+

Codeforces Round #642 (Div. 3) D. Constructing the Array(思维、模拟)

题目链接:https://codeforces.com/contest/1353/problem/D 题意是输入一个n,表示有一个长度为n且全为0的数组。现在需要做出n次操作,操作有两种,第一种是先选出一个长度最长的连续的0的区间,如果有多个这样的区间且长度相同,选择最左端的一个区间。第二个操作是,如果该区间的长度为奇数,那么将数组的第(l+r)/2为设为i,如果该区间长度为偶数,将数组的第(l+r-1)/2位设为i。直到n次操作结束,该数组被填满,有且只有唯一的答案,输出该数组。 ...

Charles_Zaqdt的博客 510

全球SAR卫星大盘点与回波数据处理专栏目录

本专栏将详细介绍各国各地区的SAR卫星的特点和性能,以及SAR回波数据的处理方法和技巧。主要介绍民用和商用SAR卫星,帮助你了解商业SAR卫星的最新动态和技术,MATLAB代码将全部开源。以下是专栏目录,持续更新中。

3161

Codeforces Round #642 (Div. 3)总结 (D. Constructing the Array)

好久没写过博客了,随便写一篇…… 鉴于这场ABC都是水题就不贴了,就讲一下D题吧 (我才不会说后面的我懒得看了) 因为我写完这篇blog还没结束比赛,所以我刚刚跑去看了最后两题,嗯,不会 原题 题目大意 1、选一段最长并且最左的全为零的连续子串; 2、把该字串中间设为iii。 例子的话看图吧…… ps:该答案存在并唯一 题目分析 这是个模拟题,第一眼看感觉很像快排那种分治思想,所以一开始拿了个队来做,结果发现这样做做不到最左边,之前发现不会STL库太坑了,学了一下优先队列,然后就拿了刚学的优先队列试试手。

juseice的博客 456

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Codeforces Round 642 (Div. 3) D. Constructing the Array

每次选择,我们要先选择最长的字段,在长度相等的情况下选择最靠左边的。我们可以将最靠左边的这个条件转换为右边剩余长度最长的,这样字段和剩余长度的增减性相同,我们可以用pair来存储字段长度和剩余长度,用大根堆来存储每个线段,每次取出队头元素,得到答案。我们可以发现每次填充一个数之后,我们就得到两段新的线段。所以按照题目所说的方法,我们模拟就可以得到答案。但我们需要把更新控制到nlog(n)以内。题意:根据所示方法构造数组。

weixin_50089904的博客 491

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Codeforces Round #642 (Div. 3)D. Constructing the Array[优先队列]

采用优先队列,存储 (node){l,r} 元素,每次操作最长区间即可,具体思路见代码。

qq_52801833的博客 156

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Codeforces Round #642 (Div. 3) D. Constructing the Array(优先队列)

传送门 1.比赛时一开始想到递归二分,但是实际上没办法这样写,要分好多种情况。但是我只分析了样例以及7,8,9的情况,但是到了10又不行了,tcl 2.实际上正解就是使用优先队列维护每段区间的最优性,每次二分后子区间入队,很轻松就求解了,但是我没有想出来,需要反思… #include <set> #include <map> #include <stack> #include <queue> #include <math.h> #include

Happig的博客 234

Codeforces Round #642 (Div. 3) D. Constructing the Array (思维)

题目链接 题意: 给你一个全部由0组成的数组,现在对每一个最长连续的0的子字符串中进行操作:1.当这个子串的长度为奇数这个数组的(r+l)/2的位置赋值为i(i从1到n依次赋值),2.当为偶数的时候,(r+l-1)/2位置为i。问最后的数组是什么样子的 思路: 思路到是没有什么难的,每次一个区间,都会分成俩个区间,然后再判断这俩个区间是否合理(是否区间长度大于0)。主要是这个排序操作我没有想到优先队列,用的其他方法写,结果出错了。 AC代码 #include <bits/stdc++.h> us

give it a try 176

Codeforces Round #642 (Div. 3) D. Constructing the Array (优先队列)

https://codeforces.com/contest/1353/problem/D 题意:给定一个长度为n的全0数组aa,每次进行以下操作直到所有元素均不为零:在第ii次操作中,取最长的全为0的一段子序列(优先取最左边的),令a[len2/2]=i。其中len为偶数,取l+rl+r或l+r−1。 思路:首先题目中要求每次分区间时优先考虑长度最大且最左边的区间优先,因此比较容易想到用优先队列,这里我们将pair键值对放入优先队列中,第一个关键字存长度,第二个关键字存左端点,通过这两个关键词可以将右

qq_43679326的博客 197

Codeforces Round #642 (Div. 3)

Codeforces Round #642 (Div. 3)(2020.5.15) 这场昨天没打,今天补了一下发现很亏啊。这昨天要是打了不直接起飞( 光速出前四题可以加个100分左右。 A、Most Unstable Array 这A其实感觉比B更难一点。 题目要求非负整数数列,于是我们肯定考虑一大一小一大一小这样排列,这样能让每个绝对值对答案的贡献尽可能大。 然后我们假设从mmm里拆了一个数xxx出来,那么为了让绝对值最大,较小的那个值肯定取0。于是数列就会长成像...,0,x,0,......,0,x,

牛马一枚 487

Codeforces Round #642 (Div. 3)D. Constructing the Array(广度优先搜索)

原题链接 题意: 给你一个长度为n的数组a初始元素全为0,每次把含0最多的子序列的中间元素设为当前的操作次数,输出最后不含0的a数组内所有元素。 思路: 一开始看到就感觉和归并排序和快速排序的写法差不多,分区间去弄。就写了以下发现深搜没写出来,没法区分区间内0的个数。既然深搜不行,另一个搜索就是广搜了,普通的队列是不行的,因为这里是先对含0最多并且靠左边的区间操作。那么就用优先队列定义以下优先级就可以了。比赛的时候没写错了很可惜。。 代码: #include<bits/stdc++.h> us.

amazingee的博客 1655

【cf】Constructing the Array(set类与pair灵活结合的题)(Codeforces Round #642 (Div. 3) D题)

链接:https://codeforces.ml/contest/1353/problem/D 题解来源:https://codeforces.ml/blog/entry/77373 题目: You are given an array a of length n consisting of zeros. You perform n actions with this array: during the i-th action, the following sequence of operations ap

QoooQ_Czp的博客 337

Codeforces Round #642 (Div. 3)D. Constructing the Array(优先队列 模拟)

只要想到用优先队列代码并不难实现 优先队列重载<是和排序相反 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<queue> using namespace std; const int N=2e5+10; int a[N]; struct Node{ int l,r,num; friend bool operator&lt

weixin_45113721的博客 162

Codeforces D. Constructing the Array (最大连续区间 / 优先队列) (Round #642 Div.3)

传送门 题意: 现有一个长度为n的初始数组a(其值全为0),对其进行n次操作。每次从左往右选取其连续为0的最大子段进行如下两类操作: 若r - l + 1为偶数,那么a[(l + r) / 2] := i. 若r - l + 1为奇数,那么a[(l + r - 1) / 2] := i. 其中 i 为第 i 次操作。最后输出答案数组a(该数组存在且唯一)。 思路: 可以利用机构图定义一个新类型,该类型代表连续为0的小区间,其具有区间的左右边界l,r和区间的长度len. 利用优先队列排序,按照长度降

Satur9的博客 222

[codeforces 1353D] Constructing the Array 分治算法

Codeforces Round #642 (Div. 3) 参与排名人数11823 [codeforces 1353D] Constructing the Array 分治算法 总目录详见https://blog.csdn.net/mrcrack/article/details/103564004 在线测评地址http://codeforces.com/contest/1353/problem/D Problem Lang Verdict Time Memory ...

mrcrack的博客 642

Codeforces#642 (Div. 3) D. Constructing the Array

题目链接 题意: 给一个长度为n的空序列,然后往里面填1-n的数字; int cnt=1; 找序列中最长(如果多个最长则取最左边的序列)的连续全空区间:并且赋值cnt++;循环这个操作n次: eg: Consider the array a of length 5 (initially a=[0,0,0,0,0]). Then it changes as follows: Firstly, we choose the segment [1;5] and assign a[3]:=1, so a become

DevourPower的博客 430
上一篇: PTA字符串约束
下一篇: D. Caesar‘s Legions Codeforces Beta Round 89 (Div. 2)
翰墨织梦
博客等级 码龄4年 384粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值