【poj2828】无键跳表

【AI方案集】AI智能体全自动跨境电商运营系统设计.docx 这套AI技术方案不走“先堆概念再硬套场景”的老路,而是以业务痛点为锚点,把机器视觉识别、预测性分析、大模型知识赋能等能力拆解成轻量化可落地的功能模块,直接嵌入生产运营的关键环节,既能快速落地见效,又能通过持续的数据迭代逐步放大价值,帮企业在不盲目新增硬件投入的前提下,稳步完成智能化升级,实实在在把AI变成能降本、提效、控风险的生产工具。 立即下载

这个题很多人用线段树过了。那个做法我看了,是很好的,可惜是个离线。而有的时候我们需要在线。比方说,把题面改改,倘若再给你个n倍时间,让你每插入一个人就把整个表输出一遍,你再倒过来还能做吗?那就很难了对吧。

所以我觉得这个题吧,其实正解是个跳表。

1.

首先我们不考虑跳表,考虑二叉搜索树。

如果这个题用二叉搜索树,怎么做呢?

考虑一下啊。

首先很容易知道每个人名字和点的键值key是没关系的对吧。

那么人的名字就只能作为value了对吧。

那我们需要个key。

那么,key要保证什么条件呢?

很明显每次插进去一个点q,插在b点的位置上,而a是b点前的点。

那么插入前:

a->b

插入后:

a->q->b

对吧。

那么就要求q.key>a.key , q.key<b.key

能够想到的一个很简单的办法就是q.key = (a.key+b.key)/2

那么问题解决了:

我们首先给队首加个虚点key=0,给队尾加个虚点key = DOUBLE_MAX;

然后每次查询找到要插入的位置(二叉搜索树以key的大小二叉)上的点b,然后找他的前面的点a,然后你就知道了q的key,value赋进去,然后插进去就行了。

所以本题就这么结束了。。。才没有!

我们稍稍动动脑筋想想就知道,double最大值才1e300多点,你这边倒好一下子弄了个2e5的插入,那么我们需要(最糟糕的情况)分割成 2^(2e5) 段,很明显每一段的间隔是小数点后很多很多位,这种情况下我们比较double的大小真的可以做到吗?很明显不行对不对!

好了,问题来了,现在我们来解决它。

用key判断不是精度不够吗?我们不用key不就好了!

——解决个毛啊,二叉搜索树没有key还搜个屁。。。

这就是为什么这个题要用跳表。

因为,跳表是可以没有key的。

= =当然了有key的跳表会更加好写就是了。

2.

Q:什么是跳表

A:网上很多教程了,都挺不错的,再写就浪费资源了。

Q:跳表有什么用

A:二叉搜索树能做的都能做。

Q:那么比二叉搜索树好在哪?

A:好在它不用key的大小来指定节点的先后关系,而是多条重叠的链表一样,指针指定先后顺序的。这样就可以搞不方便建key的题。

而且,多线程的时候似乎比二叉搜索树性能好。(只是听过有这么个说法,然而我并没有验证过)

Q:那么比二叉搜索树差在哪?

A:如果可以建key:需要花费n*logn的空间。

如果不可以建key:需要花费2*n*logn的空间。

空间复杂度不优。


3.如何从有key的跳表转化为无key的跳表。

有key跳表你们随便去找个人博客看看就行了,那个讲的人很多的,

http://www.cppblog.com/mysileng/archive/2013/04/06/199159.html

我的跳表是用这份改的,并没有刻意抹痕迹所以大家还是可以知道哪里对应哪里的

有key跳表的节点:

struct node {
	int key;
	int value;
	node *next[MAX_LEVEL];
};

其中,next指向的就是每层的下一个节点

无key跳表的节点:

struct node {
	int value;
	node *next[MAX_LEVEL];
	int seg[MAX_LEVEL];
};
可以注意到我们去掉了一个key,而新增了一个seg数组。

seg[i]记录的是this到next[i]之间的距离值

这个题只有一个插入操作对吧。

大体的思路是,插入的时候,除了update数组以外,我们还要记录一个updateseg数组,用来记录当前update[i]的key。

这个key并不是记录在节点里的,而是从表头往后,一个一个seg[i]加上去的。

就是说,每次遍历到这个点的时候,用路径上的一个个seg来加出来当前的key,然后存进数组。

然后根据两个数组判断一下,做个插入操作就行了。

思路很简单。

具体可以看我代码= =

代码写的很丑见谅啊。

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<cstdlib>

//#include<algorithm>
//#include<map>
//#include<deque>
//#include<vector>
//#include<set>
//#include<bits/stdc++.h>
//#include<tr1/unordered_map>

using namespace std;

#define MAXN 200008
#define MAX_LEVEL 17

//节点
struct node {
	int value;
	node *next[MAX_LEVEL];
	int seg[MAX_LEVEL];

	node() {
		value = 0;
		for (int i = 0; i < MAX_LEVEL; i++) {
			next[i] = NULL;
			seg[i] = 0;
		}
	}
};

node nodes[MAXN];
int nodecnt;

//创建节点
node* createNode(int level, int value) {
	nodes[nodecnt] = node();
	nodes[nodecnt].value = value;
	nodecnt++;
	return nodes + (nodecnt - 1);
}

//随机产生层数
int randomLevel() {
	int k = 1;
	while (rand() % 2)
		k++;
	k = (k < MAX_LEVEL) ? k : MAX_LEVEL - 1;
	return k;
}

//跳表
struct skiplist {
	int level;
	int size;
	node *header;

	skiplist() {
		level = 0;
		size = 0;
		header = NULL;
	}

	//初始化跳表
	void init() {
		level = 0;
		size = 0;
		header = NULL;
		nodecnt = 0;
		header = createNode(0, 0);
	}

	//插入节点(把所有后面的节点后移一个)
	int insertNode(int key, int value) {

		node *update[MAX_LEVEL];
		for (int i = 0; i < MAX_LEVEL; i++) {
			update[i] = header;
		}
		int updateseg[MAX_LEVEL];
		for (int i = 0; i < MAX_LEVEL; i++) {
			updateseg[i] = 0;
		}

		node *p, *q;
		q = NULL;
		p = header;
		int k = level;
		//从最高层往下查找需要插入的位置
		//填充update

		int nowkey = 0;
		for (int i = level - 1; i >= 0; i--) {
			while (((q = p->next[i]) != NULL) && (nowkey + p->seg[i] < key)) {
				nowkey += p->seg[i];
				p = q;
			}
			updateseg[i] = nowkey;
			update[i] = p;
		}

//		if (q != NULL && q->key == key) {
//			return;
//		}

		//产生一个随机层数K
		//新建一个待插入节点q
		//一层一层插入
		k = randomLevel();
		//更新跳表的level
		if (k > level) {
			for (int i = level; i < k; i++) {
				updateseg[i] = -1;
			}
			level = k;
		}

		q = createNode(k, value);
		//逐层更新节点的指针,和普通列表插入一样
		for (int i = 0; i < k; i++) {

			node* u = update[i];
			if (updateseg[i] == -1) {
				//printf("IMHERE!!!\N");
				header->seg[i] = key;
				header->next[i] = q;
			} else {
				if (updateseg[i] + u->seg[i] == key) {
					node* a = u;
					u = u->next[i];
					q->seg[i] = 1;
					q->next[i] = u;
					a->next[i] = q;
				} else {
					if (update[i]->next[i] != NULL) {
						node* b = u->next[i];
						q->next[i] = b;
						q->seg[i] = u->seg[i] - (key - updateseg[i]) + 1;
						u->next[i] = q;
						u->seg[i] = key - updateseg[i];
						//
						//q->seg[i] = update[i]->seg[i];
					} else {
						u->next[i] = q;
						u->seg[i] = key - updateseg[i];
					}
				}
			}
//
		}
		for (int i = k; i < level; i++) {
			node* u = update[i];
			if (u->next[i] != NULL) {
				u->seg[i]++;
			}
		}
		size++;
		return 1;
	}

	void print() {
		node *p, *q;
		p = header;
		q = NULL;
		int k = level;
		int flag0 = 0;

		//for (int i = k - 1; i >= 0; i--) {
		while ((q = p->next[0]) != NULL) {
			if (flag0)
				printf(" ");
			else
				flag0 = 1;

			printf("%d", q->value);
			p = q;
		}
		//}
		printf("\n");
	}

	void test_print() {
		//从最高层开始打印
		node *p, *q = NULL;
		//从最高层开始搜
		int k = level;
		for (int i = k - 1; i >= 0; i--) {
			p = header;
			while ((q = p->next[i]) != NULL) {
				printf("%d -> ", q->value);
				p = q;
			}
			printf("\n");
		}
		printf("\n");
	}

	void ppp() {
		for (int i = 0; i < 10; i++) {
			for (int j = 0; j < MAX_LEVEL; j++) {
				printf("%d  ", nodes[i].next[j] - nodes);
			}
			printf("\n");
			for (int j = 0; j < MAX_LEVEL; j++) {
				printf("%d  ", nodes[i].seg[j]);

			}
			printf("\n");
			printf("\n");
		}
	}
};

skiplist SL;
int n;

int main() {
	while (scanf("%d", &n) != EOF) {
		//scanf("%d", &n);
		SL.init();
		int l, r;
		for (int i = 0; i < n; i++) {
			scanf("%d", &l);
			scanf("%d", &r);
			SL.insertNode(l + 1, r);
		}
		SL.print();
		//SL.ppp();
	}
	return 0;
}







产业园区运营负责人如何实现创新资源的系统化配置?.docx 产业园区运营负责人如何实现创新资源的系统化配置? 立即下载

相关推荐

高校技术转移办公室人员需要哪些材料完成成果转化项目审核?.docx

高校技术转移办公室人员需要哪些材料完成成果转化项目审核?

poj 2828 块状链表 OR 线段树 OR 树状数组

这个题是真正可以体现出块状链表的优点。数组定位快但是插入慢,而链表插入快却定位慢。块状链表正是结合了数组和链表的优点将定位和插入的复杂度变成了sqrt(n)。 块状链表: 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std;...

weixin_30664051的博客 185

科技中介服务机构如何降低服务门槛、提升客户粘性?.docx

科技中介服务机构如何降低服务门槛、提升客户粘性?

POJ#2828-Buy Tickets-[线段树][块状链表][STL][错题]

  ACM的线段树复习已经接近尾声,这道题就作为此轮线段树复习的最后一道吧。 题目链接 题目大意   插队问题。每次给出一个位置pos和一个编号val。表示编号为val的人想要插队到第pos个人的后面,默认第0位为售票亭。输出所有插队操作结束后的队列顺序。 数据范围   插队操作 n&amp;amp;amp;amp;lt;=200000,编号 val&amp;amp;amp;amp;lt;=32767。其中第i个请求插队的人的pos值∈[0,i)。有多组数据。...

pwxiaolongren的博客 354

数字政府AI知识库平台规划方案(技术方案版).pptx

数字政府AI知识库平台规划方案(技术方案版).pptx

高校技术转移办公室人员如何更高效地进行成果推介书制作?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

数据结构--跳表SkipList

对单链表查找一个元素的时间复杂度是 O(n) 通过对链表建立多级索引的结构,就是跳表,查找任意数据、插入数据、删除数据的时间复杂度均为 O(log n) 前提:建立了索引,用空间换时间的思路 (每两个节点建立一个索引)索引节点总和 n/2+n/4+n/8+…+8+4+2 = n-2,空间复杂度 O(n) 插入和删除后,动态更新索引,避免局部链表元素过多或者过少,退化成单链表 ...

Michael是个半路程序员 1148

状态估计【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)

【状态估计】【扩展卡尔曼滤波算法的神经网络训练】BP神经网络、扩展卡尔曼滤波EKF+BP、粒子滤波PF轨迹估计研究(Matlab代码实现)内容概要:本文主要介绍了基于变频控制的多相交错LLC谐振变换器闭环仿真研究,重点探讨了多相交错并联技术在降低输出电流纹波和提升功率容量方面的优势,分析了交错角对纹波抵消的影响以及均流问题的成因。针对变频控制带来的非线性特性,文章采用扩展描述函数(EDF)建立小信号模型,用于指导PID控制器的设计,并验证其在稳态和动态工况下的控制性能。通过Simulink仿真平台对闭环系统进行建模与测试,考察了启动过程、负载阶跃响应及频率调节的平滑性,结果表明所设计的控制系统具有良好的稳态精度和动态响应能力。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生及从事电源系统研发的工程技术人员。; 使用场景及目标:①掌握多相交错LLC谐振变换器的工作原理与建模方法;②学习变频控制下非线性系统的建模与PID环路设计技巧;③应用于高效率、低纹波开关电源的仿真设计与优化。; 阅读建议:建议结合文中提供的仿真模型与参数设置进行实践操作,重点关注EDF建模过程与控制器参数整定方法,通过对比不同交错角下的仿真结果加深对纹波抑制机理的理解。

POJ 2828 解题报告

这道题是道巧妙的线段树(segmentTree)的问题。不是很容易想到。 最普通的方法是模拟过程,但是需要数组或链表的操作,时间应该是O(N^2)的,对于多组N=200000的数据,应该是无法通过的(没有尝试过)。 然后,如果想到,对最后一个人来说,他想在什么位置,比如2,那么他就可以在这个位置,因为前面的人都需要给他让路。依次类推,对于倒数第二个人,他也有很大的自由度,除非最后一个人已经将这

thestoryofsnow的专栏 516

论文复现基于物理信息神经网络预测2D3D非稳态温度场及热源(Python代码实现)

内容概要:本文详细介绍了基于物理信息神经网络(PINN)预测2D和3D非稳态温度场及热源的Python代码实现,旨在复现相关科研论文。该方法将物理定律嵌入神经网络结构中,利用偏微分方程描述传热过程,在无需大量标注数据的前提下,求解复杂的非稳态传热问题,实现对温度场时空演化和内部热源分布的高精度预测。文中系统阐述了PINN的模型构建原理、损失函数设计策略(包含初始条件、边界条件与控制方程的物理约束)、网络训练流程以及数值实验结果,充分展示了其在科学计算与工程仿真中的强大潜力与良好泛化能力。; 适合人群:具备一定Python编程基础和深度学习理论知识,熟悉偏微分方程与传热学基本概念,对科学计算、物理信息建模、智能仿真等方向感兴趣的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于复现并深入理解PINN在非稳态热传导问题中的具体应用;②为从事热管理、材料科学、能源系统、航空航天等领域的研究人员提供可扩展、可定制的开源代码框架;③辅助高校教学与科研实践,帮助学生掌握物理信息驱动的机器学习建模方法及其在实际工程问题中的实现路径。; 阅读建议:建议读者结合文中提供的完整代码与详细注释,使用主流深度学习框架(如TensorFlow或PyTorch)进行动手实践,重点理解物理约束如何通过损失项融入网络训练过程,并尝试在不同几何构型、边界条件或热源形式下进行模型验证,以深入掌握PINN的设计思想与泛化机制。

无源项一维波动问题的PINN的Python torch实现

内容概要:本文详细介绍了无源项一维波动问题的物理信息神经网络(PINN)的Python实现方法,基于PyTorch框架构建神经网络模型,将波动方程作为物理约束嵌入损失函数中,实现对偏微分方程的无网格数值求解。文中系统阐述了PINN的核心原理、网络结构设计、初始与边界条件的处理策略,以及利用自动微分技术高效计算高阶偏导数的方法。该方法摆脱了传统数值方法对网格划分的依赖,能够以端到端的方式逼近复杂物理问题的解,展现出在科学计算与工程仿真领域的强大潜力,尤其适用于高维或多物理场耦合问题的智能求解。; 适合人群:具备深度学习基础、偏微分方程知识及Python编程能力的研究生、科研人员,以及从事科学计算、工程仿真与人工智能交叉领域研究的专业技术人员。; 使用场景及目标:①掌握物理信息神经网络(PINN)求解偏微分方程的理论与实现流程;②完成无源项一维波动方程的神经网络建模、训练与结果可视化;③将该方法迁移应用于热传导、流体力学、电磁场等其他物理系统的建模与仿真研究; 其他说明:代码实现强调物理定律与数据驱动的深度融合,建议读者在学习过程中结合PyTorch框架特性与微分方程理论,通过调整网络层数、激活函数、损失权重和优化器参数等方式,探究不同配置对模型收敛速度与求解精度的影响,以深化对PINN工作机制的理解。

POJ有趣的跳跃

1.题目描述: 总时间限制: 1000ms 内存限制: 65536kB 描述 一个长度为n(n&gt;0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。例如,1 4 2 3存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。你需要写一个程序判定给定序列是否存在“有趣的跳跃”。 输入 一行,第一个数是...

ly's Blog 4447

工业流水线上玻璃瓶内异物检测数据集VOC+YOLO格式915张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

POJ 2828(卡时线段树)

本题乍一看链表,实际上肯定超时%…… 故用线段树 LogN查找…… Program P2828; const maxn=200000; var n,i,j:longint; pos,val:array[1..maxn] of longint; sum:array[1..maxn*10] of longint; ans:array[1..maxn] of long...

爱.NET 189

【网络性能测试】基于Iperf工具的Linux服务器带宽检测:TCP/UDP上下行速率与多并发稳定性评估方案

涵盖TCP和UDP协议下的上传与下载带宽、多并发连接支持以及长时间稳定性测试。详细说明了Iperf的安装步骤(包括内容概要:服务端CentOS系统本文介绍了如何和客户端Windows系统的使用Iperf工具部署)、基本命令对Linux服务器带用法及关键宽进行全方位测试参数解析,并提供了多种实际测试场景的命令,涵盖TCP和UDP协议下的上传示例,如指定端口、带与下载带宽、宽、时间、多并发连接支持能力以及网络稳定性测试。线程数等,帮助用户全面详细说明了Iperf的安装步骤评估网络服务质量。此外(包括服务端Cent,还列出了常用OS系统和客户端参数及其功能,便于Windows系统的部署)、基本灵活配置测试环境命令格式及常用。; 适合参数含义,并通过人群:具备一定具体命令示例演示Linux系统操作基础和网络了不同场景下的测试方法,如指定知识,从事运维、端口、带网络测试或系统宽、测试时管理相关工作的技术人员长、并发线,尤其是需要对程数等,服务器带宽性能帮助用户全面评估网络进行评估的专业人员。; 使用性能表现。;场景及目标: 适合人群:具备①测试服务器在基础网络知识和高负载下的最大吞Linux操作能力的运维吐能力;人员、网络工程师②验证网络链或开发人员,路是否存在丢包或尤其适用于需要对波动;③服务器网络性能进行评估多并发连接对调优或故障排查的技术人员。带宽的影响;; 使用场景及④进行长时间运行目标:①测试的稳定性监测,服务器在高负载下的最大吞吐能力确保生产环境网络可靠;②评估。; 阅读建议:建议读者TCP/UDP传输结合文档中的命令实例,在真实环境中搭建性能差异;③验证多线程并发连接对带测试场景,逐步实践宽的影响;④各项参数组合,长时间运行测试以重点关注测试结果中的判断网络稳定性;⑤带宽数值、丢包率和延迟变化诊断丢包、,从而深入理解网络延迟等问题。; 阅读建议:建议性能瓶颈所在,并在实际环境中搭建优化网络架构。测试环境,结合文档中的命令示例逐步实践,重点关注参数组合对测试结果的影响,并利用日志记录和分析功能提升测试准确性。

智慧交通高速公路城市道路路面抛洒物散落货物障碍物检测数据集VOC+YOLO格式4521张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

跳跃表基础——POJ 3481 Double Queue

跳跃表基础——POJ 3481 Double Queue

大田二十 860

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

内容概要:本文详细阐述了全桥LLC谐振变换器在变频与移相混合控制策略下的闭环仿真模型构建与实现过程,重点聚焦于其在Simulink环境中的系统建模与先进控制方法设计。文章首先深入剖析了LLC谐振变换器的工作原理,突出其在高频、高效率电源转换应用中的显著优势。针对宽范围输入电压带来的挑战,提出了一种融合变频控制与移相控制的混合调制策略,以实现高效、稳定的输出电压调节。通过建立精确的数学模型,设计了包含电压外环与电流内环的双闭环控制系统,有效提升了系统的动态响应速度和稳态精度,并显著降低了输出电压纹波。研究利用Simulink平台完成了完整的系统仿真验证,并深入探讨了关键电路与控制参数对整体系统性能的影响,为实际工程应用中的设计优化提供了坚实的理论依据和技术支撑。; 适合人群:具备一定电力电子技术基础,熟悉Simulink仿真工具,从事电源变换器设计与研究的研发人员。; 使用场景及目标:①掌握全桥LLC谐振变换器在变频与移相混合控制下的工作机理;②学习如何在Simulink中构建复杂的电力电子系统仿真模型;③了解并应用双闭环控制策略提高变换器性能; 阅读建议:建议读者结合文中提供的仿真模型与参数设置,动手实践以加深理解,同时关注控制策略的实际效果与理论分析之间的差异,不断优化模型参数以达到最佳性能。

XenoAmess
博客等级 码龄10年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值