北大ACM2485 - Highways(最小生成树)

pku acm 2485 Highways代码 pku acm 2485 Highways代码 最小生成树的prim算法,有详细的注释 立即下载

这是一道非常简单的关于最小生成树的问题。我们通过该题,完成对朴素prim、prim+heap、kruskal算法 的理解。

朴素Prim算法

设共有n个顶点,顶点之间没有必然的顺序,开始将其中一个顶点的权值设为0,其他设为最大(无穷大),花销是o(n)。每次从其中选择一个未处理过的权值最小的顶点,花销是O(n);然后更新和该顶点相连的顶点的权值,花销是o(n);共需要进行n次,花销是o(n),以上三个步骤是嵌套关系,所以花销是o(n3)。所以总花销是o(n)+o(n3)=o(n3)。

prim处理的对象是顶点,所以,数据结构是struct vertex。

运行结果是 760K 172MS。
代码如下:
/*
 *
 * Introduction : ACM of pku
 * ID : 2485
 * alg : MST.Prim
 * Author : Gykimo
 * Date : 20130115
 * 
 */

#include <stdlib.h>
#include <stdio.h>
#include <queue>

using namespace std;

struct vertex
{
	int minDist;	//the min distance to the adjcent nodes
	bool inMST;	//is walked
};

int case_num = 0;
int village_num = 0;

int edge[500][500];
vertex* vertices = NULL;

int max_lenth = 0;

void init(){
	vertices = (vertex*)malloc(village_num * sizeof(vertex));
	
	for(int i=1; i<village_num; i++){
		vertices[i].minDist = 65536;
		vertices[i].inMST = false;
	}

	vertices[0].minDist = 0;
	vertices[0].inMST = false;
}

/*获得未处理的权值最小的顶点*/
int getVertexOfMinDist(){
	int min = 65536;
	int minIndex = -1;
	for(int i=0; i<village_num; i++){
		if(!vertices[i].inMST && vertices[i].minDist < min){
			min = vertices[i].minDist;
			minIndex = i;
		}
	}
	return minIndex;
}

/*更新和index顶点相邻的顶点的权值*/
void updateMinDist(int index){
	for(int i=0; i<village_num; i++){
		if(!vertices[i].inMST && (vertices[i].minDist > edge[index][i])){
			vertices[i].minDist = edge[index][i];
		}
	}
}

void prim(){
	vertex* v = NULL;
	int minIndex = 0;

	while((minIndex = getVertexOfMinDist()) >= 0){
		v = vertices + minIndex;
		v->inMST = true;
		
		if(max_lenth < vertices[minIndex].minDist){
			max_lenth = vertices[minIndex].minDist;
		}

		updateMinDist(minIndex);
	}

	printf("%d\n", max_lenth);
}

void readLine(){
	scanf("%d", &case_num);
	for(int i=0; i<case_num; i++){
		scanf("%d", &village_num);
		for(int j=0; j<village_num; j++){
			for(int k=0; k<village_num; k++){
				scanf("%d", &edge[j][k]);
			}
		}

		init();
		prim();
		max_lenth = 0;
		free(vertices);
	}
}

int main(){
	readLine();
	return 0;
}

Prim + heap算法


Kruskal算法

由于Kruskal算法是对边进行处理的一个算法,而边除了有边的权值之外,还需要边的两个端点,所以共定义了两个数据结构
class edge和class vertex。

运行结果:8504K 516MS

注意:
如果将函数deinit()中注释掉的代码放开的话,运行结果是超时。

/*
 *
 * Introduction : ACM of pku
 * ID : 2485
 * alg : MST.Kruskal
 * Author : Gykimo
 * Date : 20130115
 * 
 */

#include <stdlib.h>
#include <stdio.h>
#include <algorithm>
#include <vector>

using namespace std;

class vertex
{
	public:
		vertex(){
			make_set();
		}
		
		vertex * find_set(){
			if(mParent != this){
				mParent = mParent->find_set();
			}
			
			return mParent;
		}

		void union_set(vertex * v){
			link(v->find_set());
		}
		
	private:
		vertex * mParent;
		int mRank;

		void make_set(){
			mParent = this;
			mRank = 0;
		}
		
		void link(vertex * v){
			if(mRank < v->mRank){
				mParent = v->find_set();
			}else{
				v->mParent = this;
				if(mRank = v->mRank){
					mRank++;
				}
			}
		}
};

class edge
{
	public:
		edge(vertex& u, vertex& v, int w){
			v1 = &u;
			v2 = &v;
			weight = w;
		}

		bool kruskal_check(){
			if(v1->find_set() != v2->find_set()){
				add_to_mst();
				return true;
			}
			return false;
		}

		int weight;

	private:
		vertex * v1;
		vertex * v2;
		
		void add_to_mst(){
			v1->union_set(v2);
		}
};

int case_num = 0;
int village_num = 0;
vector<edge*> edges;
vertex * vertices;
int max_lenth = 0;

void init(){
	vertices = new vertex[village_num];
}

void deinit(){
	delete [] vertices;
	/*
	for(vector<edge*>::iterator iter=edges.begin(); iter !=edges.end(); ++iter){
		delete (*iter);
	}*/
	edges.clear();
}

bool cmp(edge* e1, edge* e2){
	if(e1->weight < e2->weight)
		return true;
	return false;
}

void kruskal(){
	int loop_num = village_num;
	sort(edges.begin(), edges.end(), cmp);

	for(vector<edge*>::iterator iter=edges.begin(); iter !=edges.end(); ++iter){
		if((*iter)->kruskal_check()){
			loop_num--;
			max_lenth = (*iter)->weight;
		}
		if(loop_num == 0)
			break;
	}

	printf("%d\n", max_lenth);
}

void readLine(){
	int tmp;
	edge* e;
	
	scanf("%d", &case_num);
	for(int i=0; i<case_num; i++){
		scanf("%d", &village_num);
		init();
		
		for(int j=0; j<village_num; j++){
			for(int k=0; k<village_num; k++){
				scanf("%d", &tmp);
				if(k>j){
					e = new edge(vertices[j], vertices[k], tmp);
					edges.push_back(e);
				}
			}
		}
		kruskal();
		deinit();
	}
}

int main(){
	readLine();
	return 0;
}

结论



poj 2485 Highways 测试数据 poj 2485 Highways 测试数据 解题报告:http://blog.youkuaiyun.com/qq7366020/article/details/8615293 立即下载

相关推荐

POJ2485-Highways【Prim】

北大POJ2485-Highways【Prim】 解题报告+AC代码

Highways(p1751)

感受:搞了好久好久, 关键:最小生成树的路径, #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; double map[1000][1000]; struct my { dou

jiangjiashi的博客 787

BUSCO评估基因组的完整性

因为数据库收集的时候找的就是在不同的物种间都是单拷贝的基因,所以说在评估的物种里面应该也是单拷贝的状态才对。基因组层面评估:先去基因组上预测这些基因,再去做评估,如果说给他是一个注释好的基因集,这个时候提供的是一个蛋白集合,它就直接是去进行同源搜索,再去评估,看BUSCO数据库里面的这些单拷贝基因有或者无;首先,tblastn也是同源搜索,同源搜索之后,去对转录本进行读码框预测,预测完的结果还是去进行hmmsearch的搜索(hmmsearch是做蛋白质结构域搜索的),最终拿到BUSCO评估结果。

qq_64400864的博客 2959

Highways

The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of public highways. The Flatopian government is aware of this problem and has already constructed a number of highways connecting some of the most important tow

qq_52898168的博客 177

Qt+WebAssembly学习笔记(六)win10+Qt6.4.0rc1开发环境搭建

前言:因项目的缘故,笔者有段时间没测试了,官方也修复了很问题,笔者今天记录下最新版本环境搭建。

aggs1990的专栏 3766

MRI图像切片(nii格式转2D)

代码参考:将一个MRI(nii格式)数据进行切片 想要批量抽取MRI数据的几个切片,借鉴了上述代码的Python版本,原始代码抽取了全部切片。本次实验主要是抽取sMRI的横断面(axial)方向的其中30张切片,数量根据自己需求可自行设置。 import scipy, numpy, shutil, os, nibabel import sys, getopt import imageio def niito2D(filepath): inputfiles = os.listdir(filep

chs_502的博客 7549

ACM-最小生成树之Highways——poj2485

ACM 最小生成树 Highways poj2485 Prim

继续激情,继续奋斗。 2647

S32K3 MCAL配置 【MCU、PORT、DIO】

1、s32k3时钟源可由PLL, FXOSC, FIRC, SIRC, and SXOSC五种时钟源生成,可按照手册推荐配置。目标是在在S32K344板子上点亮红色LED灯,需要配置的有MCU、PORT、DIO模块。MCU最主要的是时钟配置,要翻看芯片手册,理解时钟树。1、通用配置中,没有什么特殊需求按照demo配置就好。1、配置MC_CGM mux 0 clocks时钟。1、外部晶振配置按照实际项目原理图进行配置。1、外部晶振配置,按照实际项目配置。1、PLL时钟按照手册进行配置。

weixin_43741076的博客 3243

POJ 2485 Highways(prim算法)

Highways Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13404   Accepted: 6237 Description The isl

qiyazhuang的专栏 641

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1073

Docker 磁盘占用过多问题处理过程记录

Docker 磁盘爆满问题处理

MR.骑士道 3554

[ACM] poj 2485 Highways (最小生成树)

Highways Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21056   Accepted: 9723 Description The island nation of Flatopia is perfectly flat. Unfortunately,

逆风的方向 更适合飞翔 2545

量化交易 米筐 因子分组打分(成长因子)

分组动手练习 在米筐上因子数据没有处理,提供的很多因子没有默认分类,存在一些因子没有的情况,我们就选择一些常见的因子。 价值因子 质量因子 成长因子(历史名称) pe_ratio return_on_invested_capital in_revenue pcf_ratio du_return_on_equity inc_eps pb_ratio return_on_asset_net_profit inc_total_asset market_cap return_on_equ

廷益_飞鸟的博客 932

POJ 2485--Highways

题目: Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of

Time_Life的专栏 428

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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

POJ2485-Highways

全解题报告索引目录 -> 【北大ACM – POJ试题分类】 转载请注明出处:http://exp-blog.com ------------------------------------------------------------------------- 提示:题意很简单,就是求最小生成树的最大边。继续Prim吧O(∩_∩)O //Memory T...

ζёСяêτ - 小優YoU 6619

怀旧版电脑GBC模拟器

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

poj 2485 Highways prim最小生成树 基础 球最小生成树中得最大边

prim基础!! 球最小生成树中得最大边#include #include using namespace std; int map[505][505],dis[505],vis[505],a[505]; int sum[505],m; int cou; bool cmp(int x,int y) { return x>y; } void prim(int k) { i

代码随想录 1455

最小生成树

常用的有三种方法 相关代码,请参考《北大ACM2485 - Highways(最小生成树)》 朴素Prim算法 Prim算法思路 从任意一个顶点(它就是最后生成树的根结点)开始,首先设置和它相邻顶点的权值(指该顶点和相邻顶点已知长度最小边的长度;初始值是无穷大),然后将所有未加入生成树顶点中权值最小的顶点加入到生成树中,然后更新新加入生成树顶点相邻顶点的权值;依次执行,直到所有顶点

等等... 大雄,有啦! 1042

POJ - 1751 Highways (最小生成树 Kruskal、Prim)

                                            Highways Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has a very poor system of public highways. The Flatopian gov...

K.X的博客 1070

POJ 2485 : 最小生成树(kruskal+并查集)

Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of this problem. They're planning to build some highways so that it w

cesc 2455

图论trainning-part-1 F. Highways

F. Highways Time Limit: 1000ms Memory Limit: 10000KB 64-bit integer IO format:%lld Java class name:Main The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia ...

weixin_30439131的博客 373

北大 ACM highways问题研究(最小生成树)

#include<stdlib.h> #include<stdio.h> #include<queue> struct vertex//代表一个村庄 { int minDist;//到相邻结点的最小的距离 bool inMST;//这个村庄是否已经被走过 }; int case_num=0;//用例数 ...

deng0004的博客 187

ACM各题型OJ题目总结 POJ、ZOJ、HDU

本帖题目类型: 目录 1、递归与分治(27) 2、动态规划类问题(189题) 3、贪心算法类问题(79) 4、回溯算法(36) 5、图的搜索(98) 6、图论(85) 7、数论(117) 8、组合数学(99) 9:、分支限界算法(14) 推荐网站:https://vjudge.net/ 下面给出各题型的部分例题。 注:1.题目来源于ZOJ,POJ和HUD; ...

一定要站在自己热爱的生活里闪闪发光 4万+

[ACM_图论] Highways (变形说法的最小生成树)

http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28972#problem/C 题目给出T种情况,每种情况有n个城镇,接下来每一行是第i个城镇到所有城镇的距离(其实就是个可达矩阵)。 求建设一条公路联通所有城镇并且要求最长的一段最小(其实就是最小生成树)!代码如下: View ...

weixin_34409741的博客 153

HDUOJ Highways (最小生成树)

Highways Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 131072/65536K (Java/Other) Total Submission(s) : 18   Accepted Submission(s) : 6 Problem Description The island nation of Flatopia

君只见独不见的专栏 423

北大ACM1163 - The Triangle (枚举法&备忘录法&动态规划)

1.1.1           枚举法 该问题我使用了枚举法、备忘录法、动态规划法主要是对三种算法进行比较。 任何选择的问题,都可以通过穷举所有可能性,然后从中选择适合的项,这就是枚举法。枚举法是自顶向下,一般也会有递归公式。 设h为Triangle 的高度,v[i,j]为点(i,j)的数字值,sum[i,j]表示到从底到点(i,j)的所有路径中的最大和 运行结果 Time Limi

等等... 大雄,有啦! 2357
上一篇: C++ - 回调函数
下一篇: 说明
G机器猫
博客等级 码龄16年 106粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值