图的最大流-前置推送标签方法

解决PADs VX2.7安装中的License失效与软件卡死问题 本文详细解析了PADs VX2.7安装过程中常见的License失效与软件卡死问题,提供了从破解工具选择、环境变量设置到输入法兼容性调整等实用解决方案。特别推荐使用Siemens EDA系列新版破解工具,并分享性能调优与定期维护技巧,帮助工程师高效解决安装难题。 阅读详情

发布一个k8s部署视频:https://edu.youkuaiyun.com/course/detail/26967

课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。

腾讯课堂连接地址https://ke.qq.com/course/478827?taid=4373109931462251&tuin=ba64518

第二个视频发布  https://edu.youkuaiyun.com/course/detail/27109

腾讯课堂连接地址https://ke.qq.com/course/484107?tuin=ba64518

介绍主要的k8s资源的使用配置和命令。包括configmap,pod,service,replicaset,namespace,deployment,daemonset,ingress,pv,pvc,sc,role,rolebinding,clusterrole,clusterrolebinding,secret,serviceaccount,statefulset,job,cronjob,podDisruptionbudget,podSecurityPolicy,networkPolicy,resourceQuota,limitrange,endpoint,event,conponentstatus,node,apiservice,controllerRevision等。

第三个视频发布:https://edu.youkuaiyun.com/course/detail/27574

详细介绍helm命令,学习helm chart语法,编写helm chart。深入分析各项目源码,学习编写helm插件
————————————————------------------------------------------------------------------------------------------------------------------

 

package com.data.struct;



public class RelabelToFront {
	private Node[][]graphic;
	private Node s;
	private Node t;
	public RelabelToFront(){
		graphic=new Node[6][6];
		Node node0=new Node();
		node0.start=0;
		node0.end=0;
		graphic[0][0]=node0;
		Node node1=new Node();
		node1.start=1;
		node1.end=1;
		graphic[1][1]=node1;
		Node node2=new Node();
		node2.start=2;
		node2.end=2;
		graphic[2][2]=node2;
		Node node3=new Node();
		node3.start=3;
		node3.end=3;
		graphic[3][3]=node3;
		Node node4=new Node();
		node4.start=4;
		node4.end=4;
		graphic[4][4]=node4;
		Node node5=new Node();
		node5.start=5;
		node5.end=5;
		graphic[5][5]=node5;
		Node node01=new Node();
		node01.c=16;
		node01.start=0;
		node01.end=1;
		graphic[0][1]=node01;
		Node node10=new Node();
		node10.start=1;
		node10.end=0;
		node10.reverse=true;
		graphic[1][0]=node10;
		Node node02=new Node();
		node02.c=13;
		node02.start=0;
		node02.end=2;
		graphic[0][2]=node02;
		Node node20=new Node();
		node20.start=2;
		node20.end=0;
		node20.reverse=true;
		graphic[2][0]=node20;
		Node node13=new Node();
		node13.c=12;
		node13.start=1;
		node13.end=3;
		graphic[1][3]=node13;
		Node node31=new Node();
		node31.start=3;
		node31.end=1;
		node31.reverse=true;
		graphic[3][1]=node31;
		Node node21=new Node();
		node21.c=4;
		node21.start=2;
		node21.end=1;
		graphic[2][1]=node21;
		Node node12=new Node();
		node12.start=1;
		node12.end=2;
		node12.reverse=true;
		graphic[1][2]=node12;
		Node node24=new Node();
		node24.start=2;
		node24.end=4;
		node24.c=14;
		graphic[2][4]=node24;
		Node node42=new Node();
		node42.start=4;
		node42.end=2;
		node42.reverse=true;
		graphic[4][2]=node42;
		Node node32=new Node();
		node32.c=9;
		node32.start=3;
		node32.end=2;
		graphic[3][2]=node32;
		Node node23=new Node();
		node23.start=2;
		node23.end=3;
		node23.reverse=true;
		graphic[2][3]=node23;
		Node node35=new Node();
		node35.c=20;
		node35.start=3;
		node35.end=5;
		graphic[3][5]=node35;
		Node node53=new Node();
		node53.start=5;
		node53.end=3;
		node53.reverse=true;
		graphic[5][3]=node53;
		Node node43=new Node();
		node43.c=7;
		node43.start=4;
		node43.end=3;
		graphic[4][3]=node43;
		Node node34=new Node();
		node34.start=3;
		node34.end=4;
		node34.reverse=true;
		graphic[3][4]=node34;
		Node node45=new Node();
		node45.c=4;
		node45.start=4;
		node45.end=5;
		graphic[4][5]=node45;
		Node node54=new Node();
		node54.start=5;
		node54.end=4;
		node54.reverse=true;
		graphic[5][4]=node54;
		
		s=graphic[0][0];
		t=graphic[5][5];
	}
	
	public void relabelToFront(){
		initializePreflow();
		Node head=graphic[1][1];
		Node last=head;
		for(int i=2;i<graphic.length-1;i++){
			last.lnext=graphic[i][i];
			last=last.lnext;
		}
		for(int i=1;i<graphic.length-1;i++){
			Node lastN=graphic[i][i].N;
			for(int j=0;j<graphic.length;j++){
				if(i==j){
					continue;
				}
				if(lastN==null){
					if(graphic[i][j]!=null){
						Node node=graphic[j][j].clone();
						lastN=node;
						graphic[i][i].N=node;
					}
				}else{
					if(graphic[i][j]!=null){
						Node node=graphic[j][j].clone();
						lastN.next=node;
						lastN=lastN.next;
					}
					
				}
			}
			for(int j=0;j<graphic.length;j++){
				if(i==j){
					continue;
				}
				if(lastN==null){
					if(graphic[j][i]!=null){
						Node node=graphic[j][j].clone();
						lastN=node;
						graphic[i][i].N=node;
					}
				}else{
					if(graphic[j][i]!=null){
						Node node=graphic[j][j].clone();
						lastN.next=node;
						lastN=lastN.next;
					}
					
				}
			}
		}
		for(int i=1;i<graphic.length-1;i++){
			graphic[i][i].current=graphic[i][i].N;
		}
		Node u=head;
		Node prev=u;
		while(u!=null){
			int oldH=u.h;
			discharge(u);
			if(u.h>oldH){
				if(prev!=u){
					prev.lnext=u.lnext;
					u.lnext=head;
					head=u;
				}
			}
			prev=u;
			u=u.lnext;
		}
	}
	
	public void discharge(Node u){
		while(u.e>0){
			Node v=u.current;
			if(v==null){
				relabel(u);
				u.current=u.N;
			}else{
				Node vr=graphic[v.start][v.end];
				if(!graphic[u.start][v.start].reverse&&(graphic[u.start][v.start].c-graphic[u.start][v.start].f>0)&&u.h==vr.h+1){
					push(u,vr);
				}else if(graphic[u.start][v.start].reverse&&graphic[u.start][v.start].f>0&&u.h==vr.h+1){
					push(u,vr);
				}else{
					u.current=v.next;
				}
			}
		}
	}
	
	public void push(Node u,Node v){
		Node uv=graphic[u.start][v.start];
		Node vu=graphic[v.start][u.start];
		int delta=Integer.MAX_VALUE;
		if(!uv.reverse){
			delta=Math.min(delta, Math.min(u.e, uv.c-uv.f));
			uv.f=uv.f+delta;
			vu.f=uv.f;
		}else{
			delta=Math.min(delta, Math.min(u.e, uv.f));
			uv.f=uv.f-delta;
			vu.f=uv.f;
		}
		System.out.println("["+uv.start+","+uv.end+"]:"+delta);
		u.e=u.e-delta;
		v.e=v.e+delta;
		
	}
	public void relabel(Node u){
		int h=Integer.MAX_VALUE;
		for(int i=0;i<graphic.length;i++){
			if(u.start!=i&&graphic[u.start][i]!=null){
				if(!graphic[u.start][i].reverse){
					if(graphic[u.start][i].c-graphic[u.start][i].f>0){
						h=Math.min(h, graphic[i][i].h);
					}
				}else{
					if(graphic[i][u.start].f>0){
						h=Math.min(h, graphic[i][i].h);
					}
				}
			}
		}
		if(h==Integer.MAX_VALUE){
			return;
		}
		u.h=1+h;
		
	}
	public void initializePreflow(){
		s.h=graphic.length;
		for(int i=0;i<graphic.length;i++){
			if(i!=s.start&&graphic[s.start][i]!=null){
				graphic[s.start][i].f=graphic[s.start][i].c;
				graphic[i][s.start].f=graphic[s.start][i].c;
				graphic[i][i].e=graphic[s.start][i].c;
				s.e=s.e-graphic[s.start][i].c;
			}
		}
	}
	
	public void printE(){
		System.out.println("E:");
		for(int i=0;i<graphic.length;i++){
			for(int j=0;j<graphic.length;j++){
				if(graphic[i][j]!=null){
					System.out.print(graphic[i][j].e+" ");
				}else{
					System.out.print("  ");
				}
			}
			System.out.println();
		}
	}
	public void printF(){
		System.out.println("F:");
		for(int i=0;i<graphic.length;i++){
			for(int j=0;j<graphic.length;j++){
				if(graphic[i][j]!=null){
					System.out.print(graphic[i][j].f+" ");
				}else{
					System.out.print("  ");
				}
			}
			System.out.println();
		}
	}
	public void printH(){
		System.out.println("H:");
		for(int i=0;i<graphic.length;i++){
			for(int j=0;j<graphic.length;j++){
				if(graphic[i][j]!=null){
					System.out.print(graphic[i][j].h+" ");
				}else{
					System.out.print("  ");
				}
			}
			System.out.println();
		}
	}
	public void printResult(){
		int result=0;
		for(int i=0;i<graphic.length;i++){
			if(graphic[t.start][i]!=null){
				result+=graphic[i][t.start].f;
			}
		}
		System.out.println("max flow:"+result);
	}
	public void print(){
		for(int i=0;i<graphic.length;i++){
			for(int j=0;j<graphic.length;j++){
				if(graphic[i][j]!=null){
					System.out.print(graphic[i][j].c+" ");
				}else{
					System.out.print("  ");
				}
			}
			System.out.println();
		}
	}
	private class Node{
		private int c;
		private int f;
		private int start;
		private int end;
		private boolean reverse;
		private int e;
		private int h;
		private Node current;
		private Node next;
		private Node N;
		private Node lnext;
		public Node clone(){
			Node newNode=new Node();
			newNode.c=c;
			newNode.f=f;
			newNode.start=start;
			newNode.e=e;
			newNode.end=end;
			newNode.reverse=reverse;
			newNode.h=h;
			return newNode;
		}
	}
	public static void main(String[] args) {
		RelabelToFront r=new RelabelToFront();
		r.print();
		r.relabelToFront();
		r.printResult();

	}

}

 

【DRAM存储器一】基本存储单元、阵列结构、读写原理 详述DRAM存储器存储单元、存储阵列结构和读写原理 阅读详情

相关推荐

利用WI生成无线信道数据

选取DeepMIMO的一个射线追踪场景O1(Outdoor 1)Scenario,工作频率为3.5GHz。有两条街和一个十字路口的户外场景18个基站和超过一百万个用户18个基站(BSs):BS1-BS18.每个基站的高度是8米每个基站的天线阵列是isotropic天线三个统一的x-y用户网格用户的总计数量为:1184923每个用户网格中的第一个用户总是(x,y)坐标最低的用户 所有用户的高度是2m每个用户的每个天线阵列是isotropic天线定义射频追踪场景。

bingbingaidaima的博客 5609

求最大流的Relabel-to-Front算法

除了用各种方法在剩余网络中不断找增广路(augmenting)的Ford-Fulkerson系的算法外,还有一种求最大流的算法被称为压入与重标记(Push-Relabel)算法。它的基本操作有:压入,作用于一条边,将边的始点的预流尽可能多的压向终点;重标记,作用于一个点,将它的高度(也就是label)设为所有邻接点的高度的最小值加一。Push-Relabel系的算法普遍要比Ford-Fulke

魔神翼 2074

无人机信号干扰系统设计方案

设计定向阻塞干扰器需要结合射频(RF)技术、功率放大技术和定向天线技术,核心目标是向特定方向发射高功率噪声信号,覆盖目标频段,阻断无人机的通信或导航信号。实际设计中需平衡功率、效率、散热和便携性,同时需考虑抗干扰技术的快速演进(如无人机加密通信和AI避障)。在合法框架下,此类设备可有效应对“黑飞”威胁,但技术滥用风险需严格管控。定向阻塞干扰器的硬件设计核心在于。

wanghao312的博客 3061

算法导论 最大流 前置重贴标签法

1

苦海无涯闯进来 1486

Vivado 2018.3 SDK烧写bin文件避坑指南:如何解决QSPI模式下的常见错误

本文深入解析了在Vivado 2018.3 SDK中为Zynq FPGA烧写QSPI Flash时遇到的常见问题,特别是启动模式为QSPI时出现的警告与失败。文章从Zynq启动机制入手,提供了修改FSBL代码以强制使用JTAG模式、调整硬件配置等核心解决方案,并分享了实战案例与最佳实践,帮助开发者高效避坑,确保bin文件烧写成功。

arduino9maker的博客 390

CloudSat卫星数据高效下载与自动化处理指南

本文详细介绍了CloudSat卫星数据的高效下载与自动化处理方法,包括交互式图形界面和wget批量下载技巧,以及使用Python脚本实现自动化处理和数据质量控制。内容涵盖从数据准备到实战应用的完整流程,特别适合气象研究和气候建模领域的工作者提升工作效率。

weixin_28700411的博客 233

最大流问题预流推进算法(邻接表relabel_to_front)

改进的预流推进算法,有如下优化: 进行了预先逆序BFS分层, 利用结点链表,每次都是从高度最大的结点开始处理. 利用指向各顶点的边表结点的指针,记录已经访问到该顶点的第几条边了, 下次推进时可直接从该条边操作,不用从第一条边开始一路找过来。

QiaoRuoZhuo的专栏 1106

解决Matlab激活后License checkout failed问题的详细步骤与避坑指南

本文详细解析了Matlab激活后出现License checkout failed错误的常见原因及解决方案,重点介绍了如何正确找到并运行激活程序,避免用户名填写错误等常见问题。文章还提供了多次激活与疑难排解的实用建议,帮助用户顺利完成Matlab激活过程。

weixin_33670786的博客 582

最大流(Maximum Flow)

《算法导论》最大流学习笔记 一、流网络 G=(V,E)是一个有向图,其中每条边(u,v)有一个非负的容量值c(u,v),而且如果E中包含一条边(u,v),那么图中就不存在它的反向边。在流网络中有两个特殊的结点,源结点s和汇点t。 下面给出流网络的形式化定义。令G=(V,E)为一个流网络,其容量函数为c,设s我为网络的源点,t为汇点。G中的流是一个实值函数f,满足以下两条性质: 1. 容量限...

weixin_30104533的博客 4万+

CloudCompare点云滤波实战:三种植被去除技术的对比与应用

本文详细对比了CloudCompare中三种植被去除技术(低通滤波、CSF滤波和坡度法)的实战应用与效果。通过具体案例和参数优化建议,帮助用户根据地形特征选择最佳滤波方法,提升点云数据处理精度和效率,特别适用于复杂场景下的植被去除需求。

weixin_30689307的博客 85

YOLOv11改进 | 引入DEConv细节增强卷积模块:恢复细节信息,提升小目标检测精度

摘要: YOLOv11在目标检测中面临小目标检测精度不足的问题,主要由于细节信息丢失。本文提出引入DEConv(细节增强卷积)模块,通过多分支卷积和残差连接恢复高频细节,提升小目标检测性能。DEConv结合3×3卷积与空洞卷积增强边缘信息,并自适应融合特征,兼容YOLOv11的P3层(小目标关键层)且计算高效。实验表明,该改进在无人机航拍、显微镜图像等密集小目标场景中显著减少漏检,同时保持轻量化和实时性优势。代码实现可直接嵌入现有YOLO架构,仅需替换P3层卷积模块。

走向CTO的路上... 953

图的最大流-通用推送标签方法

package com.data.struct; public class GenericPushRelabel { private Node[][]graphic; private Node s; private Node t; public GenericPushRelabel(){ graphic=new Node[6][6]; Node node0=new Node()

mark's technic world 822

Windows 11 安装、使用 IndexTTS2

本文详细介绍了如何在 Windows 11 系统上安装与使用 B站开源的新一代文本转语音模型 IndexTTS2。内容涵盖硬件要求、Git 与 uv 工具安装、项目源码获取、依赖配置、模型下载及 WebUI 启动步骤,并说明了基础与高级使用方法。教程注重实操细节,包括环境变量设置、显存适配启动参数等,帮助用户顺利部署并体验高质量、可调控情感与节奏的 TTS 语音合成效果。

寒水馨 · 轻量级技术文档 · hanshuixin.org 5160

最大流最小割经典例题_最大流

在前面的章节我们介绍了很多关于图的无环路应用,比如最短路径、拓扑排序、关键路径等,以及如何使用拓扑排序和DFS检测图中是否有环。本节将介绍一些含环路的图应用,主要是最大流以及求网络中最大流的典型算法Ford-Fulkerson方法、Dinic算法和前置推送-标签重贴方法。很多系统中涉及流量问题,例如公路系统中车流量、网络中的数据信息流、供油管道的油流量等,往往需要求从源节点到目的节点的最大负载,如...

weixin_39875167的博客 3482

IDEA的使用指南

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

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

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

终极指南:如何快速掌握最大流算法——Ford-Fulkerson、推送-重贴标签和前置重贴标签详解

最大流算法是计算机科学和运筹学中的核心技术,广泛应用于网络优化、资源分配和路径规划等领域。本文将带你系统学习《算法导论》中三种经典的最大流算法实现:Ford-Fulkerson方法、通用推送-重贴标签算法和前置重贴标签算法,帮助你从理论到实践全面掌握这些高效算法。 ## 🌊 什么是最大流问题? 最大流问题旨在寻找从源点到汇点的最大流量,同时满足边的容量限制。想象水流通过一个由管道组成的网络,

gitblog_01159的博客 850

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【经典算法】前置重贴标签算法原理及其Python实现

本文系统介绍了解决最大流问题的前置重贴标签算法。首先阐述了流网络的基本概念,深入分析了预流、超额流和高度函数等核心原理,详细讲解了推送和重贴标签操作机制。接着提供了Python实现步骤,包括数据结构设计、核心函数实现及完整代码示例。通过物流运输网络案例验证了算法的正确性和实用性。最后从时间复杂度(O(V³))和空间复杂度(O(V+E))角度进行了性能分析,并提出了数据结构优化和算法改进等提升建议。该算法在交通规划、通信网络等领域具有广泛应用前景,特别是在大数据和复杂网络分析方面展现出巨大潜力。

大雨淅淅的博客 823

最大流学习笔记(6)-前置重贴标签算法二

上一篇   8、前置重贴标签操作算法流程:将维护一个链表$L$,该表由$V-\{s,t\}$中的所有节点构成,$L$中的节点的顺序将按照许可网络中的拓扑排序存放。$u.next$是链表$L$的下一个节点。下面是算法的伪代码:   9、 为了证明RELABEL-TO-FRONT确定计算出了一个最大流,下面将证明该算法就是GENERIC-PUSH-RELABEL的一种实现。首先,7证明了推...

weixin_34163553的博客 342

《算法导论》第 26 章 - 最大流

本文系统介绍了网络流理论中的最大流算法。首先阐述了流网络的基本概念、性质及残量网络原理,接着详细讲解了Ford-Fulkerson方法及其Edmonds-Karp实现(使用BFS寻找增广路径)。随后介绍了将二分图匹配转化为最大流问题的解法,并深入解析了推送重贴标签算法及其优化版本——前置重贴标签算法。每种算法均配有完整的C++实现代码、流程图和复杂度分析,其中Edmonds-Karp算法时间复杂度为O(VE²),推送重贴标签算法为O(V²E)。文章还包含了应用示例、思考题及算法发展历史注记,为读者提供了从理

2302_80961196的博客 758

各种网络流模板整合(EK,Dinic,推送-重贴标签,前置重贴标签)

本文不涉及讲解,仅罗列各种算法模板(都是自己写的,不一定最优,且一个算法不一定只有一种)——不定期更新 目录 Edmond-Karp()——包含邻接矩阵,邻接表,储存边三种 Dinic()——包含基础与当前弧优化两种 推送重贴标签()——一种 前置重贴标签()——一种 注:最后两种来自与《算法导论》,不一定保证最优实现,且该两种算法下界大致为,故要谨慎使用!!(以及残存容量实时更新,不...

Hardict的算法日记 866

最大流学习笔记(3)-推送重贴标签算法一

上一篇 1 预流:预流是一个$V\times V \rightarrow R$的函数$f$,该函数对于每个节点$u\in V-\{s\}$满足容量限制条件和下面的性质: $\sum_{v\in V}f(v,u)-\sum_{v\in V}f(u,v)\geq 0$ 定义$e(u)=\sum_{v\in V}f(v,u)-\sum_{v\in V}f(u,v)$为进入节点$u$的超额流...

weixin_33972649的博客 648

算法学习笔记 网络流之最大流算法

文章目录26.1 流网络1. 流网络和流2. 流的一个例子3. 使用反平行边来建模问题4. 具有多个源点和多个汇点的网络26.2 *Ford-Fulkerson* 方法1. 残存网络2. 增广路径3. 基本的 *Ford-Fulkerson* 算法 我们可通过模型化道路交通图为一个有向图、找到从一个城市到另一个城市之间的最短路径,我们也可以将一个有向图看作是一个流网络 flow network 、并使用它来回答关于物料流动方面的问题。设想一种物料从产生它的源结点、经过一个系统、流向消耗该物料的汇点这样一个过

memcpy0的博客 2763

最大流学习笔记(4)-推送重贴标签算法二

上一篇 14 设$f$是流网络G的一个预流,那么对于任意一个溢出节点$x$,在$G_{f}$中存在一条从$x$到源点$s$的简单路径。 15 在GENERIC-PUSH-RELABEL的整个过程中,任何一个$u\in V$,$u.h\leq 2|V|-1$ 16 在GENERIC-PUSH-RELABEL的整个过程中,每个节点被重贴标签次数最多为$2|V|-1$,所有重贴...

weixin_34148340的博客 274

最大流学习笔记(5)-前置重贴标签算法一

上一篇   1、许可边:设$f$是流网络G的一个预流,$h$是高度函数。对于边$(u,v)$,如果$c_{f}(u,v)&gt;0$且$h(u)=h(v)+1$,那么边$(u,v)$是一个许可边。否则是非许可边。许可网络$G_{f,h}=(V,E_{f,h})$,$E_{f,h}$是许可边的集合   2、许可网络是有向无环的。因为对于每条许可边$(u,v)$来说,$h(u)=h(v)+1$...

weixin_34054866的博客 244

算法导论 CLRS 第26章 最大流 Maximum flow C#

〇、 一、流的定义与理解 对于流网络,将流理解为从源点s发出的所有流的总和 二、Ford-Fulkerson方法 主要是通过在增广路径中增加流来得到最大流,理论依据是最大流-最小切割定理;

qq_22609521的博客 1235

算法系列笔记10(有关图的算法三—最大流与二分图)

本次主要记录流网络以及最大流的简单概念(以后可能会将最大流的实现算法补充),重点讲解用匈牙利算法来求二分图的最大匹配。 1:流网络 流网络是G(V, E)是一个有限的有向图,它的每条边(u, v) ∈E都有一个非负值实数的容量c(u, v)≥0。如果(u, v) 不属于E,我们假设c(u, v) = 0。我们区别两个顶点:一个源点s和一个汇点t.。并假定每个顶点均处于从源点到汇点的某条路

小村长技术blog 4040
上一篇: 图的最大流-通用推送标签方法
下一篇: 普通矩阵乘法-多线程算法
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值