POJ 2201 Cartesian Tree 【笛卡尔树】

深入解析MTK平台hang_detect机制:从原理到实战调试 本文深入解析了MTK平台hang_detect机制的工作原理与实战调试技巧。作为系统健康监测的核心机制,hang_detect通过多层级监控体系检测应用层和内核层异常,结合Kernel_exception等日志信息快速定位问题。文章详细介绍了典型问题案例、调试方法及预防措施,帮助开发者提升MTK平台系统稳定性调试能力。 阅读详情

构造笛卡尔树。

我用的是 排序+左旋 的方式,这种方式并不是最好的构造方式,先写出来再说,今天不行了,改天在学习其他的算法。

构树技巧:增加一个虚拟的根节点,根节点的value优先级最高,可以保证此节点一直是根节点。


这道题目的数据有点……,所以不需要判断不合法的,所有的数据都可以构成笛卡尔树,所以判断NO的就可以省了。。。。⊙﹏⊙b汗



排序+左旋:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

struct node {
    int key, value, idx, lson, rson, fa;
} a[50005];
struct renode {
    int fa, lson, rson, idx;
} b[50005];
int n;

bool cmp_key(const node &x, const node &y) {
    return x.key < y.key;
}
bool cmp_value(const node &x, const node &y) {
    return x.value < y.value;
}
void Insert(int now) {
    int j = now - 1;
    while (a[j].value > a[now].value) j = a[j].fa;
    a[now].lson = a[j].rson;
    a[a[j].rson].fa = now;
    a[j].rson = now;
    a[now].fa = j;
}
int main() {
    while (scanf("%d", &n) == 1) {
        for (int i=1; i<=n; i++) {
            scanf("%d %d", &a[i].key, &a[i].value);
            a[i].lson = a[i].rson = a[i].fa = 0;
            a[i].idx = i;
        }
        bool flag = true;
        sort(a+1, a+1+n, cmp_value);
        for (int i=1; i<n; i++)
            if (a[i].value == a[i+1].value) {
                flag = false;
                break;
            }
        if (!flag) {
            printf("NO\n"); continue;
        }
        sort(a+1, a+1+n, cmp_key);
        for (int i=1; i<n; i++)
            if (a[i].key == a[i+1].key) {
                flag = false;
                break;
            }
        if (!flag) {
            printf("NO\n"); continue;
        }

        a[0].lson = a[0].rson = a[0].fa = 0;
        a[0].value = -0x3f7f7f7f;
        a[0].idx = 0;

        for (int i=1; i<=n; i++) Insert(i);
        printf("YES\n");
        for (int i=1; i<=n; i++) {
            b[a[i].idx].fa = a[a[i].fa].idx;
            b[a[i].idx].lson = a[a[i].lson].idx;
            b[a[i].idx].rson = a[a[i].rson].idx;
        }
        for (int i=1; i<=n; i++)
            printf("%d %d %d\n", b[i].fa, b[i].lson, b[i].rson);
    }
    return 0;
}


解释多智能体强化学习(Multi-Agent Reinforcement Learning)(面试题200合集,中频、重要) 多智能体强化学习通过扩展传统强化学习框架,研究多个智能体在动态、交互环境中的策略优化问题。它既有理论上的挑战(如非平稳性和均衡求解),也有广泛的实际应用前景。数学上,它依赖马尔可夫博弈模型,核心是设计算法让智能体在合作或竞争中达到最优。 阅读详情

相关推荐

Alibaba Java Coding Guidelines,以后我的Java代码规范,就靠它了

前言 对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求。但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java 程序员也无法做到时刻将规范牢记于心。所以对于代码规范扫描工具,一经问世就广受青睐,阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代码规约扫描,以下简称为AJCG)插件便是其...

java梦工厂 859

笛卡尔树(Cartesian Tree)

笛卡尔树是一种特定的二叉树数据结构,由数组存储。在范围最值、范围top k查询方面广泛应用。树中的元素满足二叉搜索树性质,要求按照中序遍历得到的序列为原数组序列树中节点满足堆性质,节点的key值要大于其左右子节点的key值当按照index从1到n(或者从0到n-1)的顺序将数组中的每个元素插入到笛卡尔树中时,当前要被插入的元素的index值最大,因此根据二叉搜索的性质需要沿着当前已经完成的笛卡尔树的根的右子树链搜索。由于笛卡尔树要满足堆的性质。.........

Hacket_Xu的博客 3520

易智联LM401模块学习(一)——初识Lora

Lora

weixin_46046597的博客 1054

笛卡尔树简介(分类到treap里面)

笛卡尔树结构由Vuillmin在解决范围搜索的几何数据结构问题时提出的,从数列中构造一棵笛卡尔树可以线性时间完成,需要采用基于栈的算法来找到在该数列中的所有最近小数。由此可知,笛卡尔树是一种特定的二叉树数据结构,可由数列构造,在范围最值查询、范围top k查询(range top k queries)等问题上有广泛应用。它具有堆的有序性,中序遍历可以输出原数列。 目 录 1

crazy_石头的专栏 2258

candence layout快捷键

摁住鼠标左键再框选:选中 摁住鼠标右键再框选:放大 选中之后,滚动鼠标滚轮进行放大缩小。 F:回到全局 shift+V:缩小 键盘的箭头:移动视图 F1:显示帮助文档Candence help F2:保存 点击r,画出矩形时不双击鼠标,点击F3,可以设置尺寸。 Creat-Shape-Path Creat-Wiring-Bus:画多根线。F3设置线宽、间距等。 选中金属后,Shift+G画保护环guard ring。F3可以设置距离金属的间距、保护环的形状。 Path和Rectang

weixin_45861827的博客 2655

tsmc12: m0po max length问题(H384.M0_PO.L.1)

手动调整可以挪cell,制造上下两个row相对的至少一个site的空间,通过插普通filler来解决,这里需要注意的是,tsmc12有via0的规则,需要让via0落在via0 grid上。在pt eco之后会有一些m0po max length问题出现,大部分问题都可以通过替换decap来解决,少部分由于局部density过高,需要手动调整。更多学习内容请关注「拾陆楼」知识星球。#ICC2中替换decap的参考脚本。

m0_61544122的博客 792

笛卡尔树详解

笛卡尔树

xinchendahai123的博客 1529

OData V2 消息在 SAP UI5 中的生成、传播与治理全解

SAP UI5 的 OData V2 消息机制通过自动解析服务端响应头(sap-message)或错误体,将消息推送到全局 MessageModel,实现数据质量保障。关键点包括:1)消息通过目标路径与控件绑定联动,触发高亮等反馈;2)生命周期管理需注意避免自动刷新导致消息丢失;3)常见陷阱如批处理错误重复、内外层消息冲突等可通过精准目标路径或自定义处理器解决。代码示例展示了如何配置模型、消息模型及 MessagePopover 实现端到端消息展示,同时支持控件通过 refreshDataState 自定义

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

笛卡尔树 (Cartesian Tree)

笛卡尔树是一种兼具二叉搜索树和堆性质的二叉树,它能将数组下标与数值大小建立映射关系。其核心价值包括:1)将区间最值查询(RMQ)转化为最近公共祖先(LCA)问题;2)高效解决直方图最大矩形等"左右延伸"类问题;3)揭示Treap平衡树的本质。通过单调栈可实现O(N)线性构建,相比单调栈能持久化结构关系,支持树形DP等高级操作。笛卡尔树还是实现理论最优RMQ算法(O(N)预处理+O(1)查询)的关键桥梁,通过转化为LCA问题再转为±1 RMQ问题来实现。

lifallen的博客 863

华为OD机试真题 新系统-字符串格式调整(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【字符串格式调整】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串格式调整】多语言题解

qq_45776114的博客 1142

esp8266步进电机驱动控制

blinker控制步进电机起保停,正反转(Arduino uno+esp8266+TB6600驱动器) Arduino uno的板子的程序 esp8266板子接入到Arduino uno的控制引脚上的5,6,7 esp8266程序 //****库***** #define BLINKER_WIFI //官方wifi协议库 #define BLINKER_PRINT Serial //串口协议库 #include <Blinker.h&gt

perseverance51博客 2855

POJ 2201 Cartesian Tree 笛卡尔树

题目: 笛卡尔树:笛卡尔树中的每个节点有两个数据域k,a,对于数据域k,满足二叉搜索树性质,对于数据域a,满足最小堆性质。 给出N个节点,1 解题思路: 首先,根据N个节点,肯定可以构造出一颗笛卡尔树。 方法1:  递归法  (经过验证,该方法会超时) (见代码1.) a) 对节点数组,选出a值最小的节点,该节点为根节点 b) 以根节点的k值为枢纽对数组进行划分,小于k的节点位于根

路漫漫其修远兮,吾将上下而求索 2740

基于LSTM GRU RNN的交通流量预测-完整数据代码

基于LSTM GRU RNN的交通流量预测-完整数据代码

923

poj2201Cartesian Tree(笛卡尔树)

Cartesian Tree Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 2950   Accepted: 1122 Case Time Limit: 2000MS Description Let us consider a special type

ophunter的专栏 1605

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

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

POJ 2201:Cartesian Tree ← 笛卡尔树模板题

本题是笛卡尔树的模板题。 ●笛卡尔树是由一系列不同数字构成的二叉树。笛卡尔树满足堆的性质,笛卡尔树的中序遍历序列为构建其的原始序列。最小堆笛卡尔树表示满足小根堆性质的笛卡尔树。 ● 笛卡尔树的结点有两个属性:键值 val、优先级 pri。其中,键值 val 预设,优先级 pri 随机或预设。 ●笛卡尔树可由数列构造,在区间最值查询、区间 topK 查询(range top k queries)等问题上有广泛应用。

hnjzsyjyj的专栏 847

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

poj 2201 Cartesian Tree 笛卡尔树

→题目链接← 【想说的话】 谁能告诉我笛卡尔树有什么妙的用处啊.... 【题解】 裸笛卡尔树 笛卡尔树的定义题中已经说的挺完整的了 建树时,先把所有的点以key从小到大排序,然后从前往后插入到树中 具体实现方法为:从根节点开始扫,当找到一个点满足val[x]大于val[now]并且val[x的右儿子]小于val[now](假设我们维护的是大根堆)时,就把【now】的父

everlasting的博客 463

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

POJ-2201 Cartesian Tree【笛卡尔树】

题目链接:http://poj.org/problem?id=2201 题目大意: 让你构造一棵笛卡尔树。 笛卡尔树的节点含有2个值,1个key,一个value,其中key是主键,value是辅键。一棵笛卡尔树就是:key升序,value升序或者降序。类似堆。 与treap的区别是:treap的value是随机值,是为了使树更加平衡引进的,而笛卡尔树的value是一个确定的值。 结构完全

飘过的小牛 3856

POJ 2201 Cartesian Tree 笛卡尔树裸题加讲解

题目:http://poj.org/problem?id=2201题意:给出一个n,在给出n对数(且命名为x,y),构建一棵树,满足以下条件: 对树上任意一个节点,有x > leftson_x 且x > rigthson_x 对树上任意一个节点,有y > father_y 构建完成后,输出每个点的父节点,左子节点,右子节点,没有的以0代替思路:笛卡尔树模板题。笛卡尔树每个节点有两个值,且称为val和

弱智就要多努力 718

POJ-2201 Cartesian Tree(笛卡尔树)

笛卡尔树是一棵二叉树,树的每个节点有两个值,一个为key,一个为value。光看key的话,笛卡尔树是一棵二叉搜索树,每个节点的左子树的key都比它小,右子树都比它大;光看value的话,笛卡尔树有点类似堆,根节点的value是最小(或者最大)的,每个节点的value都比它的子树要大。#include <iostream> #include <cstdio> #include <algorithm>

L. 381

POJ 2201 Cartesian Tree ——笛卡尔树

【题目分析】 构造一颗笛卡尔树,然后输出这棵树即可。 首先进行排序,然后用一个栈维护最右的树的节点信息,插入的时候按照第二关键字去找,找到之后插入,下面的树成为它的左子树即可。 然后插入分三种情况讨论(最下面,中间,成为了新的树根) 【代码】 #include <cstdio> #include <cstring> #include...

weixin_33670713的博客 171

POJ 2201 Cartesian Tree (笛卡尔树)

裸笛卡尔建树。 #include #include #include #include using namespace std; struct node { int key,value,id; bool operator < (const node &cmp)const { return key<cmp.key; } }sa

Jinx Jinx again 809

POJ 2201: Cartesian Tree 笛卡尔树

Cartesian Tree Time Limit: 10000MS   Memory Limit: 65536K Total Submissions: 3893   Accepted: 1551 Case Time Limit: 2000MS Description Let us consider a special

BlackJack 516

[poj2201]Cartesian Tree(笛卡尔树)

题目链接:http://poj.org/problem?id=2201 就是给你key和value,建出笛卡尔树。感觉笛卡尔树的建树过程真的优美,按key排序后,每次插入一个点,相当于从根一直向右走的路径上,找到value小于当前点value,并且value最大的点,插入即可,具体看代码吧。 区分笛卡尔式和treap:两者都有key和value,都既满足二叉搜索树的性质,也满足堆的性质,但tr...

weixin_34342578的博客 169

POJ - 2201 Cartesian Tree(笛卡尔树-单调栈/暴跳父亲)

题目链接:点击查看 题目大意:给出n个节点的key和val,构造出其笛卡尔树的原型 笛卡尔树的定义: 所谓笛卡尔树,就是将给定的n个二元组(key,val)建成一棵树。使得: 如果只关注key,那么这是一棵二叉搜索树 如果只关注val,那么这是一个堆 对于任意三个节点fa,ls,rs,满足: key[ls]<key[fa]<key[rs] val[fa]>=ma...

Falcon的博客 722

POJ-2201-Cartesian Tree(笛卡尔树)

Description Let us consider a special type of a binary search tree, called a cartesian tree. Recall that a binary search tree is a rooted ordered binary tree, such that for its every node x the fol

青春无悔 1963
上一篇: POJ 1785 Binary Search Heap Construction 【笛卡尔树构造,线段树RMQ(Range Max/Min Query)】
下一篇: POJ 1470 Closest Common Ancestors
wwwiskey
博客等级 码龄17年 112粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值