【平衡树】【NOI 2005】维护数列

NOI2005维护数列原题 维护数列 【问题描述】 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格) 操作编号 输入文件中的格式 说明 1. 插入 INSERT_posi_tot_c1_c2_..._ctot 在当前数列的第posi 个数字后插入tot 个数字:c1, c2, …, ctot;若在数列首插 入,则 posi 为 0 2. 删除 DELETE_posi_tot 从当前数列的第 posi 个数字开始连续 删除 tot 个数字 3. 修改 MAKE-SAME_posi_tot_c 将当前数列的第 posi 个数字开始的连 续 tot 个数字统一修改为 c 4. 翻转 REVERSE_posi_tot 取出从当前数列的第 posi 个数字开始 的 tot 个数字,翻转后放入原来的位置 5. 求和 GET-SUM_posi_tot 计算从当前数列开始的第 posi 个数字 开始的 tot 个数字的和并输出 6. 求和最 大的子列 MAX-SUM 求出当前数列中和最大的一段子列, 并输出最大和 立即下载

339. [NOI2005] 维护数列

★★★★☆   输入文件:seq2005.in   输出文件:seq2005.out   简单对比
时间限制:3 s   内存限制:256 MB

【问题描述】

请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格)
这里写图片描述

【输入格式】

输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M表示要进行的操作数目。
第 2 行包含 N 个数字,描述初始时的数列。
以下 M 行,每行一条命令,格式参见问题描述中的表格。

【输出格式】

对于输入数据中的 GET-SUM 和 MAX-SUM 操作,向输出文件依次打印结果,每个答案(数字)占一行。

【输入样例】

9 8
2 -6 3 5 1 -5 -3 6 3
GET-SUM 5 4
MAX-SUM INSERT 8 3 -5 7 2
DELETE 12 1
MAKE-SAME 3 3 2
REVERSE 3 6
GET-SUM 5 4
MAX-SUM

【输出样例】

-1
10
1
10

【样例说明】

初始时,我们拥有数列 2 -6 3 5 1 -5 -3 6 3
执行操作 GET-SUM 5 4,表示求出数列中从第 5 个数开始连续 4 个数字之和,1+(-5)+(-3)+6 = -1:

2  -6  3  5  1 -5 -3  6  3

执行操作 MAX-SUM,表示要求求出当前数列中最大的一段和,应为 3+5+1+(-5)+(-3)+6+3 = 10:

2  -6  3  5  1 -5 -3  6  3

执行操作 INSERT 8 3 -5 7 2,即在数列中第 8 个数字后插入-5 7 2,

2  -6  3  5  1 -5 -3  6 -5  7  2  3

执行操作 DELETE 12 1,表示删除第 12 个数字,即最后一个:

2  -6  3  5  1 -5 -3  6 -5  7  2

执行操作 MAKE-SAME 3 3 2,表示从第 3 个数开始的 3 个数字,统一修改为 2:

2  -6  3  5  1 -5 -3  6 -5  7  2

改为

2  -6  2  2  2 -5 -3  6 -5  7  2

执行操作 REVERSE 3 6,表示取出数列中从第 3 个数开始的连续 6 个数:

2  -6  2  2  2 -5 -3  6 -5  7  2

如上所示的灰色部分 2 2 2 -5 -3 6,翻转后得到 6 -3 -5 2 2 2,并放回原来位置:

2  -6  6 -3 -5  2  2  2 -5  7  2

最后执行 GET-SUM 5 4 和 MAX-SUM,不难得到答案 1 和 10。

2  -6  6 -3 -5  2  2  2 -5  7  2

【评分方法】

本题设有部分分,对于每一个测试点:
如果你的程序能在输出文件正确的位置上打印 GET-SUM 操作的答案,你可以得到该测试点 60%的分数;
如果你的程序能在输出文件正确的位置上打印 MAX-SUM 操作的答案,你可以得到该测试点 40%的分数;
以上两条的分数可以叠加,即如果你的程序正确输出所有 GET-SUM 和MAX-SUM 操作的答案,你可以得到该测试点 100%的分数。
请注意:如果你的程序只能正确处理某一种操作,请确定在输出文件正确的位置上打印结果,即必须为另一种操作留下对应的行,否则我们不保证可以正确评分。

【数据规模和约定】

你可以认为在任何时刻,数列中至少有 1 个数。
输入数据一定是正确的,即指定位置的数在数列中一定存在。
50%的数据中,任何时刻数列中最多含有 30 000 个数;
100%的数据中,任何时刻数列中最多含有 500 000 个数。
100%的数据中,任何时刻数列中任何一个数字均在[-1 000, 1 000]内。
100%的数据中,M ≤20 000,插入的数字总数不超过 4 000 000 个,输入文件大小不超过 20MBytes。

题解:

一道十分综合的区间操作题,某神犇说1小时内写完A掉基本区间问题就可以无忧了。。然而我太弱了,写了4h+。。

每个节点需要保存的信息:
v:点权; p:键值; cnt:重复(也可以不用); sz:子树大小; sum:区间点权和;
ls:从最左边延伸出的最大连续区间和;
rs:从最右边延伸出的最大连续区间和;
maxs:整个区间的最大连续区间和;
rev:反转标记; c:修改标记;

维护:
ls=max(left->ls,left->sum+x->v+max(0,r->ls));
rs=max(right->rs,max(0,left->rs)+x->v+right->sum);
maxs=max(max(0,left->rs)+x->v+max(0,right->ls),max(left->maxs,right->maxs));
翻转交换子树和ls,rs。
具体细节注意一下就好了。

Insert:暴力插每个数。
Delete:删除区间。可以写垃圾回收。不过我懒的写了。。
Make-same:打标记,要一路下放。
Reverse:打标记,同样一路下放。
Get-sum:找到区间,直接查询即可。
Max-sum:直接查根节点maxs即可。

Code:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#define inf -0x7fffffff
using namespace std;
struct node{
    node *left,*right;
    int v,p,sz,cnt,sum,ls,rs,maxs,rev,c;
}*root,*null=new node((node){null,null,0,0,0,0,inf,inf,inf,inf,0,inf});
typedef pair<node*,node*> Dnode;
void push_up(node *x){
    node *l=x->left,*r=x->right;
    x->sz=x->cnt+l->sz+r->sz;
    //sum
    x->sum=x->v;
    if (l->sz) x->sum+=l->sum;
    if (r->sz) x->sum+=r->sum;
    //ls
    if (l->sz)
        x->ls=max(l->ls,l->sum+x->v+max(0,r->ls));
    else x->ls=max(x->v,x->v+max(0,r->ls));
    //rs
    if (r->sz)
        x->rs=max(r->rs,max(0,l->rs)+x->v+r->sum);
    else x->rs=max(x->v,x->v+max(0,l->rs));
    //maxs
    if (l->sz && r->sz)
        x->maxs=max(0,l->rs)+x->v+max(0,r->ls);
    else {
        if (l->sz) x->maxs=max(l->rs,0)+x->v;
        else if (r->sz) x->maxs=max(0,r->ls)+x->v;
        else x->maxs=x->v;
    }
    if (l->sz) x->maxs=max(x->maxs,l->maxs);
    if (r->sz) x->maxs=max(x->maxs,r->maxs);
    x->maxs=max(x->maxs,x->sum);
}
void push_down(node *x){
    node *l=x->left,*r=x->right;
    if (x->c!=inf){
        if (l->sz){
            l->c=l->v=x->c; l->sum=l->v*l->sz;
            l->ls=l->rs=l->maxs=max(l->v,l->sum);
        }
        if (r->sz){
            r->c=r->v=x->c; r->sum=r->v*r->sz;
            r->ls=r->rs=r->maxs=max(r->v,r->sum);
        }
        x->c=inf;
    }
    if (x->rev%2){
        if (l->sz){
            swap(l->left,l->right);
            swap(l->ls,l->rs); l->rev++;
        }
        if (r->sz){
            swap(r->left,r->right);
            swap(r->ls,r->rs); r->rev++;
        }
        x->rev=0;
    }
}
node *merge(node *x,node *y){
    if (!x->sz) return y;
    if (!y->sz) return x;
    push_down(x); push_down(y);
    if (x->p<y->p){
        x->right=merge(x->right,y);
        push_up(x); return x;
    }
    else {
        y->left=merge(x,y->left);
        push_up(y); return y;
    }
}
Dnode split(node *x,int k){
    if (!x->sz) return Dnode(null,null);
    Dnode y;
    push_down(x);
    if (k<=x->left->sz){
        y=split(x->left,k);
        x->left=y.second;
        push_up(x); y.second=x;
    }
    else {
        y=split(x->right,k-x->left->sz-x->cnt);
        x->right=y.first;
        push_up(x); y.first=x;
    }
    return y;
}
void Insert(int x,int k){
    Dnode y=split(root,x); node *z;
    for (int i=1; i<=k; i++){
        int v; scanf("%d",&v);
        z=new node;
        z->v=z->sum=z->ls=z->rs=z->maxs=v;
        z->left=z->right=null; z->c=inf;
        z->sz=z->cnt=1; z->p=rand(); z->rev=0;
        y.first=merge(y.first,z);
    }
    root=merge(y.first,y.second);
}
void Delete(int x,int k){
    Dnode y,z;
    y=split(root,x-1);
    z=split(y.second,k);
    root=merge(y.first,z.second);
}
void Change(int x,int k,int v){
    Dnode y,z;
    y=split(root,x-1);
    z=split(y.second,k);
    z.first->c=z.first->v=v;
    z.first->sum=v*z.first->sz;
    z.first->ls=z.first->rs=z.first->maxs=max(v,z.first->sum);
    push_down(z.first);
    y.second=merge(z.first,z.second);
    root=merge(y.first,y.second);
}
void Reverse(int x,int k){
    Dnode y,z;
    y=split(root,x-1);
    z=split(y.second,k);
    z.first->rev++;
    swap(z.first->left,z.first->right);
    swap(z.first->ls,z.first->rs);
    push_down(z.first);
    y.second=merge(z.first,z.second);
    root=merge(y.first,y.second);
}
void Q_sum(int x,int k){
    Dnode y,z;
    if (!k){
        printf("0\n");
        return;
    }
    y=split(root,x-1);
    z=split(y.second,k);
    push_up(z.first);
    printf("%d\n",z.first->sum);
    y.second=merge(z.first,z.second);
    root=merge(y.first,y.second);
}
int main(){
    int n,m; root=null; char opt[20];
    scanf("%d%d",&n,&m); Insert(0,n);
    while (m--){
        scanf("%s",&opt); int x,y,z;
        switch (opt[0]){
            case 'I':scanf("%d%d",&x,&y); Insert(x,y); break;
            case 'D':scanf("%d%d",&x,&y); Delete(x,y); break;
            case 'M':{
                if (opt[2]=='K')
                    scanf("%d%d%d",&x,&y,&z),Change(x,y,z);
                else printf("%d\n",root->maxs);
                break;
            }
            case 'R':scanf("%d%d",&x,&y); Reverse(x,y); break;
            case 'G':scanf("%d%d",&x,&y); Q_sum(x,y); break;
        }
//      cout<<root->v<<"  "<<root->p<<"  "<<root->sz<<"  "<<root->sum<<"  "<<root->ls<<"  "<<root->rs<<"  "<<root->maxs<<endl;
    }
    return 0;
}
大数据运营可视化:Tableau+PowerBI数据看板搭建教程 当企业数据量从“GB级”跃升到“TB级”,运营人员面临的最大挑战不再是“如何收集数据”,而是“如何让数据说话”。数据看板作为“运营指挥中心的仪表盘”,能将零散的用户行为、业务指标、流量趋势浓缩成可快速解读的视觉语言。本文结合Tableau(自由探索的“数据瑞士军刀”)与PowerBI(微软生态的“组合家具”)两大工具,从需求分析→数据准备→指标设计→视图搭建→ dashboard 组合,一步步教你搭建符合业务逻辑的运营看板。 阅读详情

相关推荐

SAP S/4HANA 可扩展性 – 面向初学者的简化指南

可扩展性(Extensibility)是 SAP ECC 和 SAP S/4HANA 的一项关键功能。它使客户能够通过定制其业务流程来创造竞争优势,并使合作伙伴能够通过量身定制的解决方案来丰富核心 ECC 或 S/4HANA。在过去的几十年中,SAP 的 on-premise 版本客户和合作伙伴主要使用经典的 ABAP 扩展性来扩展他们的 ERP 解决方案。经典扩展性允许 ABAP 开发人员使用甚至修改所有 SAP 对象。尽管经典扩展性非常强大和灵活,但在当今的云世界中,它已不再是一个好的选择。

SAP学习成长之路的博客 1809

P2042 [NOI2005]维护数列 fhq treap

P2042 [NOI2005]维护数列 题目的链接 众多平衡树独爱fhq 题目 有好多种操作: 1、添加一堆数 2、删除一个区间里的数 3、把一个区间里的数全变成同一个数 4、反转一个区间 5、求区间和 6、求最大的连续子序列的和。 因为要求连续的子序列的和,就想到了线段树区间合并。 这个,,应该可以想到。 所以就维护 lnum,rnum,num 做的时候的zz问题 崩溃了~~ 做的时候 我tmd 崩溃了,, 快神经了啊 我 一、添加一堆数我刚开始一个一个添加,, 因为方便(tle) 二、反转一个区间的时候

qq_44784019的博客 326

SigmaStudio进阶技巧:如何用ADAU1701实现60段EQ与防啸叫算法

本文深入探讨了如何在ADAU1701 DSP芯片上实现专业级音频处理系统。通过精密的资源规划与架构设计,详细讲解了构建高达60段参数均衡器(EQ)的有效方法,并集成了移频与自适应陷波双策略的智能防啸叫算法。内容涵盖从SigmaStudio工程优化、算法模块组合到系统联调实战的全流程,旨在帮助中高级开发者充分利用ADAU1701性能,打造稳定、高效的音频处理解决方案。

weixin_28256233的博客 384

【NOI2005】维护数列 splay

splay各种操作集合模板题 复杂~~

Jacky35 452

【WireShark】WireShark windows平台编译 问题解决

最近工作中需要基于wireshark做二次开发,在windows平台构建过程中 遇到了找不到Glib库的问题,具体报错如下: Working in D:\WorkSpace\WIRESHARK\wiresharksource\wireshark-win64-libs Tag 2021-08-14 not found. Refreshing. Downloading https://anonsvn.wireshark.org/wireshark-win64-libs/tags/2021-08-14/pac

qq_35456540的博客 1545

告别信号毛刺!手把手教你用ADS和IBIS-AMI模型搞定PCIe Gen3眼图仿真

本文详细介绍了如何使用Keysight ADS和IBIS-AMI模型进行PCIe Gen3眼图仿真,解决高速信号传输中的信号质量问题。从仿真环境搭建、S参数预处理到眼图优化与故障排除,提供了一套完整的工程实践指南,帮助工程师提升PCIe Gen3接口的信号完整性。

weixin_28366053的博客 366

NOI2005 维护数列

NOI2005 维护数列tags :【Splay】,【BZOJ1500】,【洛谷2042】在线评测地址:洛谷,大视野题目描述1500: [NOI2005]维修数列Time Limit: 10 Sec Memory Limit: 64 MBDescriptionInput输入的第1 行包含两个数N 和M(M ≤20 000),N 表示初始时数列中数的个数,M表示要进行的操作数目。第2行包含N个数字,

Holylight_Knight 791

iOS面试题大全(附带答案)

C语言相关面试题 1.static有什么用途? 答案:在C语言中,static主要定义全局静态变量,定义局部静态变量,定义静态函数。 static 属于静态变量,使用它修饰的变量生命周期是整个源程序。 @1.在函数体内的 static 变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; @2.在模块内的 static 全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问; @3.在模块内的 static 函数只被这一模块内的其它函数调用,这个函数的使用范围被限

IOSNF的博客 2426

洛谷 P2042 [NOI2005]维护数列(平衡树)

题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格) 输入输出格式 输入格式: 输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M 表示要进行的操作数目。 第 2 行包含 N 个数字,描述初始时的数列。 以下 M 行,每行一条命令,格式参见问题描述中的表格 输出格式: ...

whisperlzw的博客 479

瑞芯微RK3588平台YOLOv8Pose模型RKNN部署与C++优化实战:从模型转换到高效推理的全流程指南-附源码

错误码 | 原因 | 解决方案 || -1001 | ONNX算子不支持 | 升级RKNN SDK至最新版 || -2003 | 量化校准数据不足 | 增加校准图片至500张 || -3005 | 输入尺寸不匹配 | 固定模型输入尺寸为640x640 || 资源消耗 | CPU 35% | NPU 90% |

m0_64661770的博客 990

从原理到落地:Java+TensorRT打造YOLO模型GPU极致推理方案

Java+TensorRT的YOLO模型GPU加速方案,核心是通过JNI桥接实现Java与TensorRT的高效交互,结合TensorRT的底层优化能力,最大化GPU算力。该方案既保留了Java后端的工程化优势(如易维护、生态完善),又解决了AI模型推理的性能瓶颈,可落地于实时视频分析、智能监控、工业质检等场景。基于TensorRT Dynamic Shape实现多尺寸输入的自适应优化;结合Java的协程(Virtual Thread)提升异步推理的并发效率;

2601_94871597的博客 766

[NOI2005] 维护数列(平衡树)

题目 描述 请写一个程序,要求维护一个数列,支持以下6种操作:(请注意,格式栏中的下划线‘ _ ’表示实际输入文件中的空格) 插入 INSERT_posi_tot_c1_c2_…_ctot 在当前数列的第posi个数字后插入tot个数字:c1, c2, …, ctot;若在数列首插入,则posi为0 删除 DELETE_posi_tot 从当前数列的第posi个数字开始连续删除to

PhantomAgony 537

使用 Visual Studio Code 连接 ABAP On-Premise 系统做开发的详细配置步骤

本文详细介绍了如何在Visual Studio Code中通过ABAP Development Tools扩展连接ABAP On-Premise系统。关键步骤包括:通过Ctrl+Shift+P打开命令行面板选择「ABAP: New Destination...」创建RFC连接(仅支持SSO单点登录),选择本地SAPGUI中已有的系统,输入Client ID、语言和用户名(无需密码),最后将目标系统添加到工作区即可开始开发。文章强调了企业安全考虑下仅支持SSO的设计理念,并展示了连接配置的JSON格式示例。整

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 985

Luogu P2042 [NOI2005]维护数列(平衡树)

P2042 [NOI2005]维护数列 题意 题目描述 请写一个程序,要求维护一个数列,支持以下\(6\)种操作:(请注意,格式栏中的下划线‘_’表示实际输入文件中的空格) 输入输出格式 输入格式: 输入文件的第\(1\)行包含两个数\(N\)和\(M\),\(N\)表示初始时数列中数的个数,\(M\)表示要进行的操作数目。 第\(2\)行包含\(N\)个数字,描述初始时的数列。以下\(M\)行...

weixin_30912051的博客 119

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

P2042 [NOI2005]维护数列 平衡树

最大序列和小白逛公园做过 区间修改的优先级高于区间翻转的优先级(之前有题01串翻转) 序列维护平衡树 平衡树维护的是下标 因此中序遍历就是原序列 每个结点维护的都是结点 不像线段树可以维护区间 所以build 的操作有一些不一样 这题还卡空间 所以要弄一个简单的回收操作 注意up的顺序 必须从下到上 因为这...

weixin_30389003的博客 140

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【平衡树】NOI 2005 维护数列

  上次学习平衡树就是卡在了这里,现在就以这道题做个小结吧。 题目在这里http://www.lydsy.com/JudgeOnline/problem.php?id=1500 这是NOI以来出的最果的最直接的数据结构题目了,但这明显不代表他简单,第一次做的时候用了2天,现在写起来也是倍感麻烦。 关于这道题的感悟我觉得这个博客说的很好,让我受益很多。 http:...

weixin_30478619的博客 84

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[NOI2005]维护数列——平衡树观止

本题题解并不详细,不推荐大家看这一篇。 可以看这篇 题目描述 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格) 100%的数据中,任何时刻数列中最多含有 500 000 个数。 100%的数据中,任何时刻数列中任何一个数字均在[-1 000, 1 000]内。 100%的数据中,M ≤20 000,插入的数字总数不超...

weixin_34306446的博客 89

[平衡树刷题] 模板 P2042 [NOI2005] 维护数列

对于插入区间,分裂后硬插即可,但注意不要裂成俩之后再调用原始的插入,因为裂开之后root变了,插入操作是错的。不如直接建一棵新的平衡树插点,然后在裂开合并三段即可。对于最大子列和,用区间合并的思想求;对于区间翻转,用平衡树反转的思想求;很板的题,但是很有必要写。注意下放标记的顺序。

HeartFireY的博客 678

noi 2005 维护数列 平衡树

非常恶心的一道数据结构题。 1 #include<iostream> 2 #include<cmath> 3 #include<cstring> 4 #include<cstdio> 5 using namespace std; 6 #define MAXN 510000 7 #define INF...

weixin_30485799的博客 105

【NOI 2005】【JZOJ 2413】维护数列 平衡树操作模板题

平衡树模板题 splay操作大全

LYD729 623

【平衡树维护序列】BZOJ1500(NOI2005)[维修数列]题解

BZOJ1500题解。

ZigZagK的博客 988

数据结构(Splay平衡树):COGS 339. [NOI2005] 维护数列

339. [NOI2005] 维护数列 时间限制:3 s 内存限制:256 MB 【问题描述】 请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格) 操作编号 输入文件中的格式 说明 ...

weixin_30323961的博客 115

洛谷P2042 [NOI2005] 维护数列

下面,到了本题比较难的部分了,那就是更新。更新的其他的值都没什么好说的,但我们要思考如何更新。在这里我采用的是无旋平衡树(FHQ)。操作,向输出文件依次打印结果,每个答案(数字)占一行。行,每行一条命令,格式参见问题描述中的表格。请写一个程序,要求维护一个数列,支持以下。封装好每一个操作,我们的这道题就差不多了。标记下传很简单,依次下传2个标记即可。个数字,描述初始时的数列。根据我们的目测,这显然是一个裸。表示初始时数列中数的个数,表示要进行的操作数目。,不会区间翻转的可以去看。

yjfyjfyjf54188的博客 1142

splay模板三合一 luogu2042 [NOI2005]维护数列/bzoj1500 [NOI2005]维修数列 | poj3580 SuperMemo | luogu3391 【模板】文艺平衡树...

先是维修数列 题解看这里,但是我写的跑得很慢 #include <iostream> #include <cstdio> using namespace std; int n, m, idx[500005], a[500005], rot=0, uu, vv, sta[500005], din, ww, cnt; const int oo=0x3f3f3f3f; ...

dianjiaxian1205的博客 159
上一篇: 【Treap】【TYVJ 1728】普通平衡树
下一篇: 【数学】关于素数的检验
morestep
博客等级 码龄12年 20粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值