SPOJ - QTREE4 Query on a tree IV(动态点分治)

动态树分治 点分治是一种树分治算法,在解决树上路径满足某种属性的数量统计方面有着很大的作用,而动态点分治相当把重心拿出来重新构了一个新的树型关系,每个重心所管辖的就是他能getdeep的那一片连通块,然后每个重心额外记一个上层重心即可,可以支持在线修改查询的一类树上问题。 立即下载

QTREE4 - Query on a tree IV

#tree
You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3…,N. Each edge has an integer value assigned to it(note that the value can be negative). Each node has a color, white or black. We define dist(a, b) as the sum of the value of the edges on the path from node a to node b.

All the nodes are white initially.

We will ask you to perfrom some instructions of the following form:

C a : change the color of node a.(from black to white or from white to black)
A : ask for the maximum dist(a, b), both of node a and node b must be white(a can be equal to b). Obviously, as long as there is a white node, the result will alway be non negative.
Input
In the first line there is an integer N (N <= 100000)
In the next N-1 lines, the i-th line describes the i-th edge: a line with three integers a b c denotes an edge between a, b of value c (-1000 <= c <= 1000)
In the next line, there is an integer Q denotes the number of instructions (Q <= 100000)
In the next Q lines, each line contains an instruction “C a” or “A”
Output
For each “A” operation, write one integer representing its result. If there is no white node in the tree, you should write “They have disappeared.”.

Example
Input:
3
1 2 1
1 3 1
7
A
C 1
A
C 2
A
C 3
A

Output:
2
2
0
They have disappeared.

Some new test data cases were added on Apr.29.2008, all the solutions have been rejudged.

树的边有正负权重,然后告诉你树上有一些 白点 和 黑点,有两种操作
1.改变点的颜色,即白变黑,黑变白
2.问树上两个白点之间路径权重和最大数多少,可以自己到自己,即路径权重为0。也就是说只要有一个白点路径权重就>0,。全是黑点输出 They have disappeared.

动态点分治,和点分治一样,把树上的路径分为经过 重心 和不经过 重心 两种。

先进行点分治,和一般的点分治操作差不多,就是我们要多一个 fa 数组来保存这个重心的父重心是谁,用来下面的修改点的颜色的操作。

每到一个重心t,就计算它的子树中的点到它的路径权值,保存在对应的子树重心的优先队列里。我们用p[x]来保存(x为子树重心)。fa[x] = t,子中心指向父重心。

计算子树中各个点到重心的权值时,我们建一张边表,起始点存子树的点,目标点存子树的重心x,权重存子树到重心t的路径权值和,用于下面的修改点的颜色。

然后经过这个重心的最大路径权值就是从他的各个子树中找出最大的路径,然后把最大的和第二大的加起来。我们用maxn[t](即重心为t)优先队列 来保存它的子树中的点到它的最大路径。注意添加一个0到maxn[t]中,即自己到自己这种情况。

然后用一个ans优先队列来保存每个每个重心的答案,ans中最大的值就是我们要找的答案。

(上面这段一定要理解了)

修改点的操作,我们只讨论白变黑,黑变白是类似的。
为了方便修改,对于p数组,maxn数组,ans我们都把添加进来的值都放在q这个优先队列里,要删除的值都发那个在d这个优先队列里,当d和p的最大值都一样时,q和d都出栈。

还是来讨论一下吧。
比如p数组,p[x]保存了x重心所在的子树中的点到父重心t的距离。如果这里面有一条边不能用了,我们把它加到d数组里面。如果这条边不是p[x]里最大值,则p[x]对于求经过父重心t的路径权重最大值没有任何改变,我们就不管他。如果是最大值,q和d同时出栈这个元素,p[x]提供的路径最大值改变。所以manx[t]也要进行改变,即删除原来p[x]里的最大值,加入新的p[x]里的最大值。
如果maxn[t]改变了,ans也有可能改变,所以ans里删除原来maxn[t],加入新的maxn[t]

点 x 由白变黑就相当于 x 到它的所有父重心的路径都走不了了,而且自己也无法到达自己。
我们先来处理后面这一种情况,后面这种情况比较简单,只需要在maxn[x].d里添加0表示删除掉这个点到自己这种情况。如果改变了则修改ans中的情况
然后是前面一种情况,这时候就要用到之前的边表了。
我们跑一边边表,边表的起始点是点 x,目标点是x的各个父重心 t ,我们把边重添加到p[t].d当中,表示删掉这段路径,如果有最大值发生变化就修改maxn[t],如果manx[t]发生变化就修改ans。跑完边表我们就修改了 x 到它所有父重心的路径权值。

询问的时候只要输出ans.top()就可以了

动态点分治的实质就是建立一棵重心树,每个子中心指向自己的父重心。
比如说一棵树,长成正方形的样子,他的重心就是正方形的重心。
假设重心向正方形四个角都延伸出一棵子树,这四棵子树又有一个重心,我们让这些子树的重心指向父重心。然后这样不断分治,建立一棵重心树。

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

const int MAXN = 100010;
const int INF=0x3f3f3f3f;

struct node1{
	int v,nx,w;
}edge[MAXN<<1],EDGE[MAXN<<4];
//注意这个<<4,重心树的深度为log2(n) ,就是说每个点到其父重心的边总共大概有nlon2(n)条 

int head[MAXN],tot,HEAD[MAXN],col[MAXN],TOT;//edge是题目给的数据的表。EDGE是后来建立的点到各个父重心的边表 

inline void add(int u,int v,int w)
{
	edge[++tot].v = v;
	edge[tot].w = w;
	edge[tot].nx = head[u];
	head[u] = tot;
}

inline void ADD(int u,int v,int w)
{
	EDGE[++TOT].v = v;
	EDGE[TOT].w = w;
	EDGE[TOT].nx = HEAD[u];
	HEAD[u] = TOT;
}

int sz[MAXN],size,root,maxsubtree,vis[MAXN];

void getroot(int x,int fa) //找重心 
{
	sz[x] = 1;
	int maxn = 0,v;
	for (int i = head[x];i;i = edge[i].nx)
	{
		v = edge[i].v;
		if (vis[v] || v == fa) continue;
		getroot(v,x);
		sz[x] += sz[v];
		maxn = max(maxn,sz[v]);
	}
	maxn = max(maxn,size - sz[x]);
	if (maxn < maxsubtree)
	{
		maxsubtree = maxn;
		root = x;
	}
}

int fa[MAXN],cnt;//cnt统计白点个数 

struct node{
	priority_queue<int> q,d;
	void add(int x){q.push(x);}
    void del(int x){d.push(x);}
	int top()
	{
        for(;;){
            if(q.empty())return -INF;
            else if(!d.empty() && q.top() == d.top())q.pop(),d.pop();
            else return q.top();
        }
    }
    int toptwo(){//返回优先队列里最大的两个值的和 
        int x = top();
        del(x);
        int y = top();
        add(x);
        if(y == -INF) return x == -INF?max(x,0):0;
        return max(x+y,0);
        return 1;
    }
}p[MAXN],maxn[MAXN],ans;

void dfs(int x,int fx,int dis,int center)
{
	p[center].add(dis);//把子树中的点到父重心的距离权值添加到子p[center]当中 
	ADD(x,center,dis);//建立点到它父重心的边表,用于后面的修改操作 
	int v;
	for (int i = head[x];i;i = edge[i].nx)
	{
		v = edge[i].v;
		if (vis[v] || v == fx) continue;
		dfs(v,x,dis + edge[i].w,center);
	}
}

void build(int x,int fx)
{
	fa[x] = fx;						//存下每个子中心的父重心 
	vis[x] = 1;
	int v;
	maxn[x].add(0);					//添加自己到自己情况 
	for (int i = head[x];i;i = edge[i].nx)
	{
		v = edge[i].v;
		if (vis[v]) continue;
		maxsubtree = 2147483647,size = sz[v];//寻找重心初始化 
		getroot(v,x);				//寻找子树的重心 
		dfs(v,x,edge[i].w,root);	//dfs跑子树到重心x的路径权值,保存在子树的重心p[center]处 
		maxn[x].add(p[root].top());	//存下这颗子树的最大路径权值 
		build(root,x);				//建立子树的重心树 
	}
	ans.add(maxn[x].toptwo());		//统计经过重心的路径的答案 
}

void change(int x)
{
	col[x] = !col[x];
	if (col[x] == 1)//白变黑 
	{
		cnt--;//白点数目-1 
		int a = maxn[x].toptwo(); //自己到自己的情况删去 
		maxn[x].del(0);
		int b = maxn[x].toptwo();
		if (a != b) ans.del(a),ans.add(b);
		int v;
		for (int i = HEAD[x];i;i = EDGE[i].nx)//点到其各个父重心的路径权值删去 
		{
			v = EDGE[i].v;
			a = p[v].top();
			p[v].del(EDGE[i].w);
			b = p[v].top();
			if (a != b)
			{
				int c = maxn[fa[v]].toptwo();
				maxn[fa[v]].del(a);
				maxn[fa[v]].add(b);
				int d = maxn[fa[v]].toptwo();
				if (c != d)
				{
					ans.del(c);
					ans.add(d);
				}
			}
		}
	} 
	else
	{
		cnt++;
		int a = maxn[x].toptwo(); 
		maxn[x].add(0);
		int b = maxn[x].toptwo();
		if (a != b) ans.del(a),ans.add(b);
		int v;
		for (int i = HEAD[x];i;i = EDGE[i].nx)
		{
			v = EDGE[i].v;
			a = p[v].top();
			p[v].add(EDGE[i].w);
			b = p[v].top();
			if (a != b)
			{
				int c = maxn[fa[v]].toptwo();
				maxn[fa[v]].del(a);
				maxn[fa[v]].add(b);
				int d = maxn[fa[v]].toptwo();
				if (c != d)
				{
					ans.del(c);
					ans.add(d);
				}
			}
		}
	}
}

int main()
{
	int n;
	scanf("%d",&n);
	cnt = n;
	for (int i = 1,u,v,w;i<n;i++)//建立树 
	{
		scanf("%d%d%d",&u,&v,&w);
		add(u,v,w); add(v,u,w);
	}
	maxsubtree = 2147483647,size = n;
	getroot(1,0);//找树的重心 
	build(root,0);//建立重心树 
	int q;
	scanf("%d",&q);
	char opt[19];
	while (q--)
	{
		scanf("%s",opt);
		if (opt[0] == 'C')
		{
			int x;
			scanf("%d",&x);
			change(x);
		}
		else
		{
			if (cnt == 0) printf("They have disappeared.\n");
			else printf("%d\n",ans.top());
		}
	}
	return 0;
}

绝对是我目前写过的最详细的题解博客了,动态点分治orz
尤其是那个<<4,坑死我了,蒟蒻流下了不争气的泪水

bzoj 3730. 震波(动态点分治 + vector树状数组) (自己写的动态点分治巨垃圾,常数是别人的两倍) 用动态开点线段树死活过不去,学了一波大佬用 vector 开树状数组立马就卡过去了 考虑点分树的做法,在点分树上每个点以距离为下标建一棵线段树,每次询问查询子树的贡献,再暴力向上跳合并父节点来自其它节点的贡献。 因为子树树形被破坏,在做减法时,子节点子树对父节点的贡献不能用子树维护的信息 + 连向父节点的边的贡献得到,考虑在每个节点再维护一个线段树,按距离建树用来统计子树内的节点到其父节点距离为 p 的点权和,这样便可以暴力爬树统计子树外的节点的贡献。 理论复杂度为 O(nlog⁡2n)O(n \log^2 n)O(nlog2n),但常数巨大,况 立即下载

相关推荐

机器学习西瓜书期末复习(2022HENU)

期末复习之机器学习 文章目录期末复习之机器学习第一章 绪论 第一章 绪论 机器学习的定义 机器学习致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。 根据训练数据是否拥有标记信息,将学习任务分为监督学习和无监督学习。 监督学习 :分类和回归 线性回归、对数几率回归、决策树、支持向量机、贝叶斯分类器、神经网络 无监督学习:聚类 聚类算法: 原型聚类:(k均值,学习向量量化,高斯混合聚类);密度聚类(DBSVAN);层次聚类(AGNES)。降维。话题分析。图分

qq_46561559的博客 2万+

html相关游戏逆ryona,横板游戏ryona | 手游网游页游攻略大全

发布时间:2015-11-14冰岛游戏工作室Lumenox Games近日对外曝光了其名下制作的2D手绘风横版动作冒险游戏(Aaru's Awakening),并放出了该作的首段预告,如下,敬请欣赏! 在游戏标签:游戏资讯 游戏视频发布时间:2016-07-15即将进入8月,暑假的高峰时期,也是异常炎热的一个月,很多人情愿呆在家里吹空调.可是呆在家里该如何消遣呢,当然是游戏了.八月份的游戏市场,上...

weixin_39976951的博客 9388

ADS 2023 实战:手把手教你仿真一个中心频率 2.4GHz 的带通滤波器(附工程文件)

本文详细介绍了使用ADS 2023软件设计和仿真中心频率2.4GHz带通滤波器的全流程,包括工程准备、指标定义、原理图设计、仿真优化及实际电路实现。通过切比雪夫滤波器拓扑和参数优化,实现高性能的带通滤波器设计,适用于无线通信系统。附有工程文件和常见问题解决方案,助力工程师快速掌握射频滤波器设计技巧。

weixin_30790841的博客 482

动态点分治

点分治,作为树分治中的一种,在很多树形结构的问题上起到了很重要的作用,但是假如我们在树分治的基础上,根据时间戳来对树上的结点进行修改的话,那样岂不是很难受? 点分治该怎么搞?暴力,当然是暴力啊?每次修改一次,我们暴力点分一次,复杂度升天。 那么,就该介绍一下动态点分治了! 动态点分治 动态点分治,我们知道每个点分树的父节点是固定的,此话怎讲?我们模拟一下点分治的过程,首先,...

既然弱小,就只顾变强就是了 795

读书笔记 | 财务会计理论(第7版 William R.Scott)(中):契约视角下的会计信息价值

本文从契约理论视角深入剖析了财务会计信息的核心价值。文章指出,会计信息作为关键的“契约润滑剂”,通过债务合同与薪酬合同等具体形式,有效解决了公司内外的信息不对称与道德风险问题,协调了股东、债权人及管理层等多方利益,是公司治理与资本市场有效运转的基石。

mac99的博客 330

告别手动处理:用 Bruker NSMatlabUtilities 工具箱批量分析 AFM 力曲线数据的实战案例

本文介绍了如何使用 Bruker NSMatlabUtilities 工具箱实现 AFM 力曲线数据的批量分析,解决传统手动处理耗时且易出错的问题。通过实战案例展示工具箱的核心功能,包括数据读取、力曲线分析和可视化,帮助科研人员提升数据处理效率和准确性。

weixin_28362173的博客 214

动态点分治详解

动态点分治大意:利用没有树结构修改的性质预处理重心树优化时间 其实就是很暴力的思想,因为树的结构不变,所以每一次找到的重心都一样,可以用一次点分树预处理一下点分治的重心,再连接相邻的重心便是点分树。 前置知识:点分治 见另一篇blog: 算法: 好像就没什么了,上面就是全过程 详细一点的分析: 找到当前子树重心x 深搜x的每一个儿子的子树,找到每一棵子树的重心y(两个重心的话随便取一个) 对...

tylon2006的博客 593

IEC 61400-1:2019 附录 C 湍流模型全面解读

IEC 61400-1:2019 附录 C 全面解读

weixin_46713695的博客 471

点分树(动态点分治)

前置知识 点分治 吐槽 不知道为什么,网上有关点分树的讲解不多。而且都写的很简单(快哭了)。憨批实在是不懂。于是只能按照他们所给的思想手撸代码了。 讲解 我们在点分治中,使用了分治的思想,对于每个子树求解,我们都不会直接递归,而是找到重心后,从重心开始递归。这样在一些极端样例(一条链)的情况,仍能保证O(nlogn)O(nlogn)O(nlogn)不会退化为O(n2)O(n^2)O(n2)。这是一个很神奇的分治方式。这时我们试想这么一道题目: 给你一颗n个节点树(n<1e5),给你m次询问(m&lt

平凡人Kalzn的博客 1471

Android11车机系统海外项目资源包RRO方案优化

本文介绍了汽车设置应用如何通过Android RRO(运行时资源叠加)方案实现多车型差异化资源管理。针对不同车型(国内/海外、轿车/SUV)和配置(方向盘、轮毂等),采用产品变体(productFlavors)构建不同APK版本,并通过JSON配置文件动态启用对应资源包。系统根据车辆下线配置自动匹配适用的资源叠加包,解决了硬编码判断带来的维护问题。该方案实现了资源的高效复用,同时支持灵活配置多种车型组合,为汽车行业多车型共平台开发提供了可扩展的技术实现。

shusuanly的博客 469

Autosar PWM模块的配置和使用

在上面的代码中,我们首先配置了PWM的初始化参数,包括频率和分辨率。GPIO Driver:由于PWM信号需要输出到特定的引脚上,因此我们还需要使用GPIO驱动程序来控制引脚的状态。通过合理配置和应用PWM模块,我们可以实现对汽车电子系统中各种功能的精确控制,从而提高汽车性能和用户体验。在实际应用中,我们可以根据需要进行更多的配置和调整,以实现灵活的PWM控制。PWM Driver:这是主要的PWM驱动程序,负责产生PWM信号并输出到相应的引脚上。接下来,我们需要配置PWM模块的参数。

TcData的博客 682

点分治及动态点分治学习笔记

前置知识:点分治 点分治,是处理树上路径的一个极好的方法。 如果你需要大规模地处理一些树上路径的问题是,点分治是一个不错的选择。 具体思路 P3806 【模板】点分治 给定一棵有 nnn 个点的树,询问树上距离为 kkk 的点对是否存在。 大多数同学的暴力做法都是对于每一个点对 (u,v)(u,v)(u,v) 进行 dfs 来求解。 但其实利用分治这一种算法,可以大大减少搜索的时间复杂度。 对于一个序列上的区间和等操作,我们可以使用分治来将原问题分解成几个子问题来求解,之后再合并答案。 而在树上我们也是

orz 503

Oracle EBS PAC定期成本分配处理程序请求报错:30011一个无效帐户与正在处理的物料关联

Oracle EBS版本: RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 前提条件: 1、启用“MRP:调试模型”配置文件 月结会计反映执行《定期成本分配处理程序》请求报错: 中文:30011一个无效帐户与正在处理的物料关联。: CSTPALPC.create_dist_entry : 40 英文:30011An invalid account is associated with the item being transacted.:...

陈显平的专栏-Oracle EBS 1085

Query on a tree IV SPOJ - QTREE4动态点分治

Query on a tree IV SPOJ - QTREE4 前置技能:点分治,动态点分治。 Part 0 首先,对于确定了路径上的一个点(也就是枚举重心的过程),那么如果这一条路径是一条收尾都是白色节点的路径,那么它由两条由重心出发的重点为白色节点的链拼接而成。故对于每个重心都要存每个以重心的一个端点,另一个端点为白色端点的链的信息,这个重心的答案(这个重心所管辖的区域以这个经过这个重心的...

Loging的博客 332

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Query on a tree IV SPOJ - QTREE4(动态点分治)

对于每一个子树存一个set,每一个点存一个set,然后你就可以以OJ最短的代码长度换来OJ上最长的运行时间。。。 #include&lt;bits/stdc++.h&gt; #define maxn 100005 #define lim 19 using namespace std; char cb[1&lt;&lt;15],*cs=cb,*ct=cb; #define getc() (cs==...

Freopen的博客 300

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SPOJ QTREE4 Query on a tree IV ——动态点分治

【题目分析】 同bzoj1095 然后WA掉了。 发现有负权边,只好把rmq的方式改掉。 然后T了。 需要进行底(ka)层(chang)优(shu)化。 然后还是T 下午又交就A了。 【代码】 #include <queue> #include <cstdio> #include <cs...

weixin_33733810的博客 119

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

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

SPOJ QTREE4 Query on a tree IV

Description You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3...,N. Each edge has an integer value assigned to it(note that the value can be nega

Occult 1314

SPOJ QTREE4 Query on a tree IV (边分治 + 堆)

题意: 给定一棵树,节点有黑白两种颜色,有正负的边权。 有两种操作: 一种是修改反转某个节点的颜色; 另一种是询问树上最远的两个白色节点的距离。 思路: 树剖+堆维护的代码还是没敢去码。。以后再补了。。 这里用边分治+堆来维护。 边分治的优点比起点分支来说,优点就是每次分治之后,只有两个分支,处理起来比较简单,代码比较好写。缺点就是需要添加虚点,常数比较大。 边分

yamiedie_ 1776

SPOJ-QTREE4 Query on a tree IV(边分治)

QTREE4 - Query on a tree IV #tree You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3...,N. Each edge has an integer value assigned to it(no

十分残念的博客 1504

SPOJ - QTREE4 Query on a tree IV 边分治

题目传送门 题意:有一棵数,每个节点有颜色,黑色或者白色,树边有边权,现在有2个操作,1修改某个点的颜色, 2询问2个白点的之前的路径权值最大和是多少。 题解: 边分治思路。 1.重构图。 因为边分治在菊花图的情况下情况不理想,所以需要先把图重新构建一下,是每个点的度数不超过3。 2.找在新图里面 一条边使得 断开这条边的情况下,左右2新树使得较大的那个子树是所有情况下的最小...

dengpangbu3703的博客 204

SPOJ QTREE4 Query on a tree IV (边分治 + 用堆维护分治结构)

题目连接 题意: 给定一棵树,节点有黑白两种颜色,有正负的边权。 有两种操作: 一种是修改反转某个节点的颜色; 另一种是询问树上最远的两个白色节点的距离。 Analyse: 边分治,和点分治类似,每次找的中心边 (删除这一条边之后形成的两颗子树的 size 的最大值尽量小) . 假设中心边是 x-y ,那么和点分治差不多,将所有边分为经过 x-y 边与不经过 x-y 边,然后递归分治处理。 需要一...

Error Man 的博客 334

SPOJ QTREE4 SPOJ Query on a tree IV

You are given a tree (an acyclic undirected connected graph) with N nodes, and nodes numbered 1,2,3...,N. Each edge has an integer value assigned to it(note that the value can be negative). Each ...

dezhen7015的博客 159

spoj Query on a tree IV(链分治)

传送门 题意简述: 捉迷藏强化版(带有边权,可以为负数) 思路:好吧这次我们不用点分树,我们用听起来更屌的链分治。 直接把树剖成若干条重链,这样保证从任意一个点跳到根节点是不会跳超过logloglog条重链的。 然后用上链分治的常规套路:分是否在链上面的信息讨论,并将整条链的值全部统计在链顶,这样修改的时候沿着链往上跳修改logloglog次即可。 那么针对这道题可以怎么瞎搞维护呢? 考虑对每个...

苟为蒟蒻又何妨 273

SPOJ 2666 QTREE4 - Query on a tree IV

链分治

Fuxey 2241

SPOJ QTREE4 Query on a tree V (边分治 + 分治结构)

题目连接 题意: 一个树,n 个结点,初始时全部为黑色。 有修改操作:将一个点的颜色反转,黑 -> 白,白 -> 黑 查询操作:给一个点 v,询问 v 与一个白色点 u 的最近距离,其中 u 可以等于 v Analyse: 和 Query on a tree IV 差不多。以中心边的 u 和 v 分别为当前子树的根结点进行 dfs,维护每个点将属于的连通块编号以及这个点到当前连通块根...

Error Man 的博客 317

SPOJ QTREE4 Query on a tree IV(边分治)

qtree

LJ__ 1323
上一篇: 牛客多校第八场 E - Explorer(时间分治 + 离散化 + 并查集 + 线段树)
下一篇: 关于KM板子的一个小细节
EIP_silly
博客等级 码龄8年 3粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值