0x02 内容总结与例题习题

0x02.基本算法 — 递推与递归 目录递推与递归分治模拟计算机实现递归相应习题:0.AcWing 92. 递归实现指数型枚举(递归/循环+位运算)1.AcWing 93. 递归实现组合型枚举2.AcWing 94. 递归实现排列型枚举 (全排列)3.AcWing 95. 费解的开关4.奇怪的汉诺塔 (n盘3柱)4.1奇怪的汉诺塔++(n盘m柱)5.POJ 1845 Sumdiv(AcWing 97. 约数之和)(数论)(分治)6.... 阅读详情

《算法竞赛进阶指南》读书笔记汇总
这里面是我在阅读《算法竞赛进阶指南》这本书时的一些思考,有兴趣可以瞧瞧!
如若发现什么问题,可以通过评论或者私信作者提出。希望各位大佬不吝赐教!

内容总结

递推与递归的宏观描述

对于一个待求解的问题,当它局限在某处边界、某个小范围或者某种特殊情形下时,其答案往往是已知的。如果能够将该解答的应用场景扩大到原问题的状态空间,并且扩展过程的每个步骤具有相似性,就可以考虑使用递推或者递归求解。

简单应用

话不多说,直接看题。

【例题】费解的开关(AcWing95)

题目链接
思路: 通过观察我们不难发现三个性质。
1.每个位置至多被点击一次
2.若固定了第一行,则满足题意的点击方案至多只有一种
3.点击的先后顺序不影响最终结果
所以我们只需要枚举第一行的所有点击状态,就可以覆盖所有的点击情况了。固定了第一行的状态之后,我们只需要从第二行开始一行一行往下递推,最终如果棋盘可以全部变为0则更新答案。

AC代码:

#include<bits/stdc++.h>
#define LL long long
#define INF 0x3f3f3f3f
#define N 6

using namespace std;

char a[N][N],b[N][N];

void f(char& x){
    if(x == '0') x = '1';
    else x = '0';
}

void change(int x,int y){
    f(b[x][y]);
    if(x > 0) f(b[x - 1][y]);
    if(x < 4) f(b[x + 1][y]);
    if(y < 4) f(b[x][y + 1]);
    if(y > 0) f(b[x][y - 1]);
}

void solve(){
    for(int i = 0;i < 5;i ++)
        scanf("%s",&a[i]);

    int ans = 10;

    for(int i = 0;i < 32;i ++){
        memcpy(b,a,sizeof(a));

        int tmp = 0;
        for(int j = 0;j < 5;j ++){
            if(i & (1 << j))
                change(0,j),tmp ++;
        }

        for(int j = 1;j < 5;j ++){
            for(int k = 0;k < 5;k ++){
                if(b[j - 1][k] == '0')
                    change(j,k),tmp ++;
            }
        }
        int fl = 1;
        for(int j = 0;j < 5;j ++)
        if(b[4][j] == '0'){
            fl = 0;
            break;
        }
        if(fl){
            ans = min(ans,tmp);
        }
    }

    if(ans > 6) puts("-1");
    else printf("%d\n",ans);
}

int main(){
    int t;
    scanf("%d",&t);
    while(t --)
    solve();
    return 0;
}

【例题】奇怪的汉诺塔(AcWing96)

题目链接
思路: 我们先考虑 n n n个盘子 3 3 3座塔的情况。设 d [ i ] d[i] d[i]为求解 i i i个盘子3座塔时所需的最小步数,则有 d [ i ] = 2 ∗ d [ i − 1 ] + 1 d[i] = 2 * d[i - 1] + 1 d[i]=2∗d[i−1]+1。我们把三座塔称为 A 、 B 、 C A、B、C A、B、C(起始状态 i i i个盘子都在 A A A),则这个递推式表示的是我们先把 i − 1 i - 1 i−1个盘子移动到 B B B(最少需要 d [ i − 1 ] d[i - 1] d[i−1]步,然后把1个盘子移动到 C C C(需要一步),再把 B B B上的一个盘子移动到 C C C(最少需要 d [ i − 1 ] d[i - 1] d[i−1]步)。
回到本题,我们类似地设 f [ i ] f[i] f[i]为求解 i i i个盘子4座塔时所需的最小步数,则类似的有 f [ i ] = m i n ( 2 ∗ f [ j ] + d [ i − j ] ) f[i] = min(2 * f[j] + d[ i - j ]) f[i]=min(2∗f[j]+d[i−j]),其中 1 < = j < n 1 <= j < n 1<=j<n,自己思考一下这个式子的含义吧。

AC代码:

#include<bits/stdc++.h>

using namespace std;

int d[20],f[20];

int main(){
    d[1] = 1;
    for(int i = 2;i <= 12;i ++)
        d[i] = 2 * d[i - 1] + 1;
    
    memset(f,0x3f,sizeof(f));
    
    f[1] = 1;
    for(int i = 2;i <= 12;i ++)
        for(int j = 1;j < 12;j ++)
            f[i] = min(f[i],2 * f[j] + d[i - j]);
            
    for(int i = 1;i <= 12;i ++)
        cout << f[i] << endl;
    return 0;
}

分形

这是个有意思的递归问题。
直接上题目

【例题】分形之城(AcWing98)

题目链接
思路: 本题的关键是求出编号为 M M M(编号从0开始)的房屋在 N N N级城市中的位置。把该问题记为: c a l c ( N , M ) calc(N,M) calc(N,M),本题要求的就是 c a l c ( N , S ) calc(N,S) calc(N,S)与 c a l c ( N , D ) calc(N,D) calc(N,D)之间的距离。由题意我们可以知道 N N N级城市由4个 N − 1 N - 1 N−1级城市按照一定的规律顺时针拼接而成。记 c n t ( N ) cnt(N) cnt(N)为N级城市的房屋数量,由题意得, c n t ( N ) = 2 2 ∗ n cnt(N) = 2 ^{2 * n} cnt(N)=22∗n。则编号为 M M M的房屋在 N − 1 N - 1 N−1级城市中的编号就为 M % c n t ( N − 1 ) M \% cnt(N - 1) M%cnt(N−1)。那么我们可以递归求出 M M M在 N − 1 N - 1 N−1级城市中的位置 ( x , y ) (x,y) (x,y)。
这时我们还需要知道 M M M在 N N N级城市哪一块 N − 1 N - 1 N−1城市里面,显然令 z = M / c n t ( N − 1 ) z = M / cnt(N - 1) z=M/cnt(N−1)就可以得到实在哪一块啦。
那么分为下面四种情况:
当 z = 0 z = 0 z=0时,说明在左上角那一块。左上角由 N − 1 N - 1 N−1级城市顺时针旋转 90 ° 90° 90°之后,水平翻转得到。由坐标变换公式可以得到 M M M在 N N N级城市中的坐标为 ( y , x ) (y,x) (y,x)
当 z = 1 z = 1 z=1时,坐标为 ( x , y + l e n ) (x,y + len) (x,y+len)
当 z = 2 z = 2 z=2时,坐标为 ( x + l e n , y + l e n ) (x + len,y + len) (x+len,y+len)
当 z = 3 z = 3 z=3时,坐标为 ( 2 ∗ l e n − y − 1 , l e n − x − 1 ) (2 * len - y - 1,len - x - 1) (2∗len−y−1,len−x−1)
可以利用坐标变换公式自己推一推!
( x , y ) (x,y) (x,y)顺时针旋转 θ θ θ角度得到的坐标为:
在这里插入图片描述

AC代码:

#include<bits/stdc++.h>
#define LL long long
using namespace std;

LL a,b;
int n;

long double dis(pair<LL,LL> p1,pair<LL,LL> p2){
    return 10 * sqrt((p1.first - p2.first) * (p1.first - p2.first) + (p1.second - p2.second) * (p1.second - p2.second));
}

pair<LL,LL> cal(int n, LL m){
    if(n == 0) return make_pair(0,0);
    LL len = 1LL << (n - 1),cnt = 1LL << (2* n - 2);
    pair<LL,LL> pos = cal(n - 1,m % cnt);
    LL x = pos.first,y = pos.second;
    LL z = m / cnt;
    if(z == 0) return make_pair(y,x);
    else if(z == 1) return make_pair(x,y + len);
    else if(z == 2) return make_pair(x + len,y + len);
    else if(z == 3) return make_pair(2 * len - y - 1,len - x - 1);
}

void solve(){
    scanf("%d%lld%lld",&n,&a,&b);
    pair<LL,LL> p1 = cal(n,a - 1);
    pair<LL,LL> p2 = cal(n,b - 1);
    printf("%lld\n",(LL)(dis(p1,p2) + 0.5));
}

int main(){
    int t;scanf("%d",&t);
    while(t --)
    solve();
    return 0;
}

习题

【练习】分形(AcWing118)

题目链接
思路: 这题和例题很像,也是定位坐标,但是比较简单,就不过多赘述了。就是递归下去找到每一个X的位置标记一下就好啦。

AC代码:

#include<bits/stdc++.h>
#define N 5005

using namespace std;

int n;
int a[N][N];

void dfs(int n,int x,int y){
    if(n == 1){
        a[x][y] = 1;
        return;
    }
    int len = pow(3,n - 2);
    dfs(n - 1,x - len,y - len);
    dfs(n - 1,x - 2 * len,y);
    dfs(n - 1,x,y - 2 * len);
    dfs(n - 1,x,y);
    dfs(n - 1,x - 2 * len,y - 2 * len);
}

void solve(){
    dfs(n,pow(3,n - 1),pow(3,n - 1));
    for(int i = 1;i <= pow(3,n - 1);i ++)
    {
        for(int j = 1;j <= pow(3,n - 1);j ++)
        {
            if(a[i][j]) putchar('X');
            else putchar(' ');
        }
        puts("");
    }
    puts("-");
}

int main(){
    while(scanf("%d",&n) && n != -1)
        solve();
    return 0;
}

【练习】袭击(AcWing119)

思路: 平面最近点对模板题

AC代码:

#include<bits/stdc++.h>
#define N 200005

using namespace std;

const double INF = 1e10;

struct Point{
    double x,y;
    bool type;

    bool operator <(const Point& b)const{
        return x < b.x;
    }

    bool operator == (const Point& b)const{
        return x == b.x && y == b.y && type == b.type;
    }
}p[N],tmp[N];

double dist(Point& a,Point& b){
    if(a.type == b.type) return INF;
    double dx = a.x - b.x,dy = a.y - b.y;
    return sqrt(dx * dx + dy * dy);
}

double dfs(int l,int r){
    if(l >= r){
        return INF;
    }
//    printf("l = %d r = %d\n",l,r);
    int mid = (l + r) >> 1;
    double midx = p[mid].x;
    double res = min(dfs(l,mid),dfs(mid + 1,r));
    {
        int i = l,j = mid + 1,k = l;
        while(i <= mid && j <= r){
            if(p[i].y <= p[j].y) tmp[k ++] = p[i ++];
            else tmp[k ++] = p[j ++];
        }
        while(i <= mid) tmp[k ++] = p[i ++];
        while(j <= r) tmp[k ++] = p[j ++];

        for(i = l;i <= r;i ++) p[i] = tmp[i];
    }

    int cnt = 0;
    for(int i = l;i <= r;i ++)
        if(p[i].x >= midx - res && p[i].x <= midx + res)
            tmp[++ cnt] = p[i];

    for(int i = 1;i <= cnt;i ++){
        int tmpcnt = 0;
        for(int j = i - 1;j >= 1 && tmp[i].y - tmp[j].y < res;j --){
            res = min(res,dist(tmp[i],tmp[j])),tmpcnt ++;
        }
    }


    return res;
}

int main(){
//    freopen("in.txt","r",stdin);
    int T;scanf("%d",&T);
    while(T --){
        int n;
        scanf("%d",&n);
        for(int i = 1;i <= n;i ++)
            scanf("%lf%lf",&p[i].x,&p[i].y),p[i].type = 0;
        for(int i = n + 1;i <= 2 * n;i ++)
            scanf("%lf%lf",&p[i].x,&p[i].y),p[i].type = 1;

        sort(p + 1,p + 1 + 2 * n);
        int len = unique(p + 1,p + 1 + 2 * n) - p - 1;

        printf("%.3f\n",dfs(1,len));
    }
    return 0;
}

汽车工程师必看:UDS 0x19服务实战解析(含0x01/0x02服务完整报文示例) 本文深度解析汽车诊断核心UDS 0x19服务,重点剖析0x01与0x02子服务的实战应用。通过完整的DTC状态机拆解、位运算逻辑及真实报文示例,帮助工程师精准掌握故障码的读取、统计与解析,构建完整的诊断问题分析框架。 阅读详情

相关推荐

C# Modbus通信从入门到精通(23)——Modbus TCP(0x02功能码与C#代码实现)

本文详细介绍了ModbusTCP协议中0x02读输入线圈功能码的原理、发送报文、返回报文,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 1654

【0x02】整数运算

Java运算符 + - * / % java两个整数做/运算的结果也是整数的。 Java支持+=、-=、/=、*=、%=等写法。 Java支持C风格的自增自减。 移位运算 移位运算可以看我的另一篇文章,讲的很详细。廖雪峰老师这点讲得不好。 位运算 位运算是按位进行与、或、非和异或的运算。(即对应位进行这些运算) n = 0 & 0; // 0 n = 0 & 1; // 0 n ...

weixin_41687289的博客 1242

C# Modbus通信从入门到精通(4)——Modbus RTU(0x02功能码与C#代码实现)

本文详细介绍了ModbusRTU协议中0x02读输入线圈功能码的原理、发送报文、返回报文,由高级工程师多年经验总结而成,绝对干货!

qq_34059233的博客 2927

五、操作符复习

i=0,执行 i = a++ || ++b || d++ 时,先执行a++,因为是后置++所以此时a还是为0,但是因为是逻辑或,会继续往下走,++b为前置++,此时b为3,为真,就不会往下继续执行了,d++不算数。首先i的初始值是0,执行i = a++ && ++b && d++ 时,先执行的是a++,a初始值为0,因为是后置++的原因,此时a仍然为0,逻辑与碰到0,就不会再往下继续执行了,所以后面的++b,d++都不算数。// 5÷2 = 2.5,有1个浮点数,条件就成立,执行浮点数除法。

m0_74345230的博客 1176

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇

Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇 文章目录Oracle11g安装教程、配置实例、监听、客户端程序详解_Windows篇前言一、数据库的安装前准备,前提是没有安装过!!!二、仅安装数据库软件(数据库运行环境)三、添加数据库实例四、设置监听程序,让数据库可以通过网络访问五、为目标数据库设置网名总结 前言 如果需要安装包:联系我看到会给你链接,因为现在官网已经不提供10g,11g的安装包了,在网盘保存望悉知(回复不会很及时,下班看到会回复敬请谅解)。 提示:以下

zhx__的博客 5632

Applied Energy期刊小白论文投稿模板-流程经验分享

Applied Energy期刊小白论文投稿模板-流程经验分享,Elsevier期刊(爱思唯尔)投稿流程

zzu_Flyer的博客 4万+

蓝桥杯串口2应用

#include&lt;reg51.h&gt; /* 串口2只能选定时器2作为波特率发生器 */ //注意串口2:RXD2~P1^0,TXD2~P1^1 //根据芯片手册说明,在单片机1T模式下(不12分频)串口在模式0(8位USART)波特率 = Sysclk/(65536-[T2H,T2L])/4 //这个宏定义就是根据波特率来就算定时器应该设定的初值 #define Baud_Rate...

分享深度学习,机器学习,大模型的相关知识 1225

使用IDF和VSCode构建ESP32的开发环境

本文主要介绍构建使用IDF和VS-CODE 工具构建ESP32的开发环境的详细步骤,还应用IDF和VS CODE创建ESP32的项目文件,并实现编译和下载功能。

mftang的博客 6820

0x02是什么意思_计算机为什么能够读懂程序代码?

来源:业余码农作者:Amazing1001 引子上一回,我们的主人公小A初次亮相,凭借基础的前后端理解,从技术实现的层面为我们剖析了微信扫码登录的几秒钟里,到底发生了什么。可能很多人因此会好奇,小A到底是做什么的呢?为什么能够弄懂这些原理呢?其实,小A是一名业余码农。为什么要叫业余码农呢,是因为他觉得自己属于半路出家,很多计算机基础思想都不够专业,还有很大的进步空间,因此称自己为业余码农...

weixin_39765057的博客 4469

如何修复Windows卡在“正在准备Windows”的问题?这里有详细步骤

如何修复Windows卡在“正在准备Windows”的问题?这里有详细步骤。

wyxtx的博客 5665

YOLOv8 置信度阈值 (conf) 和 IoU 阈值 (iou) 详解:如何平衡漏检与误检?

摘要 本文深入探讨了YOLOv8目标检测模型中两个关键参数——置信度阈值(conf)和IoU阈值(iou)的核心作用。文章从目标检测的基础概念出发,解释了置信度分数反映模型预测可靠性,IoU衡量预测框重叠程度。重点剖析了非极大值抑制(NMS)机制如何通过这两个阈值进行预测框筛选:置信度阈值作为初筛门槛,IoU阈值决定重叠框的取舍。通过生动比喻和可视化图表,阐述了合理调节这两个参数能有效平衡误检与漏检问题,是优化YOLOv8模型实际表现的重要技巧。全文以实践为导向,帮助开发者掌握成为"调参大师&qu

深耕 Vue 生态与 JS/TS 技术,聚焦组件封装、响应式原理、TS 类型设计,解析工程化配置与性能优化方案。同时分享 YOLOv8 目标检测实战、AI 大模型面试核心考点,以代码实例拆解技术实现与业务解法。 1254

ASCII码为0x01,0x02作为分隔符(这两个字符是键盘无法输入的)

不知道大家在拼接字符串的时候是怎么做的?是不是采用,或:? 这样做有的时候不很安全,因为你不能确保你传入的字符串中没有这几个字符,那怎么做能保证万无一失呢? ASCII码为0x01,0x02的字符是键盘所不能输入的(这两个字符称作隐藏字符,对应的8进制是001,002,打印出来的视觉效果与空格相同,但是相比空格的好处就是这两个字符是从键盘无法输入的,所以避免了如果数据中本身带空格,会错误的分割字符...

天青色等烟雨 而我在等你 3万+

卫朋:IPD流程落地——产品计划阶段拆解

IPD计划阶段拆解

产品线负责人 957

OBD服务简述2--0x02服务

0x02服务

qq_40633122的博客 1985

【DRAM存储器五十五】LPDDR5介绍--command bus training

本文详细介绍了LPDDR5命令总线训练(CBT)的两种模式操作流程。在启用ODT进行高频/中频操作前,必须对命令总线进行训练,包括调整VREF(CA)电压和CA/CS信号时序。两种模式的主要区别在于VREF(CA)设置方式:模式1通过MR12直接设置,模式2通过DMI[0]引脚捕获DQ[6:0]数据更新MR12。训练流程涉及频率切换、模式寄存器配置、pattern发送及结果采样等步骤,最终确定最佳VREF(CA)和时序参数。文章还分析了不同PHY实现可能存在的差异,如训练pattern生成方式和采样次数等。

highman110的博客 649

平头哥面试——芯片工程师面经

有5个成递增关系的32bit地址值,彼此之间的间隔大小不确定,可以把他们当成parameter来输入模块,现有一个32bit输入数据,要求用尽量少资源去的判断这个数处于哪2个地址之间(地址区间),并且输出区间号。a)后续大概会在9月下旬谈具体的薪资,他们现在也没想好今年应届生的薪资该给多少,到时候如果可以签三方的话可能会跳过意向书环节直接发offer,谈薪资肯定是通过电话来。b. 这边的CPU是自己研制的(玄铁),成都这边主要做存储和网络,都有SOC。a. 成都这边的网络部门具体做的业务有哪些?

FPGA/MATLAB学习教程/源码/项目合作开发 2688

02x和2x有什么区别?

常见%02x,那么与%2x有什么区别呢? X 表示以十六进制形式输出,02 表示不足两位,前面补0输出;如果超过两位,则实际输出 举例: printf("%02X", 0x345); // 345 printf("%02X", 0x6); // 06 而如果直接写为 %2x,数据不足两位时,实际输出,即不额外补0输出; 如果超过两位,则实际输出。 printf("%2X", 0x345); ...

sinat_39370511的博客 1998

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

%02x与%2x之间的区别

%02x与%2x之间的区别 输出最小宽度用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时)。 X 表示以十六进制形式输出02表示不足两位,前面补0输出;如果超过两位,则实际输出举例: printf("%02X", 0x345); //打印出:345 pr...

小时候挺菜的博客 7654

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073D02

Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073D02, 无法安装程序包,原因是它修改的资源当前正在使用中。 错误 0x80073D02: 无法安装,因为需要关闭以下应用: InputApp_1000.17763.1.0_neutral_neutral_cw5n1h2txyewy。 注意: 有关其他信息,请在事件日志中查找 [ActivityId] 125b7...

本博客仅供免费阅读,不提供咨询服务。请勿私信。 7万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

%02x与%2x

代码做得多的人,肯定经常见到%02x这个东西,下面写个小程序学习一下: #include int main() { int i; for(i = -20; i < 21; i++) { printf("%2x\n", i); printf("%02x\n", i); } return 0; } 结果为: ffffffec f

认知 行动 坚持 2万+

C语言中 %02X 含义

%02X

qq_41483419的博客 5850

ANC Calibration Error Code:0x02 量产常见失败原因

本文系统分析TWS耳机量产中常见的ANC校准错误代码0x02,指出其本质为自适应滤波器未收敛,并从硬件、结构、软件、固件及测试等多维度提出系统性解决方案。涵盖麦克风离散性、扬声器相位、PCB布线、密封性、算法参数设置等问题,结合实测数据与代码示例,构建从预防到诊断的完整质量控制体系。

gin88的博客 884

sprintf %02x

#include #include #define lo(f) ((f)&0xff) #define hi(f) (lo(f>>8)) int main(void) { int key; do {  key=bioskey(0);  printf("0x%02x 0x%02x %c\n",hi(key),lo(key),lo(key));//这条语句中0x%02x是什么意思??

MyDriverC 7988

%02x java_c++ 、object-c printf,%02X和%x有什么区别 ?

%x即按十六进制输出,英文字母小写,右对齐。%02X有以下变化:英文字母变大写,如果输出字符不足两位的,输出两位宽度,右对齐,空的一位补0。超过两位的,全部输出。如果不用 %02x会出现少了f940dfc72a4eee0a9c95c3ac4fe7eb6 -- 31位f940dfc72a4e0ee0a9c95c3ac4fe7eb6 -- 32位//// ViewController.m//...

weixin_29938009的博客 1205

【UDS诊断】——0x34、0x36、0x37服务

Client端使用Routine Control服务来执行定义的步骤序列并获取特定序列的相关结果。该服务有极大的灵活性。Service31的典型用途可以包括擦除内存、重置定义的数据、覆盖正常服务控制策略以及控制ECU值随时间变化的功能。通过Service31可以启动特定序列、停止运行该特定序列、请求运行结果。该服务以往常用于ECU在做Software Update时,应用于检查刷写条件是否满足、传输数据完整性以及独立性检测。

LOVE135149的博客 6100

printf("%02X", 0x123)

X 表示以十六进制形式输出 02 表示不足两位,前面补0输出;出过两位,不影响 举例: printf("%02X", 0x123); //打印出:123 printf("%02X", 0x1); //打印出:01

黄俊东的专栏 4328
上一篇: 0x01 内容总结与例题习题
下一篇: 【算法竞赛进阶指南】学习笔记
juruo_c
博客等级 码龄6年 520粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值