并查集-

并查集(标准并查集、带权并查集、扩展域并查集) 并查集是一种数据结构,用来管理集合之间的关系,可以用来进行判断是否属于同一集合或将不同的集合合并等操作。我们用个生活中的例子来说明一下原本小明家这个集合只有小明,小红家只有小红,那么他们结婚后(合并)就属于一个家庭(一个集合),像这样,通过并查集我们能够合并不同的集合,然后还能快速地查找他们是不是同一个集合。 阅读详情

目录

一、基本并查集实现两个操作

二、两个优化

三、并查集扩展

四、Acwing --- 1250 - 格子游戏

代码如下:

五、Acwing --- 1252 - 搭配购买

代码如下:

六、Acwing --- 237 - 程序自动分析

 代码如下:

七、Acwing --- 238 - 银河英雄传说

代码如下:

八、Acwing --- 239 - 奇偶游戏

代码如下:

1.  带边权的并查集

2. 扩展域方式


并查集 - OI Wiki

一、基本并查集实现两个操作

并 查 集-优快云博客

1. 合并两个集合

2. 查询某个元素的祖宗节点

二、两个优化

1. 路径压缩 O(logn)

2. 按秩合并O(logn) ------ 不常用

三、并查集扩展

1. 记录每个集合的大小( 绑定到根节点上 )

2. 记录每个点到根节点的距离( 绑定到每个元素上 ) ------ 可以处理这个点与根节点的关系的问题

四、Acwing --- 1250 - 格子游戏

原题链接:https://www.acwing.com/problem/content/1252/

代码如下:

//技巧:一维 (x,y) --> x*n+y ( x,y从0开始 )
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N=40010;
int n,m;
int p[N];
int get(int x,int y){
	return x*n+y;
}
int find(int x){
	if(x!=p[x])p[x]=find(p[x]);
	return p[x];
}
void solve(){
	cin>>n>>m;
	for(int i=0;i<n*n;i++)p[i]=i;
	int ans=0;
	for(int i=1;i<=m;i++){
		int x,y;
		char d;
		cin>>x>>y>>d;
		x--,y--;
		int a=get(x,y);//坐标对应的编号
		int b;
		if(d=='D')b=get(x+1,y);
		else b=get(x,y+1);
		int pa=find(a),pb=find(b);
		if(pa==pb){
			ans=i;
			break;
		}
		p[pa]=pb;
	}	
	if(!ans)puts("draw");
	else cout<<ans<<endl;
	
}
int main(){
    int t;
    t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

五、Acwing --- 1252 - 搭配购买

原题链接:https://www.acwing.com/problem/content/1254/

思路:搭配在一起的花相当于一个连通块(并查集做),可以看成一个物品,然后做01背包。

代码如下:

//并查集 + 01背包
#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N=10010;
int n,m,k;
int p[N];
int v[N],w[N];
int f[N];

int find(int x){
	if(x!=p[x])p[x]=find(p[x]);
	return p[x];
}
void solve(){
	cin>>n>>m>>k;
	for(int i=1;i<=n;i++)p[i]=i;
	for(int i=1;i<=n;i++)cin>>v[i]>>w[i];
	while(m--){
		int a,b;
		cin>>a>>b;
		int pa=find(a),pb=find(b);
		if(pa!=pb){
			v[pb]+=v[pa];
			w[pb]+=w[pa];
			p[pa]=p[pb];
		}
	}
	for(int i=1;i<=n;i++){
		if(p[i]==i){
			for(int j=k;j>=v[i];j--){
				f[j]=max(f[j],f[j-v[i]]+w[i]);
			}
		}
	}
	cout<<f[k]<<endl;
	
}
int main(){
    int t;
    t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

六、Acwing --- 237 - 程序自动分析

​​​​​​原题链接:​​​​​https://www.acwing.com/problem/content/239/

步骤:

1. 离散化 ---- 1e9 --> 2e6

        离散化的要求:1. 保序 --- 排序+判重+二分        

                                  2. 不要求保序 :1)map   2)hash

2. 约束条件的顺序“无所谓”

        1)先考虑所有相等约束,将所有相等约束合并---不可能有矛盾

        2)再考虑不等条件,依次判断每个不等条件 i , j 是否在同一个集合中----可能有矛盾

 代码如下:

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N=200010;
int n,m;
int p[N];
unordered_map<int,int> S;
struct Node{
    int x,y,e;
}no[N];
int get(int x){
    if(S.count(x)==0)S[x]=++n;
    return S[x];
}
int find(int x){
	if(x!=p[x])p[x]=find(p[x]);
	return p[x];
}
void solve(){
    n=0;
    S.clear();
	scanf("%d",&m);
	for(int i=0;i<m;i++){
	    int x,y,e;
	    scanf("%d%d%d",&x,&y,&e);
	    no[i]={get(x),get(y),e};
	}
	for(int i=1;i<=n;i++)p[i]=i;
	//合并所有相等的约束条件
	for(int i=0;i<m;i++){
	    if(no[i].e==1){
	        int pa=find(no[i].x),pb=find(no[i].y);
	        p[pa]=pb;
	    }
	}
	//检查所有的不等条件
	bool flag=false;
	for(int i=0;i<m;i++){
	    if(no[i].e==0){
	        int pa=find(no[i].x),pb=find(no[i].y);
	        if(pa==pb){
	            flag=true;
	            break;
	        }
	    }
	}
	if(flag)cout<<"NO"<<endl;
	else cout<<"YES"<<endl;
	
}
int main(){
    int t;
    //t=1;
    scanf("%d",&t);
    while(t--){
        solve();
    }
    return 0;
}

七、Acwing --- 238 - 银河英雄传说

https://www.acwing.com/problem/content/240/

怎么做 :1. 不问间隔多少战舰 ----简单的并查集

                2. 同时维护间隔多少战舰 --- 统一维护当前战舰到排头的距离 ( 前缀和思想 ) 

思路:1.  让排头当根节点

           2. 假设把a放在b后面,则d[pa]=s[pb] , s[pb] += s[pa]

代码如下:

#include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const int N=30010;
int m;
int p[N],s[N],d[N];//d[x]表示x到p[x]的距离
int find(int x){
	if(x!=p[x]){
	    int root=find(p[x]);
	    d[x]+=d[p[x]];
	    p[x]=root;
	}
	return p[x];
}
void solve(){
	scanf("%d",&m);
	for(int i=1;i<N;i++){
	    p[i]=i;
	    s[i]=1;
	}
	while(m--){
	    char op[2];
	    int a,b;
	    scanf("%s%d%d",op,&a,&b);
	    int pa=find(a),pb=find(b);
	    if(op[0]=='M'){
	        if(pa!=pb){
	            d[pa]=s[pb];
	            s[pb]+=s[pa];
	            p[pa]=pb;
	        }
	        
	    }else{
	        if(pa!=pb)puts("-1");
	        else printf("%d\n",max(abs(d[a]-d[b])-1,0));
	    }
	}
}
int main(){
    int t;
    t=1;
    //cin>>t;
    while(t--)solve();
    
    return 0;
}

八、Acwing --- 239 - 奇偶游戏

原题链接:https://www.acwing.com/problem/content/241/

代码如下:

1.  带边权的并查集

//并查集 + 离散化
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=10010;
int n,m;
int p[N],d[N];
unordered_map<int,int> S;
int get(int x){
    if(S.count(x)==0)S[x]=++n;
    return S[x];
}
int find(int x){
    if(x!=p[x]){
        int t=find(p[x]);
        d[x]^=d[p[x]];
        p[x]=t;
    }
    return p[x];
}
void solve(){
    cin>>n>>m;
    n=0;
    for(int i=0;i<N;i++)p[i]=i;
    int res=m;
    for(int i=1;i<=m;i++){
        int a,b;
        string type;
        cin>>a>>b>>type;
        a=get(a-1),b=get(b);
        int t=0;
        if(type=="odd")t=1;
        int pa=find(a),pb=find(b);
        if(pa==pb){
            if((d[a]^d[b])!=t){
                res=i-1;
                break;
            }
        }else{
            p[pa]=pb;
            d[pa]=d[a]^d[b]^t;
        }
    }
    cout<<res<<endl;
    
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t;
    t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

2. 扩展域方式

枚举思想

1) 如果x,y是同类,若 x 奇则 y 奇,若 x 偶则 y 偶

        ( 1 )合并x+n , y+n    ( 2 )合并x , y

2) 如果异类 ,若 x 奇则 y 偶,若 x 偶则 y 奇

        ( 1 )合并x+n , y    ( 2 )合并x , y+n

//并查集 + 离散化
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=20010,M=N/2;
int n,m;
int p[N];
unordered_map<int,int> S;
int get(int x){
    if(S.count(x)==0)S[x]=++n;
    return S[x];
}
int find(int x){
    if(x!=p[x])p[x]=find(p[x]);
    return p[x];
}
void solve(){
    cin>>n>>m;
    n=0;
    for(int i=0;i<N;i++)p[i]=i;
    int res=m;
    for(int i=1;i<=m;i++){
        int a,b;
        string type;
        cin>>a>>b>>type;
        a=get(a-1),b=get(b);
        if(type=="even"){
            if(find(a+M)==find(b)){
                res=i-1;
                break;
            }
            p[find(a)]=find(b);
            p[find(a+M)]=find(b+M);
        }else{
            if(find(a)==find(b)){
                res=i-1;
                break;
            }
            p[find(a)]=find(b+M);
            p[find(a+M)]=find(b);
        }
        
    }
    cout<<res<<endl;
    
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t;
    t=1;
    //cin>>t;
    while(t--){
        solve();
    }
    return 0;
}

扩展域并查集 & 带权并查集 扩展域并查集通过拆分域来表示复杂关系,逻辑直观且易于理解。虽然空间开销较大,但在处理复杂关系问题时非常高效。带权并查集通过维护权值来表示节点之间的关系,路径压缩和权值更新确保了高效的关系推导。虽然逻辑稍复杂,但代码简洁且高效,适合处理类似食物链的问题。 阅读详情

相关推荐

Zigbee开发环境搭建:从驱动安装到程序烧录全指南

本文提供了一份详尽的Zigbee开发环境搭建全指南,涵盖从驱动安装到程序烧录的完整流程。重点介绍了使用SmartRF Flash Programmer和仿真器进行程序下载的关键步骤,并详细说明了USB转串口驱动的配置方法,帮助开发者快速构建稳定的Zigbee开发基础。

weixin_29195217的博客 395

排座位(并查集)

题目: 输入格式:输入第一行给出3个正整数:N(\le≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系,其中关系为1表示是朋友,-1表示是死对头。注意两个人不可能既是朋友又是敌人。最后K行,每行给出一对需要查询的宾客编号。这里假设朋友的朋友也是朋友。但敌人的敌人并不一定就是朋友

oinei的博客 648

手把手教你为高云DDR3控制器添加物理约束:从位置锁定到参数配置

本文详细介绍了在高云FPGA平台上为DDR3控制器添加物理约束的实战指南,从位置锁定到参数配置。通过解析高云DDR3控制器的架构,提供关键模块的位置约束和参数调优方法,帮助开发者解决时序不稳定、初始化失败等常见问题,实现稳定可靠的DDR3接口。

weixin_33738555的博客 278

并查集并查集 disjoint set要点

查询a,b是否在同一组 合并a,b所在的组 rank可以不比较 void init() int find() void unite() bool same() 可以用来判断图内是否有环(初始化:遍历相连的两个点加入到并查集中)。如果两个点已经在集合里说明他俩已经有一条路了,这时候如果当前边把这两个点相连那么他俩肯定能构成环) //不带rank const int MAXV = 10; int ...

zhouzejun1的博客 301

详细了解sklearn中的CountVectorizer

CountVectorizer 是 scikit-learn(一个流行的 Python 机器学习库)中的一个文本特征提取类,其核心功能是将一系列原始文本(如句子、文档)转换为基于词频(word count)的数值矩阵。它基于词袋模型(Bag of Words, BoW)思想,忽略文本的语法结构和词序,仅关注词汇在文本中出现的频率,从而将文本转化为机器可理解的数字形式。文本 1:"I love machine learning"

2302_76568160的博客 1119

Docker部署FRP实现内网穿透

FRP是一款开源内网穿透工具,通过在公网服务器部署服务端(FRPS),内网设备运行客户端(FRPC)实现外部访问。支持TCP、UDP、HTTP等多种协议。部署时需配置服务端(如群晖NAS使用Docker)和客户端(如Windows下载可执行文件)。服务端需设置监听端口、控制面板及Token认证,客户端需指定服务器地址和相同Token。完成配置后可通过公网IP或域名访问内网资源,并在控制面板监控连接状态。

波哥技术栈 1602

图论·并查集·题解【Cow at Large G·atlarge】

题目链接 题目 题目描述 最后,Bessie被迫去了一个远方的农场。这个农场包含N个谷仓(2 &amp;amp;amp;amp;amp;amp;amp;amp;lt;= N &amp;amp;amp;amp;amp;amp;amp;amp;lt;= 105)和N-1条连接两个谷仓的双向隧道,所以每两个谷仓之间都有唯一的路径。每个只与一条隧道相连的谷仓都是农场的出口。当早晨来临的时候,Bessie将在某个谷仓露面,然后试图到达一个出口。 但当Bessie露面的时候,她的位置就会暴露。一

Chenyu_oi的博客 465

AgentFlow:模块化智能体框架与Flow-GRPO强化学习实战解析

在人工智能领域,大语言模型(LLM)与智能体(Agent)技术正推动着自动化任务处理的发展。其核心原理在于通过规划、执行与反馈的循环,使AI系统能够自主调用工具解决复杂问题。这一技术的价值在于突破单一模型的局限性,实现更可靠的多步骤推理。在实际应用中,智能体框架需要处理搜索、代码执行、数学计算等多种场景。本文聚焦的AgentFlow框架,正是通过模块化设计将智能体拆分为规划者、执行者、验证者和生成者四个专家模块,并引入Flow-GRPO强化学习算法进行流程内优化。该框架在搜索增强与工具调用等任务上展现出显著

weixin_42311427的博客 371

算法与数据结构——并查集、种类并查集和带权并查集

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根,就能确定它在哪个集合里。

qq_56639722的博客 3081

图解转置卷积原理

声明:本文大部分搬运自【机器学习】详解 转置卷积 (Transpose Convolution) 感谢博主花与人间事同,本人只是在博主原创文章上做补充以及添加一些自己的理解。 1 转置卷积的背景 通常,对图像进行多次卷积运算后,特征图的尺寸会不断缩小。而对于某些特定任务 (如图像分割和图像生成等),需将图像恢复到原尺寸再操作。这个将图像由小分辨率映射到大分辨率的尺寸恢复操作,称为上采样 (Upsample),如下图所示: 上采样方法有很多,详见【图像处理】详解 最近邻插值、线性插值、双线性插值、双三次插值

laonafahaodange的博客 5686

AIDC供电系统与算电协同

AIDC供电系统的技术革新为算电协同提供了基础保障,而算电协同则是解决AIDC高能耗问题、推动数字经济可持续发展的关键路径

数据中心全生命周期价值管理 2574

带权并查集 & 种类并查集

带权并查集就是在维护集合关系的树中添加边权的并查集,这样做可以维护更多的信息。 在对并查集进行路径压缩和合并操作时,这些权值具有一定属性,即可将他们与父节点的关系,变化为与所在树的根结点关系。 也就是说,权值代表着**当前节点与父节点的某种关系(即使路径压缩了也是这样)**,通过两者关系,一般的并查集,维护的是具有连通性、传递性的关系,例如**亲戚的亲戚是亲戚**。但是,有时候,我们要维护另一种关系:**敌人的敌人是朋友**。种类并查集就是为了解决这个问题而也可以将同一棵树下两个节点的关系表示出来。

SZTU_ZJB的博客 1991

智能解译城市进程:遥感影像建筑物提取研究全景与前沿进展(数据集及代码)

随着全球城市化进程的加速,高效、精准地监测城市建筑物分布对城市规划、灾害评估、人口估算及智慧城市建设具有重要意义。传统的人工测绘方法耗时费力,难以满足大范围、动态更新的需求。而遥感影像建筑物提取技术,借助深度学习与计算机视觉,能够自动化识别并提取建筑物轮廓,极大地提升了城市信息获取的效率和精度。首先,建筑物提取是遥感影像解译的核心任务之一。

hanfeng5268的博客 592

并查集和带权并查集及分类并查集

并查集是一种集并集查询于一体的数据结构,它的时间复杂度是Oαn)),阿尔法函数是阿克曼函数的反函数,返回值一般不超过3,数很大时一般不超过7,因此并查集的均摊时间复杂度接近O(1)。一般用来判断两个点是否相通,也可以用来判环,当相通的两个点连接时就会出现环,环的长度是两个点分别到根结点的路径之和加一。

gaomuchen_120309的博客 1044

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

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

数据结构:并查集,种类并查集,带权并查集

最近学了并查集,写篇博客巩固一下~有时候,我们并不关心数据之间的前后关系,也不关心数据的层次关系。一些确定元素只是单纯的聚集在一起,这样的元素聚集体被称为集合。当希望知道某个数据是否存在一个集合中,或者两个元素是否在同一个集合中时,就需要使用一些集合数据结构来维护集合元素之间的关系。而并查集就是一个维护集合的数据结构。

ffqws_的博客 1174

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

并查集

参考 https://www.cnblogs.com/asdfknjhu/p/12515480.html https://www.bilibili.com/video/BV13t411v7Fs?p=3 https://leetcode-cn.com/problems/number-of-provinces/solution/python-duo-tu-xiang-jie-bing-cha-ji-by-m-vjdr/ 一、基本概念 并查集是一种数据结构 并查集这三个字,一个字代表一个意思。 并(Union),

m0_43609475的博客 4427

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【并查集】 带权并查集详解

一.引入 并查集实际上是一颗由若干个树构成的森林,而如果还需要储存边的权值,则需要额外用一个数组d记录每个结点和其父节点的权值 这个思路其实很简单,但是因为路径压缩会改变点与点的连接关系,路径压缩后,点的父节点变为了根节点,所以需要更新d数组 二.查询函数写法 更新权值在查询操作的同时进行 int root_find(int x){ if(x==pre[x]) return x; int root=root_find(pre[x]); d[x]+=d[pre[...

Qiuker_jl的博客 2489

并查集进阶

并查集进阶 文章目录并查集进阶绪论普通并查集初始化搜索合并带权并查集初始化搜索合并种类并查集例题HDU3047(种类并查集)HDU3635(带权并查集)POJ1988(带权并查集)POJ2912(种类并查集)POJ1456(普通并查集) 绪论 我本来以为并查集是一种很简单的数据结构,但是实在是被kuangbin的专题虐的死去活来,故在此总结一下 并查集目前有三部分: 普通并查集,带权并查集,种类并...

Dawn-K の Blog 860

并查集提高——种类并查集(扩展域并查集)

本文介绍了种类并查集(反集)的原理与应用。通过两道例题(P1892团伙问题和P2024食物链问题),展示了如何利用扩展的并查集结构处理复杂关系。核心思想是将敌对关系转化为朋友关系,通过建立反集(i+n节点)来维护传递性。在团伙问题中,将朋友直接合并,敌人则与对方的反集合并;在食物链问题中,采用三倍空间分别表示同类、猎物和天敌关系。文章详细阐述了具体实现流程,并提供了AC代码,帮助读者理解如何通过并查集维护多类型关系,同时指出统计根节点时的注意事项。

2504_90509331的博客 1016

种类并查集&带权并查集

P2024 (NOI2001)食物链 题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道 它到底是哪一种。 有人用两种说法对这 N 个动物所构成的食物链关系进行描述: 第一种说法是“1 X Y”,表示 X 和 Y 是同类。 第二种说法是“2...

dajiangyou123456的博客 876

并查集模板

并查集 并查集是个数据结构,围绕着一个就是根节点展开,若两点的根节点相同那么就肯定在一棵树内,所以我们只需要维护一个点的父亲节点就好了,然后每次询问都查找根节点是否相同。 但若树退化成链的话,我们就需要判断两点和根节点的关系,保留当前点的根节点关系就好了,这样的优化方式我们叫做路径压缩。 1.普通并查集模板 初始化: void mem(int n) { for (int i=0;i<=n;i++) { father[i]=i; R[i]=1;//秩优

算法小猪的博客 3226

带权并查集+种类并查集

好久没写博客了,差点忘了在哪儿写,不写博客是真的对学过的东西一点印象都没有T_T; 丧心病狂的大佬挂了一道种类并查集+dp的题,然而我却连种类并查集是什么都不知道,赶紧学习缩小差距; 1.带权并查集(对这两个的关系还有点儿懵,先上再说) 就像名字一样,带权并查集就是要多维护一个权值数组;和普通的并查集大同小异,用f[]数组存父节点,val存当前结点到父亲结点的权值, 首先是初始化 void Ini...

qq_44077455的博客 1215

种类并查集与带权并查集

文章目录【POJ】1182 食物链【HDU】1213 How Many Tables【POJ】2524 Ubiquitous Religions【POJ】1611 The Suspects【POJ】2236 Wireless Network 【POJ】1182 食物链 原题链接:http://poj.org/problem?id=1182 题意: 思路: Code(C++): 这道题要用 sc...

360°顺滑 439

并查集入门(普通并查集+带删除并查集+关系并查集)

什么是并查集?通俗易懂的并查集详解 【普通并查集】 基础并查集(例题+题解) 【How Many Tables】 Problem Description Lh Boy无聊的时候很喜欢数蚂蚁,而且,还给每一只小蚂蚁编号,通过他长期的观察和记录,发现编号为i的蚂蚁会和编号为j的蚂蚁在一起。 现在问题来了,他现在只有他的那本记录本,然而,他想要知道,他所观察的蚂蚁中,有多少堆蚁群。没有记录的编...

菜鸡成长史 1473

并查集算法

并查集是一种树形数据结构,用于处理一些不相交集合的合并及查询问题。通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,这样就可以查询某个元素所在的集合、与这个元素在一个集合中的元素,以及更多。只说这些肯定不行,接下来我将详细介绍。

2301_80224556的博客 1035
上一篇: 最大异或对--Acwing143
下一篇: 树状数组 + 线段树
01star️
博客等级 码龄3年 96粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值