【CSP-S 2019】【洛谷P5658】括号树【dfs】【二分】

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点) 本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。 阅读详情

前言

感觉提高不是很稳啊。
这道题也就勉强算在承受范围内吧。考场应该是写出了正解的。
洛谷自测上是满分。希望不要出什么差错吧。。。


题目:

题目链接:https://www.luogu.org/problem/P5658?contestId=24103

本题中合法括号串的定义如下:

  1. () 是合法括号串。
  2. 如果 A 是合法括号串,则 (A) 是合法括号串。
  3. 如果 A,B 是合法括号串,则 AB 是合法括号串。

本题中子串与不同的子串的定义如下:
4. 字符串 S 的子串是 S 中连续的任意个字符组成的字符串。S 的子串可用起始位置 l l l 与终止位置 r r r 来表示,记为 S ( l , r ) S (l, r) S(l,r)( 1 ≤ l ≤ r ≤ ∣ S ∣ 1 \leq l \leq r \leq |S | 1≤l≤r≤∣S∣, ∣ S ∣ |S | ∣S∣ 表示 S 的长度)。
5. S 的两个子串视作不同当且仅当它们在 S 中的位置不同,即 l l l 不同或 r r r 不同。

一个大小为 n n n 的树包含 n n n 个结点和 n − 1 n − 1 n−1 条边,每条边连接两个结点,且任意两个结点间有且仅有一条简单路径互相可达。

小 Q 是一个充满好奇心的小朋友,有一天他在上学的路上碰见了一个大小为 n n n 的树,树上结点从 1 1 1 ∼ n n n 编号, 1 1 1 号结点为树的根。除 1 1 1 号结点外,每个结点有一个父亲结点, u u u( 2 ≤ u ≤ n 2 \leq u \leq n 2≤u≤n)号结点的父亲为 f u f_u fu​( 1 ≤ f u < u 1 ≤ f_u < u 1≤fu​<u)号结点。

小 Q 发现这个树的每个结点上恰有一个括号,可能是( 或)。小 Q 定义 s i s_i si​ 为:将根结点到 i i i 号结点的简单路径上的括号,按结点经过顺序依次排列组成的字符串。

显然 s i s_i si​ 是个括号串,但不一定是合法括号串,因此现在小 Q 想对所有的 i i i( 1 ≤ i ≤ n 1\leq i\leq n 1≤i≤n)求出, s i s_i si​ 中有多少个互不相同的子串是合法括号串。

这个问题难倒了小 Q,他只好向你求助。设 s i s_i si​ 共有 k i k_i ki​ 个不同子串是合法括号串, 你只需要告诉小 Q 所有 i × k i i \times k_i i×ki​ 的异或和,即:
( 1 × k 1 )  xor  ( 2 × k 2 )  xor  ( 3 × k 3 )  xor  ⋯  xor  ( n × k n ) (1 \times k_1)\ \text{xor}\ (2 \times k_2)\ \text{xor}\ (3 \times k_3)\ \text{xor}\ \cdots\ \text{xor}\ (n \times k_n) (1×k1​) xor (2×k2​) xor (3×k3​) xor ⋯ xor (n×kn​)
其中 x o r xor xor 是位异或运算。


思路:

我们设 a n s [ x ] ans[x] ans[x]表示路径 ( 1 , x ) (1,x) (1,x)中构成的括号串,以 x x x节点为右端点的所有区间有多少个合法括号串。

  • 那么如果 x x x位置为(,那么显然 a n s [ x ] = 0 ans[x]=0 ans[x]=0。
  • 如果 x x x位置为),设 c n t [ x ] [ 1 / 2 ] cnt[x][1/2] cnt[x][1/2]为路径 ( 1 , x ) (1,x) (1,x)中左括号和右括号的个数,那么一个 x x x节点的祖先 y y y可以对 a n s [ x ] ans[x] ans[x]做贡献,当且仅当满足一下两个条件:
    ( 1 )   c n t [ x ] [ 1 ] − c n t [ y ] [ 1 ] = c n t [ x ] [ 2 ] − c n t [ y ] [ 2 ] (1)\ cnt[x][1]-cnt[y][1]=cnt[x][2]-cnt[y][2] (1) cnt[x][1]−cnt[y][1]=cnt[x][2]−cnt[y][2]
    ( 2 )   ∀ p ∈ ( y , x ) (2)\ ∀p\in(y,x) (2) ∀p∈(y,x),满足 c n t [ p ] [ 2 ] ≥ c n t [ p ] [ 1 ] cnt[p][2]\geq cnt[p][1] cnt[p][2]≥cnt[p][1]

那么我们就可以在访问每一个节点时,依次枚举它的每一个祖先,如果满足 c n t [ x ] [ 1 ] − c n t [ y ] [ 1 ] = c n t [ x ] [ 2 ] − c n t [ y ] [ 2 ] cnt[x][1]-cnt[y][1]=cnt[x][2]-cnt[y][2] cnt[x][1]−cnt[y][1]=cnt[x][2]−cnt[y][2],那么 a n s [ x ] + + ans[x]++ ans[x]++。直到 c n t [ y ] [ 2 ] < c n t [ y ] [ 1 ] cnt[y][2]< cnt[y][1] cnt[y][2]<cnt[y][1]时停止枚举。
这样我们就得到了一个 O ( n 2 ) O(n^2) O(n2)的算法,获得了 50 p t s 50pts 50pts的好成绩。
我们发现,其实我们只关心在路径 ( 1 , x ) (1,x) (1,x)中,深度最大的不满足 c n t [ p ] [ 2 ] ≥ c n t [ p ] [ 1 ] cnt[p][2]\geq cnt[p][1] cnt[p][2]≥cnt[p][1]的节点 p p p是哪一个。这样所有在路径 ( s o n [ p ] , x ) (son[p],x) (son[p],x)中满足条件 ( 1 ) (1) (1)的点都可以做贡献。

其实 ( 1 ) (1) (1)的条件可以转化为 c n t [ x ] [ 1 ] − c n t [ x ] [ 2 ] = c n t [ y ] [ 1 ] − c n t [ y ] [ 2 ] cnt[x][1]-cnt[x][2]=cnt[y][1]-cnt[y][2] cnt[x][1]−cnt[x][2]=cnt[y][1]−cnt[y][2]。所以我们可以用 p o s [ s ] [ t o t ] pos[s][tot] pos[s][tot]记录 c n t [ y ] [ 1 ] − c n t [ y ] [ 2 ] = s cnt[y][1]-cnt[y][2]=s cnt[y][1]−cnt[y][2]=s的每一个 x x x的祖先 y y y编号。这样如果 c n t [ x ] [ 1 ] − c n t [ x ] [ 2 ] = s cnt[x][1]-cnt[x][2]=s cnt[x][1]−cnt[x][2]=s,那么能对 x x x做贡献的点就都在 p o s [ s ] pos[s] pos[s]中。
那么我们可以用一个栈来记录 c n t [ p ] [ 2 ] < c n t [ p ] [ 1 ] cnt[p][2]<cnt[p][1] cnt[p][2]<cnt[p][1]的所有 p p p。其中 p p p是 x x x的祖先。此时如果节点 x x x为(,那么直接将 x x x扔进栈里。如果 x x x为),那么就弹出栈顶。
这样如果栈顶是 p p p,那么能对 x x x做贡献的就是同时在路径 ( s o n [ p ] , x ) (son[p],x) (son[p],x)和 p o s [ c n t [ x ] [ 1 ] − c n t [ x ] [ 2 ] pos[cnt[x][1]-cnt[x][2] pos[cnt[x][1]−cnt[x][2]的节点。
所以就可以二分出 a n s [ x ] ans[x] ans[x]。
发现 p o s pos pos中最多只会有 n n n个元素,所以可以开一个 v e c t o r vector vector。
求出 a n s [ x ] ans[x] ans[x]后,路径 ( 1 , x ) (1,x) (1,x)的合法括号串个数就是 ∑ y y 是 x 的祖先 a n s [ y ] \sum^{y\texttt{是}x\texttt{的祖先}}_{y}ans[y] ∑yy是x的祖先​ans[y]。做前缀和即可。
注意回溯时需要在栈中弹出 x x x。
时间复杂度 O ( n log ⁡ n ) O(n\log n) O(nlogn)


代码:

#include <stack>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;

const int N=500010,Inf=1e9;
int n,tot,a[N],cnt[N][3],head[N];
ll ans[N],orz;
char ch;
vector<int> pos[N*2];
stack<int> del;

struct edge
{
	int next,to;
}e[N];

void add(int from,int to)
{
	e[++tot].to=to;
	e[tot].next=head[from];
	head[from]=tot;
}

int binary(int x,int tp)
{
	int l=0,r=pos[x].size(),mid,res;
//	for (int i=l;i<r;i++) printf("%d ",pos[x][i]);putchar(10);
	while (l<=r)
	{
		mid=(l+r)>>1;
		if (pos[x][mid]>=tp) r=mid-1,res=mid;
			else l=mid+1;
	}
	return res;
}

void dfs(int x,int fa)
{
	cnt[x][1]=cnt[fa][1]; cnt[x][2]=cnt[fa][2];
	cnt[x][a[x]]++;
	int s=cnt[x][1]-cnt[x][2]+N,pp=-1;
	if (a[x]==1) del.push(x);
	else
	{
		if (del.size()>1)
		{
			pp=del.top();
			del.pop();
		}
		int tp=del.top();
		pos[s].push_back(Inf);
		ans[x]=pos[s].size()-binary(s,tp)-1;
		pos[s].pop_back();
	}
	ans[x]+=ans[fa];
	orz^=1LL*x*ans[x];
	pos[s].push_back(x);
	for (int i=head[x];~i;i=e[i].next)
		dfs(e[i].to,x);
	pos[s].pop_back();
	if (del.top()==x) del.pop();
	if (pp!=-1) del.push(pp);
}

int main()
{
	memset(head,-1,sizeof(head));
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
	{
		//while (ch=getchar()) if (ch=='('||ch==')') break;
		while (1)
		{
			ch=getchar();
			if (ch=='('||ch==')') break;
		}
		if (ch=='(') a[i]=1;
			else a[i]=2;
	}
	for (int i=2,x;i<=n;i++)
	{
		scanf("%d",&x);
		add(x,i);
	}
	del.push(-1);pos[N].push_back(0);
	dfs(1,0);
	printf("%lld\n",orz);
//	for (int i=1;i<=n;i++)
//		printf("%lld ",ans[i]);
	return 0;
}
VC Spyglass CDC验证避坑指南:如何正确配置同步复位信号(实验二重点解析) 本文深入解析VC Spyglass CDC验证中同步复位信号的正确配置方法,通过实验二案例详细展示错误配置的典型表现及修正过程。文章提供同步复位的最佳实践方案,包括约束文件修改指南、验证流程优化建议和高级调试技巧,帮助工程师有效避免CDC验证中的常见陷阱。 阅读详情

相关推荐

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 939

洛谷-P5658 [CSP-S 2019] 括号树 题解

本文研究树上路径括号序列问题。给定一棵树,每个节点有一个括号,要求计算从根到每个节点的路径形成的括号串中,不同合法括号子串的数量。通过三次DFS实现:第一次DFS预处理并收集查询;第二次DFS利用线段树统计合法子串数量;第三次DFS累加结果。算法利用前缀和、线段树和离线查询等技术,在O(n log n)时间内高效解决问题。代码实现简洁,通过位运算优化线段树操作,最终输出所有节点答案的异或和。

xiaoniu142857 的博客 655

01 ArcGIS空间分析--水文分析--利用水文分析方法提取山谷山脊线

ArcGIS空间分析的一个特别好的分析教程是汤国安老师的空间分析的内容。 实例与练习 练习1. 利用水文分析方法提取山脊、山谷线 1. 背景:山脊线、山谷线是地形特征线,它们对地形、地貌具有一定的控制作用。它们与山顶点、谷底点以及鞍部点等一起构成了地形及其起伏变化的骨架结构。因此在数字地形分析中,山脊线和山谷线以及

Meditation 1万+

#CSPS2019B. 括号树 (Bracket Tree)

本题中()A(A)ABAB本题中与。

xingdjk888的博客 1656

YonBIP 3.0 报表开发+报表超链接

用友报表开发

m0_55096250的博客 1760

利用Ghidra与SVD插件实现STM32固件深度逆向分析

本文详细介绍了如何利用Ghidra逆向工程框架结合SVD插件,实现对STM32固件(.bin文件)的深度逆向分析。通过加载描述芯片外设寄存器的SVD文件,Ghidra能将晦涩的硬件地址操作转换为可读的寄存器符号,极大提升了对嵌入式固件中通信协议、安全校验等关键逻辑的分析效率。文章涵盖了从Java环境搭建、工具配置到实战逆向解析的完整流程。

peach的博客 942

[luogu p5658] 括号树

传送门 括号树 题目背景 本题中合法括号串的定义如下: () 是合法括号串。 如果 A 是合法括号串,则 (A) 是合法括号串。 如果 A,B 是合法括号串,则 AB 是合法括号串。 本题中子串与不同的子串的定义如下: 字符串 S 的子串是 S 中连续的任意个字符组成的字符串。S 的子串可用起始位置 \(l\) 与终止位置 \(r\) 来表示,记为 \(S (l, r)\)(\(1...

crab_xbc的博客 532

FISCO-BCOS配置及使用控制台

如果因为网络问题长时间无法下载,请尝试:curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh。为了可以更加方便快捷,所以HelloWorld合约已经被内置了,位于控制台下面的contracts/solidity/HelloWorld.sol。用于获取和设置name的值,合约代码如下。部署成功会返回合约地址。

qq_51562644的博客 831

CSP-S2019提高组day1-T2:括号树

CSP-S2019提高组day1-T2:括号树。树形动态规划,括号匹配方案数的算法思想、时间复杂度和代码实现。

少儿编程乔老师 1278

神经网络:初学者指南(专业版)

神经网络是一种受生物大脑启发的计算模型,由多层互连的人工神经元组成。本文从生物神经元结构出发,介绍了感知器模型、激活函数、网络架构(输入/隐藏/输出层)等基础概念,并详细阐述了前向传播、反向传播、损失函数和优化器等核心训练机制。同时涵盖了CNN、RNN等常见架构,以及过拟合、梯度消失等关键挑战,最后概述了神经网络在计算机视觉、NLP等领域的广泛应用。全文系统性地梳理了神经网络的基础理论和实践要点,为初学者提供了清晰的学习路径。

weixin_42107409的博客 1782

超速U盘选购避坑指南:如何通过Rx Detect机制识别真伪USB3.0设备

本文深入解析了USB 3.0超速U盘的选购避坑要点,重点介绍了通过Rx Detect机制识别真伪设备的核心原理。文章提供了从软件检测到实际性能测试的完整方案,帮助消费者和技术人员有效辨别虚假的USB3.0设备,确保获得真正的超速传输体验。

weixin_29189373的博客 443

【CSP-S 2019】括号树(洛谷P5658):栈+DFS

题目摘要:洛谷P5658括号树问题要求处理由括号序列构成的树结构,每个节点代表一个括号,'('为子节点,')'为父节点。给定n个节点的树,需计算各节点深度(括号层数),并输出所有节点深度与编号乘积的异或和。核心解法采用栈和DFS:用栈维护括号匹配,构建树;DFS遍历时更新深度和子树深度总和(sum数组);最终通过异或运算求解答案。时间复杂度O(n),适用于括号序列与树结构的转化问题。

2501_91614020的博客 197

24、语料库与科技术语库建设

本文探讨了语料库在科技术语库建设中的关键作用,重点分析了词性标注、索引、搭配、词形还原、频率计数、词汇排序和类型-标记分析等核心技术的应用与挑战。文章以印度语言为例,指出其语料库处理工具匮乏的现状,强调需开发适配本地语言特征的技术,并提出一个整合多种处理步骤的综合流程,旨在推动印度语言科技术语数据库的系统化建设,促进科技语言的发展与应用。

cola5的博客 92

CSP-S 2019 括号树

题面 题解 下面的抑或可以先不管他,我们只要O(n)求出每个ki然后算就是了。 直接求合法串数比较麻烦,我们先固定右端点讨论。 如果右端点是“(”那么答案数是零。 如果是“)”,那么有两种情况, ① (A) ② A1 A2 ...... (An) 考虑用经典的栈来存左括号然后一个一个消,那么某个右括号所匹配的左括号一定是最短的合法串的左端点了,然后如果这个...

DD(XYX)的硫氰化氘博客 1205

android 蓝牙通讯demo

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

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

P5658 [CSP-S2019] 括号树

本题中()A(A)ABAB本题中与SSSlrSlr1≤l≤r≤∣S∣∣S∣SSlr。

ding_ding_tang的博客 791

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

题解:[CSP-S2019] 括号树(洛谷P5658)

题解:[CSP-S2019] 括号树(洛谷P5658)

qq_69252824的博客 363

OV9734 DATASHEET,完整规格书

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

洛谷P5658 [CSP-S2019] 括号树

小 Q 是一个充满好奇心的小朋友,有一天他在上学的路上碰见了一个大小为。将根到 1 号结点的简单路径上的括号,按经过顺序排列所组成的字符串为。号结点的简单路径上的括号,按结点经过顺序依次排列组成的字符串。是个括号串,但不一定是合法括号串,因此现在小 Q 想对所有的。由于这是一棵树,我们发现改变的并不多,只需要将。号结点外,每个结点有一个父亲结点,,子串是合法括号串的个数为。,子串是合法括号串的个数为。,子串是合法括号串的个数为。,子串是合法括号串的个数为。,子串是合法括号串的个数为。

yjfyjfyjf54188的博客 729

括号树(CSP 2019 D1T2)

题目 题解 首先想到用单调栈将在树上以i结尾的括号串记录下来 然后进行分类讨论 如果第i个字符是(,则i的答案就是i的父亲的答案,是不变的 否则,这个有括号可能会对答案有贡献: 如果在这之前,没有其它的未匹配的右括号在(到i为止)最近出现的左括号与i之间,那么贡献就会加1 举例子:()() 如果i=4,那么贡献加一 否则:()))如果i=4,那么贡献不变 但是还要考...

weixin_43823476的博客 550

树的括号表示

1、树的线性表示     树型结构和线性结构的主要区别在于树型结构具有分支性和层次性。使用树的遍历操作,可以将树中的结点按照规定的顺序排成一个线性序列;然而仅凭借树的某种遍历序列有时无法唯一地确定一棵树,但只要在遍历序列的基础上增加一些附加信息便可以唯一地确定一棵树,从而得到树的线性表示。树的线性表示便于树的输入、输出,同时在存储时也比较节省空间。 2、树的括号表示规则 (1)若树T为空树,

笨笨的企鹅的专栏 1万+

[NOIP/CSP 2019 提高组] 括号树

题目描述: QAQ… 题目分析: 设 dp[i]为1-x内合法的子序列括号树 num[i]表示i到根的路径上连续已经匹配的括号串数 last[i]表示最后一个为匹配的 ( 位置 首先 dp[i] 和 last[i] 都要承接父亲的答案 如果 i 为 ( 那么更新 last[i]=i 如果 i 为 ) 并且有没有匹配的左括号 那么 last[i]=last[fa[last[i]]] num[i]=n...

HT008的Blog 1255

括号树's 题解

这是一道令我很揪心的D1T2 原因是我在考场上想出了正解却没调出来。。。 题目链接 题面让你求一棵树上能匹配的括号串的个数。 呃,前面的20分直接暴力过(在加上是链随便打一下就好了啦),我就不解释了(明明是没写然后又不想写)。 然后说一下由于考场上没调出来而交的55分代码吧。 首先先来看一下链的性质。 明显的一件事,形如 ( ( ) )(\ (\ )\ )(&nbsp...

Belief_yfly的博客 420

java括号生成二叉树_从带圆括号的字符串创建二叉树

一种方法是创建一个静态Parse方法Node节点基于输入字符串。逻辑应该是:去掉外圆括号移除并为新节点指定名称确定表示左节点的字符串(这可以通过对左括号和右括号计数来完成,直到每个括号的计数相等为止)。将左节点指定给Node.Parse使用“左”字符串将右节点指定给的结果节点。解析使用“右”字符串我还添加了一些代码以一种基本的方式打印出树,这样您就可以看到每个节点的值是什么样子的。例如节点解析方法...

weixin_39957068的博客 531

树的应用:括号树

传送门 文章目录解析代码 解析 没有做出来。。。 一开始看到了一个(自以为)很好的性质,再加上之前做一些括号相关题的刻板印象,导致这题没掉了… 我的角度和正解完全背道而驰了 放下乱七八糟的前缀和与st’表,回归朴素的括号匹配的栈的做法 如果对于一个括号串,如何统计其合法字串的个数? 我们考虑统计新增一个括号的贡献 显然,增加左括号是不会产生贡献的 关键在于右括号与之前栈中的某个左括号匹配时的贡献 设与这个右括号匹配的左括号位置在 pl 显然,它自己有一的贡献 其次,如果它能和之前的串连接,每连一个,就会多1

BUG_Creater_jie的博客 538

【题解】括号树

solution: 本题是个树上问题,但我们不妨从线性状态上去考虑。这题就是一道区间dp了。 问题:给定字符串S,求有多少合法括号子串? ()()(()) 设f[i]f[i]f[i]表示前iii个的合法子串个数,g[i]g[i]g[i]表示以iii结尾的合法字符串个数。 考虑如下转移: g[i]=g[k]+1g[i]=g[k]+1g[i]=g[k]+1 f[i]=f[i−1]+g[i]f[i]=f[i-1]+g[i]f[i]=f[i−1]+g[i] 其中[k+1,i][k+1,i][k+1,i]为合法子串.

cqbzlydd的博客 411

树的括号表示法

标题: 树的括号表示法 时 限: 1000 ms 内存限制: 3000 K 总时限: 3000 ms 描述: 树的括号表示法: 先将根结点放入一对圆括号中,然后把它的子树按由左而右的顺序放入括号中,而对子树也采用同样方法处理:同层子树与它的根结点用圆括号括起来,同层子树之间用逗号隔开,最后用闭括号括起来。例如下图可写成如下形式 (a(b

孟凡驰的博客 7381

P5658 [CSP-S2019] 括号树题解

小 Q 是一个充满好奇心的小朋友,有一天他在上学的路上碰见了一个大小为 𝑛 的树,树上结点从 1∼𝑛1∼n 编号,1 号结点为树的根。除 1 号结点外,每个结点有一个父亲结点,𝑢(2≤𝑢≤𝑛)号结点的父亲为 𝑓𝑢(1≤𝑓𝑢<𝑢)号结点。② 就让当前( 的前一个数的f[fa[i]] 减去最近的一个左括号的前一个数f[fa[t]](这一步的目的是判断这中间有多少个多余的数)显然 𝑠𝑖​ 是个括号串,但不一定是合法括号串,因此现在小 Q 想对所有的 𝑖(1≤𝑖≤𝑛)求出,𝑠𝑖​ 中有多少个。

inhuibin的博客 1205
上一篇: 【CSP-S 2019】【洛谷P5665】划分【单调队列dp】
下一篇: 【CSP-S 2019】【洛谷P5664】Emiya 家今天的饭【dp】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值