动态规划:前缀最值

AtCoder Beginner Contest 255「C 二分」「D 前缀和」「E」 阅读详情

前缀最值

什么?动态规划还能计算股票的最大利润?学好动态规划就能炒股了吗,那我倒要看看是怎么回事。

题干

给定一个数组prices,prices[i]表示股票i天的价格,只能在某天买入并在未来某一天卖出,计算你所能获得的最大利润。

题目分析

emm,需要怎么说吗,像这种只要答案不需要给出过程的题目,八九不离十,就是动态规划了。我太懂了。。

动态规划题目的解题步骤:

  1. 定义最优状态数组dp = [],
  2. 确定状态转移方程dp[i]=xxxx
  3. 递推出最终答案result

解题的根本思路就是:从下标0开始找到每个下标为止(不包括当前下标)的最小值,先找出每个下标的最小值。接着找每个最小值右边的最大值。两者相减得到的就是最大利润。取最大值就是我们要的答案

解题步骤

  1. 定以最佳状态,dp[],dp[i]表示xx表为i及之前的数值的最小值

  2. 计算前缀最小值

    如何计算?

    如果只有1位,前面没有数,那么它就是最小值,即:dp[0]=prices[0]

    如果是有2位,前面有1位数,那么最小值就是当前值比较前一位为止的最小值,即dp[1]=min(dp[1-1],prices[1])

    如果是有3位,那么最小值也是当前值比较前一位为止的最小值,即dp[2]=min(dp[2-1],prices[2])

  3. 定义一个结果最大值,再遍历一遍价格,用当前价格减去当前下标前的最小值,取遍历结果的最大值就是我们要的答案

代码实现(js)

function sharesBisnes(){
    // 股票的最佳买卖时机
    /* 前缀最值
		 给定一个数组prices,prices[i]表示股票i天的价格,只能在某天买入并在未来某一天卖出,计算你所能获得的最大利润
		*/
    let prices =[7,1,5,3,6,4] // 结果为:5 ;i:1和4
    // 算出前面i天的最低价,记为dp[i]
    dp = []
    prices.forEach((item,i)=>{
        if(i == 0){
            dp[i] = item
        }else{
            dp[i] = min(dp[i-1],item)
        }
    })
    // 用第i天前最低价减去第i天价格,同时记录最大值,就得到最大利润了
    ans = 0;
    prices.forEach((item,i)=>{
        ans = max(item-dp[i],ans)
    })
    document.write("最大利润为"+ans)
}
function max(a,b){
    return a > b ? a : b
}

总结

求前缀最值其实比较简单,这篇文废话也相对比较多。本文是包括了计算前缀最值,但不是直接用前缀最值来解答。

前缀最值就是求到i为止的最大值或者最小值,用遍历的方式同样可以实。但是用动态规划的思想,前一位数已经算出最小值了,那么当前这位数的最值,要么就是前一位的最值要么就是本身咯,这样往后推,不管数组多长,我们的时间复杂度一直是一个常数。

最长子串问题的三种算法比较:多重循环、前缀和与动态规划 首先我们看一个来自蓝桥C++算法等级考试的问题:给定一个仅包含数字的字符串,找出满足以下要求的最长子串。 虽然这个问题可以用动态规划来解决,但前缀和是更合适的解法。这也提醒我们在算法选择时要根据问题的本质特点来选择最适合的解法。 阅读详情

相关推荐

vue 插件vue-awesome-swiper实现 三张图片,左右两边显示一半的效果的示例

希望我的愚见能够帮助你哦~,若有不足之处,还望指出,你们有更好的解决方法,欢迎大家在评论区下方留言支持,大家一起相互学习参考呀~

weixin_50450473的博客 3245

#646. 【入门】前缀最大值

比如,有数列:666 304 692 188 596,前缀最大值为:666 666 692 692 692,和为3408。数列为{666,304,692,188,596},前缀最大值为{666,666,692,692,692},和为3408。即:给出长度为n的数列a[i],求出对于所有1

XTX的博客 1307

SRRC型号核准的模块豁免规则解析——如何利用完整型模块简化设备认证流程

本文详细解析了SRRC型号核准中模块豁免规则的应用,重点介绍了完整型模块的技术定义、豁免条件及实际应用场景。通过合理利用完整型模块,企业可显著简化设备认证流程,缩短上市周期并降低成本。文章还提供了模块选型指南和常见问题解决方案,帮助工程师高效应对SRRC认证挑战。

weixin_29306011的博客 933

算法:前缀和 前缀最大值 二分查找

前缀和 前缀最大值 二分查找

m0_74087709的博客 2044

riscv32-gcc工具链实战:从下载到编译的完整指南

本文提供了一份详尽的riscv32-gcc工具链实战指南,涵盖从官方渠道下载预编译版本、正确选择riscv32-glibc版本、配置环境变量到实战编译的全过程。通过清晰的步骤和避坑指南,帮助开发者快速搭建稳定的RISC-V交叉编译环境,并成功编译从Hello World到Linux内核的程序。

s3t4u的博客 675

Altium Designer操作技巧(4)——如何利用嘉立创EDA来输出3D封装到AD封装库?

本文介绍了利用嘉立创EDA和FreeCAD软件为PCB元件添加3D模型的方法。首先在嘉立创EDA中搜索元件编号并导出3D模型,然后使用FreeCAD删除3D模型中的PCB基板部分,最后将处理后的3D模型导入PCB封装库并更新到PCB设计中。文章详细讲解了每个步骤的操作流程,包括模型导出、基板删除、位置调整等关键环节,并提供了解决常见问题的方法。通过这种方法,电子工程师可以快速获得元器件的3D模型,提高PCB设计的准确性。

u012526819的博客 2583

前缀长度

问题: 在MySQL中,前缀长度最大值为255字节。对于存储引擎为MyISAM或InnoDB的数据表,前缀最长为1000字节。 在MySQL中,对于TEXT和BLOB这种大数据类型的字段,必须给出前缀长度(length)才能成功创建索引。 办法: 可以通过计算选择性来确定前缀索引的选择性,计算方法如下 全列选择性:SELECT COUNT(DISTINCT column_name) /...

gq0811的博客 2685

Akamai移动端Sensor数据采集与BMP风控机制深度解析

本文深度解析了Akamai在移动端风控中的核心机制,重点阐述了Sensor数据如何通过采集陀螺仪、加速度计等硬件信息,结合设备指纹生成连续且符合物理规律的行为轨迹。详细剖析了数据从采集、加密校验到通过BMP风控三重验证(校验位、时间差、数据逻辑)的完整流程,并提供了从模拟优化到自建风控模型的实用应对思路。

quiet的专栏 284

LeetCode 334. 递增的三元子序列--计算前缀最大值

递增的三元子序列 给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。 示例 1: 输入:nums = [1,2,3,4,5] 输出:true 解释:任何 i < j < k 的三元组都满足题意 示例 2: 输入:nums = [5,4,3,2,1] 输出:f.

weixin_43918046的博客 502

电路抗干扰原理及应用(1)

电路抗干扰原理——介绍干扰源、干扰途径、抗干扰技术(接地技术)

qq_34758408的博客 2060

Istio ICA考试之路---3-2

部署2个测试容器,分别是test和test2.test注入标签subset=v1。这里文档中省略了metadata的3行,可以从前面任意一个yaml复制粘贴过来。通过test2测试容器访问,50%概率触发500故障注入。通过test测试容器访问,20%概率触发延迟注入。发起20次请求,一共10次被500。

Q先生 725

算法(10)-股票买卖

考虑所有的删除情况,采用广度优先,第一层为原字符串表达式,第二层为删除一个字符,第三层为删除两个字符的情况,不断广度优先遍历,直至找到第一个有效的删除数量,即为最少数量。给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…dp[i] 表示以下标 i字符结尾的最长有效括号的长度,(以s[i]结尾能构成的有效字符串的长度)依据s[i] 与之前的括号的配对情况,更行dp数组。遍历完字符串,查看栈是否为空,空则有效,非空,无效。

sinat_40624829的博客 541

VHDL语法学习笔记:一文掌握VHDL语法

今天给大侠带来FPGA 之 VHDL 语法学习笔记,话不多说,上货。 VHDL语法学习笔记 一、VHDL简介 1.1 VHDL 的历史 VHDL 的 英 文 全 名 是 Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,诞生于 1982 年。 1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言。自 IEEE 公布了 VHDL 的标准版本 IEEE-1076(简称 87 版)...

2万+

数据结构与算法学习笔记(Acwing 提高课)----动态规划·单调队列优化DP

@ author: 明月清了个风ps⭐️单调队列基本模型是滑动窗口中的最值问题,一般在窗口中是单调的。暴力的做法就是循环对应长度的区间进行检查,对其进行优化就是寻找这个窗口中的最优值,也就是排除一些一定不会被选中的值,将时间复杂度降为O(n),因为将窗口中的搜索降到了O(1),具体的可以复习基础课中的[单调队列](

weixin_60278491的博客 932

NTscan扫描工具

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

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

三条面经题目

第一题:有m个餐厅,其中抽n个改造成停车场,使每个餐厅到最近的停车场距离之和最小 定义:dp[i][j]表示前i个餐厅有j个停车场的 初始:cost[k][i]表示第k个餐厅到第i个餐厅只有1个停车场服务时的最小矩离和 dp[i][1]的就是cost[1][i],注意只有1个停车场时一定是取中位数的位置 递堆:dp[i][j]=min(dp[i][j],dp[k-1][j-1]+cost[k][i]) 前i个餐厅有j个停车场相当于前k-1个餐厅有j-1个停车场,然后第k到i个餐厅有1个停车场 优化:

cj1064789374的博客 208

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【LeetCode周赛】第388场周赛

LeetCode第388场周赛: 100233. 重新分装苹果 简单、100247. 幸福值最大化的选择方案 中等、100251. 数组中的最短非公共子字符串、100216. K 个不相交子数组的最大能量值

lunaol的博客 559

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【bzoj5210】最大连通子块和 树链剖分+线段树+可删除堆维护树形动态dp

题目描述 给出一棵n个点、以1为根的有根树,点有点权。要求支持如下两种操作: M x y:将点x的点权改为y; Q x:求以x为根的子树的最大连通子块和。 其中,一棵子树的最大连通子块和指的是:该子树所有子连通块的点权和中的最大值 (本题中子连通块包括空连通块,点权和为0)。 输入 第一行两个整数n、m,表示树的点数以及操作的数目。 第二行n个整数,第i个整数w_...

weixin_30652879的博客 200

动态规划 dp 题目与讲解

本文介绍了动态规划解决旅行计划问题的方法。题目要求从城市0到城市n,可选择高铁或飞机(不超过k次),连续飞行算一次。使用DP[t][i]表示坐t次飞机到达城市i的最短时间,分两种情况转移:坐高铁或连续飞行(利用前缀和优化)。代码实现中预处理飞行时间前缀和,通过双重循环(飞机次数和城市)进行状态转移,最后取最小值作为答案。该方法有效解决了带约束的最短时间路径问题。

user_4的博客 267

算法札记:如何判断一个DP能否单调队列优化

单调队列优化适用于解决特定类型的动态规划问题,特别是涉及区间最值查询(如滑动窗口最大值/最小值)的情况。适用条件包括:DP状态与区间最值相关、问题可转化为前缀最值查询。通过维护单调递增/递减的双端队列,可将时间复杂度从O(n²)优化到O(n)。实现步骤包括初始化队列、遍历时维护单调性、通过队首快速查询最值。该方法能高效处理窗口类最值问题,是优化DP问题的有效手段。

Keven_11的博客 210

Day2 思路

找d[1]-h[1],d[2]-h[2],……,d[j-1]-h[j-1]的最小值 //O(n)预处理d[1]-h[1],d[2]-h[2],,d[j-1]-h[j-1]『栈』:开6个栈,大取出,直至小,加。B 枚举+前缀最值/DP。//枚举j,快速处理i。n页 长度为n的数组。

zch_416811的博客 209

【备战秋招】每日一题:2023.04.09-招商银行-第二题-特殊的01串

为了更好的阅读体检,可以查看我的算法。

m0_73659489的博客 128

【再谈动态规划】

本期是动态规划的最后一期博客,动态规划的题还有很多,博主只是带大家简单的介绍了一下动态规划,还有待大家一起努力。我是Tom-猫如果觉得有帮助的话,记得一键三连哦ヾ(≧▽≦*)o。

Tom_猫的博客 1699

【算法】动态规划 ④ ( 动态规划分类 | 坐标型动态规划 | 前缀划分型动态规划 | 前缀匹配型动态规划 | 区间型动态规划 | 背包型动态规划 )

一、动态规划场景、 二、动态规划分类、 1、坐标型动态规划、 2、前缀划分型动态规划、 3、前缀匹配型动态规划、 4、区间型动态规划、 5、背包型动态规划、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1711

【leetcode】动态规划::前缀和

dp[x1-1][y1-1]表示以(1,1)为左上角,(x1-1,y1-1)为右下角的子矩阵的和。其中,dp[i-1][j]表示以(1,1)为左上角,(i-1,j)为右下角的子矩阵的和;dp[i][j-1]表示以(1,1)为左上角,(i,j-1)为右下角的子矩阵的和;dp[i-1][j-1]表示以(1,1)为左上角,(i-1,j-1)为右下角的子矩阵的和;A[i][j]表示矩阵A的元素。首先,我们可以定义一个辅助矩阵dp,其中dp[i][j]表示以(1,1)为左上角,(i,j)为右下角的子矩阵的和。

石墨博客 1689

前缀最值差

给出一组整数,它的前x个数称为它的前缀,前缀最值差指的是:数组前x个数中最大值和最小值的差,这个问题到也难不倒小明。但现在有q个问题询问,要求算出每个问题的前缀最值差。这样工作量就太大了。第一行有一个正整数N,表示给出的这组正整数的个数。第二行有N个正整数ai。第三行有一个正整数q,表示有q个询问。第四行有q个正整数xi,分别表示要求前xi个数中最大值和最小值的差。输出,每个询问的答案。

jianzhaoyan2015的博客 286

前缀和算法(类似于动态规划算法)

前缀和:在一些特定的题里面,要先把一段连续的数的和先算出来,用数组来接收,然后利用这个数组返回题目需要的答案干讲无力 题目解释更好 请往下看。

dabai__a的博客 2018
上一篇: 动态规划:后缀最值
下一篇: 动态规划:接雨水
jayLog
博客等级 码龄7年 318粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jayLog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值