CodeForces - 1353D

这道题也可能比较简单,主要是要想到优先队列要怎么使用,这一点如果用递归会写不了

但是因为对优先队列不太熟悉,只有被提示可以用优先队列才想到要怎么用,

还是很重要的STL

注意运算符的重构应该反着来写

其他的思维很朴素,运算符的重构就是,先比较长度,优先用长度长的,如果一样就是选择左边界小的,用结构体封装数据即可

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
int a[200005]={0};
int cnt=0;
struct Node{
int l;int r;int val;
};
bool operator<(Node a,Node b){
if(a.val==b.val) return a.l>b.l;
return a.val<b.val;
}
priority_queue<Node> q;
void solve(){
while(!q.empty()){
Node x=q.top();
q.pop();
if(x.val==1){
a[x.l]=++cnt;
continue;
}
int mid=(x.l+x.r)>>1;
a[mid]=++cnt;
Node aa;
aa.l=x.l;
aa.r=mid-1;
aa.val=aa.r-aa.l+1;
if(aa.val>0) q.push(aa);
Node bb;
bb.l=mid+1;
bb.r=x.r;
bb.val=bb.r-bb.l+1;
if(bb.val>0) q.push(bb);
}
}
signed main(){
int time;
cin>>time;
while(time--){
int n;
cnt=0;
cin>>n;
Node u;
u.l=1;u.r=n;u.val=n;
q.push(u);
solve();
for(int i=1;i<=n;++i){
cout<<a[i]<<" ";
}
cout<<endl;
}
}

CodeForces - 1353D Constructing the Array的更多相关文章

  1. Codeforces 442C Artem and Array(stack+贪婪)

    题目连接:Codeforces 442C Artem and Array 题目大意:给出一个数组,每次删除一个数.删除一个数的得分为两边数的最小值,假设左右有一边不存在则算作0分. 问最大得分是多少. ...

  2. Codeforces Round #504 D. Array Restoration

    Codeforces Round #504 D. Array Restoration 题目描述:有一个长度为\(n\)的序列\(a\),有\(q\)次操作,第\(i\)次选择一个区间,将区间里的数全部 ...

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

    题意:有一个长度为\(n\)元素均为\(0\)的序列,进行\(n\)次操作构造出一个新序列\(a\):每次选择最长的连续为\(0\)的区间\([l,r]\),使得第\(i\)次操作时,\(a[\fra ...

  4. Educational Codeforces Round 21 D.Array Division(二分)

    D. Array Division time limit per test:2 seconds memory limit per test:256 megabytes input:standard i ...

  5. Codeforces 754A Lesha and array splitting(简单贪心)

    A. Lesha and array splitting time limit per test:2 seconds memory limit per test:256 megabytes input ...

  6. Codeforces 408 E. Curious Array

    $ >Codeforces \space 408 E. Curious Array<$ 题目大意 : 有一个长度为 \(n\) 的序列 \(a\) ,\(m\) 次操作,每一次操作给出 \ ...

  7. Educational Codeforces Round 11A. Co-prime Array 数学

    地址:http://codeforces.com/contest/660/problem/A 题目: A. Co-prime Array time limit per test 1 second me ...

  8. Codeforces 946G Almost Increasing Array (树状数组优化DP)

    题目链接   Educational Codeforces Round 39 Problem G 题意  给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...

  9. CodeForces - 86D D. Powerful array —— 莫队算法

    题目链接:http://codeforces.com/problemset/problem/86/D D. Powerful array time limit per test 5 seconds m ...

  10. 【Codeforces 722C】Destroying Array (数据结构、set)

    题意 输入一个含有 n(1≤n≤100000) 个非负整数的 a 数组和一个 1-n 的排列 p 数组,求每次删除 a[p[i]] 后,最大连续子段和(不能跨越被删除的)是多少? 分析 因为都是非负整 ...

随机推荐

  1. Windows 安装 OpenSSH

    使用命令行安装 安装 OpenSSH 服务端和客户端 在管理员终端下运行以下命令: # 检查 OpenSSH 可用性 Get-WindowsCapability -Online | Where-Obj ...

  2. 【Git代码仓库】之合并分支代码操作到主干代码上(界面版/命令版)

    一.代码管理仓库,合并分支代码到主干(界面版*) 1.从远程Git代码仓库克隆到本地 # Git克隆 git clone git@e.coding.net:XXX/SQM/SC_WEB_Project ...

  3. PlugIR:开源还不用微调,首尔大学提出即插即用的多轮对话图文检索 | ACL 2024

    即插即用的PlugIR通过LLM提问者和用户之间的对话逐步改进文本查询以进行图像检索,然后利用LLM将对话转换为检索模型更易理解的格式(一句话).首先,通过重新构造对话形式上下文消除了在现有视觉对话数 ...

  4. 深度学习环境安装-conda-torch-Jupyter Notebook

    conda的安装 为什么要安装这个,它是什么? 它是一个管理环境的,当我们跑项目的时候,往往这些项目所需要的pickets库和环境是不同的,这时候如果自己的电脑里面只有一个版本的库的话,就运行不了,比 ...

  5. .net core8 使用Swagger(附当前源码)

    说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...

  6. EF Core – ExecuteUpdate and ExecuteDelete (Bulk updates 批量更新和删除)

    前言 EF Core 在 SaveChanges 之后会一句一句的去更新和删除数据. 有时候这个效率是很差的. 而 SQL 本来就支持批量更新和删除, 所以是 EF Core 的缺失. 在 EF Co ...

  7. PMP——如何区分项目启动会和开踢会?

    在PMP考试中非常强调两个重要会议,一个叫做启动会(Initiating Meeting),另一个叫做开踢会议(Kick-off Meeting),俗称两会. 项目启动会的作用是通过发布项目章程来授权 ...

  8. 痞子衡嵌入式:为下一代AI边缘处理设备而生 - i.MXRT700

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的新品i.MXRT700. 四年前恩智浦官宣了面向下一代智能穿戴设备的 i.MXRT500 系列,这 ...

  9. 深入理解Redis锁与Backoff重试机制在Go中的实现

    目录 Redis锁的深入实现 Backoff重试策略的深入探讨 结合Redis锁与Backoff策略的高级应用 具体实现 结论 在构建分布式系统时,确保数据的一致性和操作的原子性是至关重要的.Redi ...

  10. electron的两个进程

    electron 有两个类别的进程,一个是主进程,另一个是渲染进程 主进程: 启动后一直存在的,相当于一个树的主干并不会展示出来,是看不到的所有跟系统资源交互的操作都在这里进行操控渲染进程,新建或销毁 ...