李超树 学习笔记

李超树学习笔记         牛客多校出了这样一道题,一颗有边权的树,对于一条路径 阅读详情

最近做多校联赛的时候,遇到了一道不会做的题,题解上写需要用到李超树,所以就去学习了一下。

参考博客:http://blog.youkuaiyun.com/clover_hxy/article/details/52503987

李超树的经典题目是bzoj的1568。
在一个平面里面,有两种操作:
1.每次在一个平面插入一个条直线(给出两个端点(x0,y0)和(x1,y1))
2.询问与x=k的相交的直线中,最上面的直线是哪一条。

对于这道题,以x轴开一棵线段树,每一个点记的是这个点所代表的区间里,与中点mid相交的线段中最高的是哪一条。
插入一条线段的时候,比较中点,即x取mid两个线段的值,如果斜率高的线段mid的大,那么[mid+1,r]这个线段一定是斜率高的直线更高,递归更新[l,mid]这个线段的,如果斜率高的线段mid的小,那么[l,mid]的值一定是斜率小的线段好,递归更新[mid+1,r]这个线段。注意要递归之前更新当前节点的值。
找答案的时候要从表示x=k的节点以及它祖先的所有线段都要找一下哪一条最高

#include<iostream>  
#include<cstdio>  
#include<algorithm>  
#include<cmath>  
#include<cstring>  
#define N 500003  
using namespace std;  
int n,m,tr[N*4];  
double a[N*2],b[N*2];  
int pd(int x,int y,int pos)  
{  
    return a[x]+(pos-1)*b[x]>a[y]+(pos-1)*b[y];  
}  
void change(int now,int l,int r,int x)  
{  
    if (l==r)    
    {  
        if (pd(x,tr[now],l))  
          tr[now]=x;  
        return;  
    }  
    int mid=(l+r)/2;  
    if (b[x]>b[tr[now]])  
     if (pd(x,tr[now],mid))  
      change(now<<1,l,mid,tr[now]),tr[now]=x;  
     else change(now<<1|1,mid+1,r,x);  
    if (b[x]<b[tr[now]])  
     if (pd(x,tr[now],mid))  
      change(now<<1|1,mid+1,r,tr[now]),tr[now]=x;  
     else change(now<<1,l,mid,x);  
}  
double getans(int k,int x)  
{  
    return a[k]+(x-1)*b[k];  
}  
double qjmax(int now,int l,int r,int x)  
{  
    if (l==r)  return getans(tr[now],x);  
    int mid=(l+r)/2;  
    double ans=getans(tr[now],x);  
    if (x<=mid)  ans=max(ans,qjmax(now<<1,l,mid,x));  
    else ans=max(ans,qjmax(now<<1|1,mid+1,r,x));  
    return ans;  
}  
int main()  
{  
    freopen("a.in","r",stdin);  
    freopen("my.out","w",stdout);  
    scanf("%d",&n);  
    for (int i=1;i<=n;i++)  
    {  
        char s[20]; scanf("%s",s);  
        if (s[0]=='P')  
         {  
            m++;  
            scanf("%lf%lf",&a[m],&b[m]);  
            change(1,1,N,m);  
         }  
        else  
        {  
            int x; scanf("%d",&x);  
            double t=qjmax(1,1,N,x);  
            int k=t;   
            printf("%d\n",k/100);  
        }  
    }  
}  
李超树算法完整总结 李超树主要用途:1. 维护一段区间的多条直线,维护区间 [L,R] 中的三条直线。 2. 支持单点查询多条直线最大/小值。如查询 mid 处的多条直线的纵坐标最大值。 3. 支持区间查询直线最大/小值。如查询区间 [L,R] 中各直线最值的最大值。 阅读详情

相关推荐

杭电AcmKeHaoWanLe模板1

3.10 线段树合并 . 3.11 树链剖分 3.12 李超线段树 . 3.14 左偏树 . 3.15 带修改区间第 k 小 . 3.16 Segment Be

李超线段树

什么是李超线段树 先以一个问题引入: 在平面上有两种操作(强制在线): 插入一条表达式为 L : y = k*x+b 的直线,给出 k ,b 。 给出 t,求当前所有直线中与直线 x = t 交点的纵坐标最大是多少 直线取 max 应该是得到一个下凸包,像这样(黑色的): 李超线段树是什么?线段树,当然是要维护区间 [L , R] 的一个信息,李超线段树维护的就是中点处最高的直线 比如下图,区间 [ 0 , 4 ] 的中点 x = 2 的最高直线为红色直线 利用这一信息,可以在 O(log n )

weach的博客 4721

【智驾与大模型】端到端与多模态大模型的精彩之旅

智驾和大模型的回顾与展望。开头的笔者自述也说了些心窝子话,边缘计算的监管刻不容缓!

仿生实验室:从0到1,制作人脸表情交互机器人,记录过程,软硬件全部开源,与君共襄盛举! 1318

【数据结构】李超线段树

我们用这条线段递归更新对应子树,用另一条线段作为懒标记更新整个区间,这就保证了递归下传的复杂度。不合法的点对就是原来的路径不经过环的,因为它们想走第二条路径就会经过环一次,会有点重复走。其中肯定有一个子区间被左区间或右区间完全包含,也就是说,在两条线段中,肯定有一条线段,只可能成为左区间的答案,或者只可能成为右区间的答案。如图,加入黄色线段后,只有红色节点的标记被更新,而绿色节点的标记还未被改变。这里我的写法是给李超线段树上的每个节点打个时间标记,记录它的线段是哪个时间段的,这样不用考虑删除的问题。

conti123的博客 1606

6层高速PCB设计实战:BGA布局与阻抗匹配关键解析

本文深入解析6层高速PCB设计中BGA布局与阻抗匹配的关键技术。通过实战经验分享,详细介绍了六层PCB层叠结构的选择与优化、BGA器件布局技巧、阻抗匹配的实战经验以及高速布线技巧,帮助工程师提升PCB设计水平,确保信号完整性和电源完整性。

weixin_28481133的博客 368

Overleaf-Latex-Elsevier-图、表、参考文献标题及引用、伪代码写法(绝对详细直观且易懂)

overleaf爱思唯尔模板踩过的一些坑以及解决办法

2403_87584552的博客 5851

李超线段树(Li-Chao Segment Tree)

李超线段树 李超线段树是一种用于维护平面直角坐标系内线段关系的数据结构。它常被用来处理这样一种形式的问题:给定一个平面直角坐标系,支持动态插入一条线段,询问从某一个位置 (X,+∞)(X,+\infty)(X,+∞) 向下看能看到的最高的一条线段(也就是给一条竖线,问这条竖线与所有线段的最高的交点 如上图,有三条线段,两条红色竖线代表两个询问,则点 AAA 与点 BBB 就是询问到的答案。 李超线段树的核心是维护每个区间的“最优势线段”,即在每个区间的中点处最高的线段。询问时我们可以对所有包含横坐标为

weixin_45630722的博客 1107

Oracle OCP 19c 认证1Z0-083考试大纲(Oracle官方版)

Oracle Database: Managing Multitenant Architecture Ed 1 course

#真题在线# 1588

【树形数据结构】李超线段树 (Li-Chao Tree)

李超线段树通过在每个区间维护中点最优线段,支持高效动态插入线段与单点最值查询,结合离散化可处理大坐标范围,常用于斜率优化等场景。

zhangmohan123321的博客 1137

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

从Unitree B2W到四足机器人:用Isaac Lab构建强化学习奖励函数的5个实战技巧

本文分享了在Isaac Lab仿真环境中,为Unitree B2W等四足机器人设计强化学习奖励函数的5个核心实战技巧。内容涵盖奖励函数的结构化组合、轮腿混合机器人的适配策略、课程学习的动态调整、域随机化增强鲁棒性以及高效的调试可视化方法,旨在帮助开发者构建更稳定、高效的机器人运动策略。

lg888的博客 1066

牛客挑战赛54F题解 & 李超树学习笔记

场上瞎写暴力乱搞结果拿了一血(汗颜...不过还是得出题人谢罪) 考虑按点权从小到大依次插入每个点构建新树,发现每个点u能向任意一个a[v] < a[u]的v点连边,产生贡献为a[v] * dis(u, v) 然后我直接暴力按点权由小到大从每个点更新其他点,减了点枝就过了...(想了一下应该随便构造条链卡下就能卡掉) 正解: 点分+李超树 ...

caoyang1123的博客 449

七、永磁同步电机矢量控制(FOC)—MTPA控制及Simulink仿真

前面几节的内容已经完成Id=0控制策略的理论和仿真以及双闭环PI参数整定。在接下来几节中,将陆续讲解MTPA、弱磁控制等内容。

weixin_45182459的博客 8191

李超树学习笔记(lg4097+lg4254)

李超树是用来维护形如支持插入一条线段/直线,查询横坐标的某个点对应的maxmaxmax函数值的问题。 不妨分成两部分来讲。 首先我们先来讨论插入线段的(这个属于特殊情况) 对于李超树来说,他线段树上每个点维护的是一个线段,对应的是这段区间中最靠上的那条线段,或者更准确的是,在这个区间的所有最小值点中,有点在这条线段上。 那么考虑插入的时候,我们对于一条线段,如果当前区间与修改区间有交的话,则进行修...

y_immortal的博客 QwQ(qdez_ymh) 510

为YOLO11更换Backbone(一):轻量化之星GhostNet

摘要: 本文重点介绍了轻量化Backbone网络GhostNet及其在YOLO11中的应用。首先分析了Backbone网络在目标检测中的重要性,指出其需平衡特征提取能力和计算效率的需求。然后详细解析了GhostNet的核心思想,包括其通过"幽灵模块"生成冗余特征的设计原理,该模块使用1×1卷积生成少量内在特征,再通过廉价线性变换生成更多幽灵特征,显著降低了计算量。GhostNet的创新设计使其在保持精度的同时大幅减少了参数和FLOPs,为YOLO11等目标检测模型提供了高效的轻量化解决方

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1498

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

李超线段树学习笔记

前言: 其实我很早就听说过李超树了,之前也有好多次想学这个东西,但是都因为各种原因没有学习。现在终于抽出了点时间学习了这个数据结构。 进入正题。 首先是李超树能解决什么问题。可以理解为,现在有一个二维坐标系,横坐标是正整数。李超树可以解决给一个区间加入一条斜率不一定是0的线段,询问一个所有覆盖这个横坐标的线段的最大或最小值。或者在一个横坐标区间中的所有线段的最大或最小值(可能只有部分在区间内)。 下面介绍一下怎么维护。这里顺带了一个正确性证明。我看网上似乎很少有人证明李超树的正确性。我自己想了一下,觉得不是

forever_shi的博客 488

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

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

李超树(无脑秒斜率)

文章目录一.What?二.How?1.插入(update)2.查询(query)三.板题( [\[JSOI2008\]Blue Mary开公司](https://www.luogu.com.cn/problem/P4254))五.高端操作1.动态开点2.合并(merge)四.ZZH的旅行Thanks! 一.What? 李超树个人认为用处有点大,因为会了李超树,就再也不怕斜率优化做不出来了,你但凡能够推出一个一次函数的式子那铁定用李超树。所以撒子是李超树呀?就是变异的线段树,即在某个区间内维护区间中点值最大的

weixin_43908980的博客 1431

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深度学习工具包 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")

李超树

#include<iostream> #include<cstdio> using namespace std; const int MAX_N=10010; struct line{ double k,b; }a[MAX_N]; int tr[MAX_X]; double f(int id,int x){ return a[id].k*(x-1)+a[id].b; }...

EDGiboy的博客 411

李超树——倾斜的线段树

介绍 李超树用以解决一种问题:向平面上插入若干条直线(或线段),查询与直线x=a相交线段的交点坐标y的最大值, 别看这种问题好像挺个别,很多平面题或DP(斜率优化)的题都可以转换成这种问题,而遇到这种问题,李超树比平衡树好打得多。 思想 李超树代码看上去和普通线段树非常像,不同的是,每个节点维护的不是的区间,而是两端x坐标为 l、r 的一条带斜率的线段: (注意,每层的线段高低关系不确定,这样画只是为了好看) 这样查询只需像线段树那样查就是了, 然后怎么插入线段呢?(直线就是 -inf 到 i

偶耶的博客 478

知识点 - 李超树

知识点 - 李超树 解决问题类型: 李超树是一种线段树的应用,主要应用场合为:单点集合域,区间等差插入,求单点最值。 动态地插入多条二维线段,询问某个xxx对应的yyy值的最值。 修改[L,R,b,k][L,R,b,k][L,R,b,k],对于第i∈[L,R]i∈[L,R]i∈[L,R]个集合,插入b+(i−L)kb+(i−L)kb+(i−L)k,询问某个集合的最大值。 实现 每个线段树结...

qq_41848675的博客 287

数据结构-李超树学习小结

数据结构-李超树学习小结前言:正文: 前言: 李超树是由杭州学军中学的国家集训队大佬李超发明的,又称超哥线段树,主要功能是用线段树来维护某一点上对应的最高(最低)的线段(或直线)。在数学上来表述,就是处理在某一区间上许多条一次函数的图像y=ki∗x+by=k_i*x+by=ki​∗x+b,维护某一个xxx的值对应的不同的yyy的最大值(最小值)。 正文: 其实李超树并不复杂,主要依赖于线段树,线段...

ha_ing的博客 3849

动态开点李超树(例题+板子总结)

动态开点李超树(例题+板子总结)

小衣同学的博客 835

线段树之李超树

Brief 李超树是一种线段树的应用,主要应用场合为:单点集合域,区间等差插入,求单点最值。 For Example - 动态地插入多条二维线段,询问某个xxx对应的yyy值的最值。 - 修改[L,R,b,k][L,R,b,k][L,R,b,k],对于第i∈[L,R]i\in[L,R]i∈[L,R]个集合,插入b+(i−L)kb+(i-L)kb+(i−L)k,询问某个集合的最大值。 Proce...

QAQ 780
上一篇: Best定理和MatrixTree定理 学习笔记
下一篇: 状态机的编写(使用C++)
tmkkkkk
博客等级 码龄17年 13粉丝 11原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值