3 2^k-分位数组

news2024/10/7 5:26:15

作者: 赵晓鹏时间限制: 1S章节: 递归与分治

 

 

#include <iostream>
#include <algorithm>
#include <queue>
#include <tuple>
#include <stack>
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
using namespace std;
const int LENGTH=(1<<22)+3;
int A[LENGTH]={1,1};
int pos=0;
const int groupLen=25;
const int h=160;
int recordPass=0;

inline int Partition(int left, int right, int x)
{
    A[pos]=A[left];
    int i = left, j = right+1;
    while(true)
    {
        while(i < j && A[--j] >= x);
        while(i < j && A[++i] < x);
        if(i>=j) break;
        swap(A[i], A[j]);
    }
    A[left]=A[i];
    A[i]=x;
    return i;
}
int select(int first, int last, int r)
{
    if(last - first < h)
    {
        priority_queue<int>Q(A + first, A + last + 1);
        for(int i=last; i>=first; --i)
        {
            A[i]=Q.top();
            Q.pop();
        }
        return A[r + first - 1];
    }
    pos=first+rand()%(last-first);
    int x = A[pos];
    int mid= Partition(first, last, x);
    int res = mid - first + 1;
    int locLeft=mid;
    int locRight=last+1;
    int m=0;
    if(r < res) return select(first, mid, r);
    else
    {
        while(true)
        {
            while(A[++locLeft]==x&&locLeft<locRight);
            while((A[--locRight]^x)&&locLeft<locRight);
            if(locLeft>=locRight)
            {
                m=locLeft-mid-1;
                break;
            }
            A[locRight]=A[locLeft];
            A[locLeft]=x;
        }
        if(m>=1&&r>=res&&r<=m+res-1) return x;
        else return select(mid + 1+m, last, r - res-m);
    }

}
void res(int left, int right, int leftNum, int rightNum, int k) {
    int B[rightNum+1];
    stack<tuple<int, int, int, int>> stk;
    stk.push(make_tuple(left, right, leftNum, rightNum));
    while (!stk.empty()) {
        int left, right, leftNum, rightNum;
        tie(left, right, leftNum, rightNum) = stk.top();
        stk.pop();
        if (leftNum > rightNum) {
            continue;
        }
        int mid = (leftNum + rightNum) >> 1;
        int midPos = (mid + 1) <<k;
        select(left, right, midPos - left + 1);
        B[mid]=A[midPos-1];
        stk.push(make_tuple(midPos + 1, right, mid + 1, rightNum));
        stk.push(make_tuple(left, midPos, leftNum, mid - 1));

    }
    for(int i=leftNum;i<=rightNum;++i){
        if(i==rightNum){
            printf("%d",B[i]);
        }
        else{
            printf("%d ",B[i]);
        }
    }
}
int main()
{
    int n,k,m;
    scanf("%d%d%d", &n,&k,&m);
    int  len=1<<n;
    for(int  i=2; i<len; ++i)
    {
        A[i]=(A[i-1]+A[i-2])%m;
    }
    int unit=1<<k;
    int maxNum=len/unit;
    res(0, len-1, 0,maxNum-1, k);
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742612.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【UGUI学习笔记】渲染层级

文章目录 Camera渲染Canvas渲染Sorting LayerOrder in Layer 图层渲染 Camera渲染 摄像机的渲染层级需要修改Clear Flags属性&#xff0c;这个属性下的四种模式比较复杂&#xff0c;此处只是介绍不同渲染方式下进行的选择。 摄像机的默认模式是Skybox&#xff0c;也就是视距内…

Acwing 850. Dijkstra求最短路 II

Acwing 850. Dijkstra求最短路 II 链接:850. Dijkstra求最短路 II - AcWing题库 /* 题解:堆优化版本的dijkstra 就是优化了 每次寻找当前距离源最近的点的时间 有小顶堆来维护当前为确定的点和源的距离 那么每次找最新确定的点的时候就是堆顶 */ #include<iostream> #i…

阐述kubernetes部署:基础设施安装

基础设施部署 持久卷的建立 请参考&#xff1a;《持久卷的建立》 elasticsearch部署 一、设置远程扩展字典 不使用自定义字典请忽略此步骤 首先更改ES中IK插件的配置&#xff1a; vi/opt/kubernetes/es/IKAnalyzer.cfg.xml 按您的实际设置的秘钥配置secret_value&#xff1a; …

使用echarts+echarts-gl绘制3d地图,实现地图轮播效果

记录一下大屏开发中使用到的echarts-gl大屏的页面根据需求前前后后改了几个版本了&#xff0c;地图的样式也改了又改这里记录一下&#xff0c;因为echarts属性用到的比较多也比较杂&#xff0c;防止以后需要用到忘记了 目录 初始效果 效果图&#xff1a; 适应大屏风格的发光…

SpringBoot项目模块间通信的两种方式

说明&#xff1a;在微服务架构开发中&#xff0c;一个请求是通过模块之间的互相通信来完成的&#xff0c;如下面这个场景&#xff1a; 创建两个子模块&#xff1a;订单模块&#xff08;端口8081&#xff09;、用户模块&#xff08;端口8082&#xff09;&#xff0c;两个模块之…

Vue周日历展示大学课程

最近在做日历展示课程&#xff0c;网上也寻找了一些控件 例如&#xff1a;在Vue中引入fullcalendar制作课程表 还有 课程表插件Timetables 感觉效果都不错&#xff0c;而且这个控件还是开源的&#xff0c;大家有需要的都可以去下载试用&#xff0c;我需要的控件可能大致和这个…

Node中http请求body参数解析

1.request 说明&#xff1a;request本质就是一个可读流&#xff0c;因此需要转码。 req.setEncoding("utf-8") 2.声明变量 let isLogin 说明&#xff1a;判断是否登录 3.读取 req.on("data",(data)>{ const loginInfoJSON.parse(data)console.log(JSO…

最细最全,Jmeter获取jdbc数据4种方法-超详细,看这篇足够...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 jmeter使用jdbc协…

【接口/性能测试】Jmeter引用 jar包的三种方式(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 实现对登录密码进…

2023-7-11-第十六式职责链模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

文件格式化读写

#include<stdio.h> #include<stdlib.h> int main() {FILE* fpfopen("D:/a.txt","r");if(!fp) return -1;char* p(char*)malloc(sizeof(char*)*1024);fscanf(fp,"%s",p);//读取文件中的内容&#xff0c;遇到换行和空格停止 printf(&q…

运行lumpyexpress时报错:can‘t open file ‘/opt/python27/lumpy_sv/scripts/bamkit/bam

在利用lumpyexpress进行SV鉴定时&#xff1a; lumpyexpress -P -B ../data/S1.sort.markdup.bam -S S1.splitters.bam -D S1.discordants.bam -o $sample.lumpy.vcf Sourcing executables from /data/home/hgzhong/home/software_set/python27/lumpy_sv/lumpy-sv/bin/lumpyex…

网络编程【TCP单向通信、TCP双向通信、一对多应用、一对多聊天服务器】(二)-全面详解(学习总结---从入门到深化)

目录 Java网络编程中的常用类 TCP通信的实现和项目案例 TCP通信入门案例 TCP单向通信 TCP双向通信 创建点对点的聊天应用 一对多应用 一对多聊天服务器 Java网络编程中的常用类 Java为了跨平台&#xff0c;在网络应用通信时是不允许直接调用操作系统接 口的&#xff0…

GitKraken 6.5.1免费中文版安装

今天发现SmartGit上传不了代码了, 看了一下过期了, 我不想花钱买, 就找个替代工具, 方便写代码, 方便合并代码, 方便点击提交代码, 免得敲命令浪费时间. 安装 6.5.1 版本 下载版本,已上传到 CSDN :GitKraken 6.5.1免费中文版安装更换快捷方式 C:\Users\kentrl\AppData\Local\…

2、部署Git服务器-Windows环境部署Gitea

目录 1. 说明2. 环境准备3. 安装部署3.1 安装Git3.2 安装Gitea3.3 将 Gitea 注册为 Windows 服务&#xff08;可选&#xff09;3.4 启用 Gitea 内置的 SSH 服务器&#xff08;可选&#xff09;3.5 编辑 Windows 防火墙 Gitea是一个自托管的Git服务&#xff0c;类似于GitHub、Gi…

图形编辑器开发:参考线吸附功能,让图形自动对齐

最近我给图形编辑器增加了参照线吸附功能&#xff0c;讲讲我的实现思路。 我正在开发的图形设计工具&#xff1a; https://github.com/F-star/suika 线上体验&#xff1a; https://blog.fstars.wang/app/suika/ 效果是被移动的图形会参考周围图形&#xff0c;自动与它们进行吸附…

Linux配置静态IP

Linux配置静态IP 提示&#xff1a;本地虚拟机模拟服务器配置静态IP&#xff0c;大家如果有云服务器也是一样的&#xff0c;后期会出关于云服务器如何配置静态IP 文章目录 Linux配置静态IP一、IP地址的简单介绍二、查看虚拟机的中的网关IP地址三、编辑网络配置文件四、SSH连接五…

码中寻趣:低码专家与开发者的「神秘会议」 ——华为云Astro扫地僧出山

迅速推进的数字生态让软件开发门槛越来越高&#xff0c;新手们无疑面临艰巨挑战&#xff0c;而低代码技术显然是绝佳应对方案&#xff0c;让全民用较短的时间开发出工业级应用。 HDC.Cloud 2023扫地僧见面会汇聚华为云资深专家和充满好奇心的开发者。 当刺耳手机铃和颤动的讨论…

GitHub 集成 Murphysec 实现实时代码检测

1. GitHub 集成 Murphysec 效果 将 MurphySec 代码安全检测工具集成到 GitHub Action 中&#xff0c;可对每一次代码更新实时进行安全漏洞检测&#xff0c;并快速修复这些安全漏洞。 集成效果图 2. 操作步骤 提示&#xff1a;如果您使用过 GitHub Actions 请直接按照第3步开始…

Excel二级联动下拉列表(横向字典配置)

二级联动下拉列表 1. Excel内新建sheet用来存放二级联动列表 2. 新建省份名称引用 在省市字典下&#xff0c;单击A1单元格&#xff0c;选择公式->名称管理器->新建&#xff0c;名称为省份&#xff0c;引用位置为OFFSET(省市字典!$A$1,0,0,COUNTA(省市字典!$A:$A))&…