[BZOJ]1095 捉迷藏 动态点分治(点分树)

LLM and Embedding区别 LLM(大语言模型)和 Embedding(嵌入)是自然语言处理(NLP)中的两个核心概念,它们的核心区别在于。Embedding 计算向量。 阅读详情

1095: [ZJOI2007]Hide 捉迷藏

Time Limit: 40 Sec Memory Limit: 256 MB
Submit: 4152 Solved: 1756
[Submit][Status][Discuss]
Description

  捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩
捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋
子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的
时候,所有的灯都没有被打开。每一次,孩子们只会躲藏在没有开灯的房间中,但是为了增加刺激性,孩子们会要
求打开某个房间的电灯或者关闭某个房间的电灯。为了评估某一次游戏的复杂性,Jiajia希望知道可能的最远的两
个孩子的距离(即最远的两个关灯房间的距离)。 我们将以如下形式定义每一种操作: C(hange) i 改变第i个房
间的照明状态,若原来打开,则关闭;若原来关闭,则打开。 G(ame) 开始一次游戏,查询最远的两个关灯房间的
距离。

Input

  第一行包含一个整数N,表示房间的个数,房间将被编号为1,2,3…N的整数。接下来N-1行每行两个整数a, b,
表示房间a与房间b之间有一条走廊相连。接下来一行包含一个整数Q,表示操作次数。接着Q行,每行一个操作,如
上文所示。

Output

  对于每一个操作Game,输出一个非负整数到hide.out,表示最远的两个关灯房间的距离。若只有一个房间是关
着灯的,输出0;若所有房间的灯都开着,输出-1。

Sample Input

8

1 2

2 3

3 4

3 5

3 6

6 7

6 8

7

G

C 1

G

C 2

G

C 1

G
Sample Output

4

3

3

4
HINT

对于100%的数据, N ≤100000, M ≤500000。

题解

啊总算A了这道动态点分治了, 感觉点分树这个名字好高大上的样子…
相比于原来的点分, 动态点分治是建了一棵点分树, 每个重心向它子树里下一层重心连边, 就成了一棵点分树, 感觉跟支配树的构造有点相似. 由于重心所以树高是log级别的, 所以暴力跳支配树fa.
第一次写引用了黄学长的代码…
顺便粘一下hzwer的题解.

一开始写的可并堆感觉自己快炸了…
其实这种做法不难。。。就是代码长。。。
把每次分治的重心连成一棵树,树的深度是logn,每次修改一个结点只影响它到树根的一条链
这题具体实现的时候要维护三层堆
C.每个重心存所有子树到其距离
B.每个重心存各个子树最大值,即子结点堆C的最大值
A.全局一个堆,维护答案最大值,存每个堆B的最大值和次大值之和
树上距离用rmq来求比较优越2333

代码还是很清晰的, 虽然有180行….

#include<stdio.h>
#include<queue>
#include<algorithm>
#define Boc register char
#define Acce register int
#define Prio priority_queue<int> 
using namespace std;
const int P = 22;
const int inf = 1e9 + 7;
const int maxn = 1e5 + 5;
const int dblmaxn = 2e5 + 10;
int n, num, tot, idx, sum, root, T;
char ss[2];
bool vis[maxn], sta[maxn];
int st[P][dblmaxn], lg[dblmaxn], in[maxn], h[maxn], dep[maxn], f[maxn], fa[maxn], siz[maxn], pw[P];
inline const int read()
{
    Acce x = 0;
    Boc ch = getchar();
    while (ch < '0' || ch > '9') ch = getchar();
    while (ch >= '0' && ch <= '9') x = (x << 3) + (x << 1) + ch - '0', ch = getchar();
    return x;
}
struct edge{ int nxt, v; }e[dblmaxn];
struct heap
{
    int fir, sec;
    Prio A, B;
    inline void push(int x) { A.push(x); }
    inline void erase(int x) { B.push(x); }
    inline void pop()
    {
        while(B.size() && A.top() == B.top())
            A.pop(), B.pop();
        A.pop();
    }
    inline int top()
    {
        while(B.size() && A.top() == B.top())
            A.pop(), B.pop();
        return (A.size()) ? A.top() : 0;
    }
    inline int size() { return A.size() - B.size();}
    inline int stop()
    {
        if (size() < 2) return 0;
        fir = top(); pop();
        sec = top(); push(fir);
        return sec;
    }
}A, B[maxn], C[maxn];
inline void add(int u, int v)
{
    e[++ num].v = v, e[num].nxt = h[u], h[u] = num;
    e[++ num].v = u, e[num].nxt = h[v], h[v] = num;
}
void dfs(int u, int tfa)
{
    in[u] = ++ idx;
    st[0][idx] = dep[u];
    for (int i = h[u]; i; i = e[i].nxt)
    {
        if (e[i].v == tfa) continue;
        dep[e[i].v] = dep[u] + 1;
        dfs(e[i].v, u);
        st[0][++ idx] = dep[u];
    }
}
void getrt(int u, int tfa)
{
    siz[u] = 1, f[u] = 0;
    for (int i = h[u]; i; i = e[i].nxt)
    {
        if (e[i].v == tfa || vis[e[i].v]) continue;
        getrt(e[i].v, u);
        siz[u] += siz[e[i].v];
        f[u] = max(f[u], siz[e[i].v]);
    }
    f[u] = max(f[u], sum - siz[u]);
    if (f[u] < f[root]) root = u;
}
void divi(int u, int dfa)
{
    fa[u] = dfa, vis[u] = true;
    for (int i = h[u]; i; i = e[i].nxt)
    {
        if (vis[e[i].v]) continue;
        sum = siz[e[i].v], root = 0;
        getrt(e[i].v, u), divi(root, u);
    }
}
inline int query(int u, int v)
{
    u = in[u], v = in[v];
    if (u > v) swap(u, v);
    int len = lg[v - u + 1];
    return min(st[len][u], st[len][v - pw[len] + 1]);
}
inline int dis(int u, int v)
{   return dep[u] + dep[v] - 2 * query(u, v);   }
inline void turn_off(int u)
{
    B[u].push(0);
    if (B[u].size() == 2) A.push(B[u].top());
    int v = u;
    while (fa[u])
    {

        int f = fa[u], D = dis(f, v), tmp = C[u].top();
        C[u].push(D);
        if (D > tmp)
        {
            int mx = B[f].top() + B[f].stop(), size = B[f].size();
            if (tmp) B[f].erase(tmp);
            B[f].push(D);
            int now = B[f].top() + B[f].stop();
            if (now > mx)
            {
                if (size >= 2) A.erase(mx); //means mx has contributed to A
                if (B[f].size() >= 2) A.push(now); //now
            }
        }
        u = f;
    }
}
inline void turn_on(int u)
{
    if (B[u].size() == 2) A.erase(B[u].top());
    B[u].erase(0);
    int v = u;
    while (fa[u])
    {
        int f = fa[u], D = dis(f, v), tmp = C[u].top();
        C[u].erase(D);
        if (D == tmp)
        {
            int mx = B[f].top() + B[f].stop(), size = B[f].size();
            B[f].erase(D);
            if(C[u].top()) B[f].push(C[u].top());
            int now = B[f].top() + B[f].stop();
            if(now < mx)
            {
                if(size >= 2) A.erase(mx);
                if(B[f].size() >= 2) A.push(now);
            }
        }
        u = f;
    }
}
inline void init()
{
    pw[0] = 1;
    for (int i = 1; i < P; ++ i) pw[i] = pw[i - 1] << 1;
    lg[0] = -1;
    for (int i = 1; i < dblmaxn; ++ i) lg[i] = lg[i >> 1] + 1;
}
int main()
{
    init();
    n = read();
    int u, v;
    for (Acce i = 1; i < n; ++ i)
        u = read(), v = read(), add(u, v);
    dfs(1, 0);
    for (Acce i = 1; i <= lg[idx]; ++ i)
        for (Acce j = 1; j + pw[i] - 1 <= idx; ++ j)
            st[i][j] = min(st[i - 1][j], st[i - 1][j + pw[i - 1]]);
    f[root = 0] = inf, sum = n;
    getrt(1, 0), divi(root, 0);
    for (Acce i = 1; i <= n; ++ i) C[i].push(0);
    for (Acce i = 1; i <= n; ++ i) turn_off(i), tot ++;
    T = read();
    for (Acce i = 1; i <= T; ++ i)
    {
        scanf("%s", ss);
        if (ss[0] == 'C')
        {
            int x = read();
            if (sta[x]) turn_off(x), tot ++;
            else turn_on(x), tot --;
            sta[x] ^= 1;
        }  else
        {
            if(tot <= 1) printf("%d\n", tot - 1);
            else printf("%d\n", A.top());
        }
    }
}
用VSCode搭建Vue.js开发环境及Vue.js第一个应用 阅读详情

相关推荐

保姆级教程:在瑞芯微RV1126B上部署轻量化YOLOv8,实现端侧实时目标检测

本文详细介绍了在瑞芯微RV1126B芯片上部署轻量化YOLOv8模型的完整流程,包括开发环境搭建、模型训练优化、量化转换及嵌入式部署。通过利用RV1126B的3TOPS NPU算力和AI-ISP特性,实现端侧实时目标检测,提升边缘AI应用的性能和效率。

weixin_30329623的博客 267

BZOJ1095 动态点分治(点分树)

题意: 操作1.修改一个点的颜色(黑白互换) 操作2.询问所有黑色点之间最远距离 点分树:当我们可以形如点分治一样的统计答案,即每次确定一个重心,然后计算他们子树之间的贡献和得出答案的时候 我们可以将每个区域的重心作为其所有子树的重心的父亲,构成一颗新的树,显然这棵树的深度不会超过logn 每次对于单点(边)更新的时候,只要对其所有的父亲更新,就只需要更新log个点,这样...

weixin_30486037的博客 260

Linux文件操作四剑客

① /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 yyyy-MM-dd / yy-MM-dd 格式。⑥“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数。

wuds_158的博客 1610

bzoj 1095 捉迷藏(线段树)

题外话最近课程不是很紧,准备按AC率版切bz,争取一天一道题以上。然后我喜闻乐见的发现之前剩下的题基本都是数据结构>_<。蛋疼啊。。。Description给定一棵树,每个节点要么是黑色,要么是白色,能执行两个操作:把某一个点取反色,返回距离最远的黑色点对。Solution这题看起来链分治,边分治都可做,然后搜到了小岛的题解。发现了逼格更高的做法,看了曹钦翔的《数据结构的提炼与压缩》,跪烂了。。。

mlzmlz95的专栏 982

数字IC设计避坑指南:为什么477条net的DRV问题无法修复?解析don‘t touch hierarchy的影响

本文深入解析了数字IC后端实现中,因“don't touch hierarchy”约束导致大量DRV违规(如477条net)无法自动修复的根本原因。文章以Cadence Innovus工具为例,详细阐述了DRV修复机制与设计保护约束的冲突原理,并提供了从日志定位、风险评估到分级解除约束的完整实战策略,帮助工程师有效解决此类设计收敛难题。

hope8的博客 290

IEC 60747-8 是由国际电工委员会(IEC)制定的标准,标题为《半导体器件 - 分立器件 - 第8部分:场效应晶体管》

IEC 60747-8 是由国际电工委员会(IEC)制定的标准,标题为《半导体器件 - 分立器件 - 第8部分:场效应晶体管》(Semiconductor devices - Discrete devices - Part 8: Field-effect transistors)。该标准详细规定了场效应晶体管(FETs)的测试方法,涵盖静态和动态特性测试,适用于多种类型的FET,包括结型场效应晶体管(JFETs)、绝缘栅场效应晶体管(MOSFETs,增强型和耗尽型)等。3. 标准其他部分(简要概述)

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 573

bzoj1095 线段树括号序列

题目分析首先%%% 岛姐的讲解 然后%%% hzwer的代码 最后%%% 树王的帮助 好吧,写写我的感悟。括号序列与距离首先我们对于一棵美丽的树,可以生成一个先序遍历的括号序列,左括号表示到达该店,右括号表示离开该点。例如下图这棵美丽的树,可以生成一个这样的序列:(1(2(3)(5))(4)(6(7))) 这个序列有什么用呢?两个点之间的距离,就是它们之间括号序列去掉可以匹配的括号后的括

litble的成(tui)长(fei)史 834

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战

大模型与知识图谱的融合不是简单拼接,而是认知智能的范式重构。当符号主义的精确性与连接主义的泛化能力深度交织,我们正站在通向可信AGI的关键路口。正如OpenKG技术委员会王昊奋教授所言:“2025年将是图模协同从技术探索走向规模落地的分水岭”。参考文献OpenKG 2024年度报告(同济大学王昊奋)大型语言模型与知识图谱协同研究综述(海豚实验室,2024)知识图谱与大模型结合方法概述(黄巍,2023)图模互补:知识图谱与大模型融合综述(优快云,2024)

知识靠谱的博客 1092

BZOJ 1095 Hide 捉迷藏 详解(动态点分治 堆维护)

1095: [ZJOI2007]Hide 捉迷藏Time Limit: 40 Sec Memory Limit: 256 MB Description  捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩 捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋 子都互相可达。

w4149 485

C# USB通信实现

在C#中,我们可以利用.NET框架提供的类库和API来实现与USB设备的通信。本文将介绍如何使用C#进行USB通信,并提供相应的代码示例。以上就是使用C#进行USB通信的基本过程。通过以上代码示例,你可以实现与USB设备的简单通信,具体的实现方式和细节根据你的实际需求进行调整和扩展。命名空间,该命名空间包含了与串口通信相关的类和方法。选择需要通信的USB设备,然后使用。步骤二:获取可用的USB设备列表。首先,在你的C#项目中引入。步骤三:打开USB端口。步骤六:关闭USB端口。步骤一:引入命名空间。

PixelProX的博客 4383

国科大学习资料--机器人智能控制_袁如意老师PPT后习题答案(学长精心整理)

人工神经元激活函数的作用是什么? 答:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。 人工神经网络的学习规则有哪些?各有何特征? 答:大类可以分为无监督学习算法、有监督学习算法和强化学习。其中无监督学习算法指只有输入信息,没有期望的输出信息,如Hebb学习规则,神经元连接强度的变化与两个相互连接的神经元的激活水平成正比。竞争学习法则:网络各输出单元相互竞争,最后达到只有一个最强者激活。有监督学习算法指同时提供输入信息和对应的期望输出信息,如误差学习(Delta学

无名何许人的博客 1486

【BZOJ1095】捉迷藏(动态点分治)

题面 BZOJ 题解 动态点分治板子题 假设,不考虑动态点分治 我们来想怎么打暴力: O(n)DPO(n)DP求树的最长链

小蒟蒻yyb的博客 335

Isaac Sim 入门教程(四)强化学习策略训练宇树人形机器人四足机器人示例

isaac_sim_policy_example Extension 是在 Isaac Sim 中部署 Isaac Lab 强化学习策略的一个框架和一组辅助函数。有关在 Isaac Sim 中训练和构建策略的详细信息,请访问在 Isaac Sim 中部署策略。该扩展程序默认已启用。如果被禁用,可在扩展管理器中搜索 isaacsim.robot.policy.example 重新启用。要运行下面的示例,请激活 “视窗”>“示例”>“机器人示例”,这将打开 “机器人示例 ”选项卡。

机器人控制与仿真应用 3926

BZOJ1095 [ZJOI2007]捉迷藏 动态点分治

每次修改一个点的黑白状态,询问树上最远黑点距离 拿这个题做动态点分治模板题:(%%%PoPoQQQ大爷) 点分治的过程是对树块找重心之后分成多个小树块,降低规模分别处理的过程,把链的信息收到其中“最高重心”上,从所有的重心处像分治中的不同子树索取到重心的链,就可以覆盖所有链的信息。动态点分治就像把序列分治变成线段树一样,在分治的架子上加了信息维护,实现树链信息维护与查询。 需要什么? 每个

liuguangzhe 3887

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

WINCC7.3破解文件

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

bzoj1095: [ZJOI2007]Hide 捉迷藏(动态点分治)

传送门 蒟蒻真正意义上做的第一道动态点分治! 题意:给一棵最开始所有点都是黑点的树,支持把点的颜色变成从黑/白色变成白/黑色,问当前状态树上两个最远黑点的距离。 思路: 首先考虑不带修改一次点分治怎么做的。 显然对于每个树上的节点ppp可以对它的每一个儿子vvv维护一个静态的集合BvB_vBv​表示vvv子树中所有点到ppp的距离,然后对于ppp这个点可以维护一个静态集合CpC_pCp​来记录所...

苟为蒟蒻又何妨 344

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

动态点分治

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

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

[BZOJ 1095][ZJOI2007]Hide 捉迷藏

[BZOJ 1095][ZJOI2007]Hide 捉迷藏 题意 给定一棵 \(n\) 个点的树以及 \(q\) 次操作. 操作有两种, 一种是求有效点之间的最大距离, 另一种是将一个点的有效状态反转. \(n\le 1\times 10^5,q\le 5\times 10^5\). 题解 好像老老实实写动态点分的在榜上都垫底了qaq 我们可以发现这个求两点之间最大距离非常的点分治, 为...

weixin_30252155的博客 84

BZOJ_1095_[ZJOI2007]Hide 捉迷藏_动态点分治+堆

BZOJ_1095_[ZJOI2007]Hide 捉迷藏_动态点分治+堆 Description   捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩 捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋 子都互相可达。游戏是这样进行的,孩子们负责躲藏,J...

119

[学习笔记]动态点分治

动态点分治就这么写了一天。。。 首先,动态点分治跟普通点分治几乎一模一样。所以点分治不会的可以右转模板区了。 我们发现处理树上路径不好处理,所以我们考虑点分治。但点分治带修改呢? 那动态点分治啊! 动态点分治就是建出原树的点分树,然后在点分树上暴力跳。因为点分树的高度是 \(\log n\) 的,所以一般我们会再套一个 \(\log n\) 的数据结构。 建出点分树: void getrt(int...

weixin_30675967的博客 141

[BZOJ1095][ZJOI2007]Hide 捉迷藏(动态点分治)

题目: 我是超链接 题意: 给出一棵树,树上的每个点有黑白两种状态,求树上最远两个黑点的距离。 会改变点的状态。 题解: 首先如果不是有修改的话直接就是裸的点分治了吧 首先回顾一下点分治,其实就是每次找重心,然后处理与重心相关的路径,时间复杂度的保证在于树高不会超过logn,那么对于一个点来说,最多被统计log次,如果统计是O(1),那么均摊时间复杂度是O(nlogn) 动态点分...

薇小薇 450

BZOJ1095 Hide 捉迷藏 分治

%%% http://blog.youkuaiyun.com/qq_34454069/article/details/78757007题目Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。 游戏是这样进行的,孩子们负责躲藏,Jiaj

LazyCrazyCat的博客 316

【动态点分】绿老师 解题报告

但是这些点对被原谅了,绿老师会从ai走到aj,而弗绿兹会从bi走到bj,求他们走的距离之和的最大值

Joker's blog 680

动态点分治:Bzoj1095: [ZJOI2007]Hide 捉迷藏

简介 这是我自己的一点理解,可能写的不好 点分治都学过吧。。 点分治每次找重心把树重新按重心的深度重建成了一棵新的树,称为分治树 这个树最多有log层。。。 动态点分治:记录下每个重心的上一层重心,这棵分治树就确定了 修改就暴力在分治树中向上改,反正是log的 至于为什么叫动态点分治我不知道。。。我觉得就是点分治 做题时最主要的难点不在点分治,在于维护什么和怎样维护 例

Cyhlnj 612

[BZOJ]1095 Hide捉迷藏(ZJOI2007)

  一道神题,两种神做法。 Description   捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。...

L183287669的博客 198

BZOJ1095:[ZJOI2007]Hide 捉迷藏(动态点分治)

Description   捉迷藏 Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩 捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋 子都互相可达。游戏是这样进行的,孩子们负责躲藏,Jiajia负责找,而Wind负责操纵这N个屋子的灯。在起初的 时候,所有的灯都没有被...

weixin_33775582的博客 107

BZOJ 1095 [ZJOI2007]Hide 捉迷藏

传送门 BZOJ 1095大致题意有一棵树,每个点是黑色或者白色,最开始全是黑点,有两种操作。 1 Get : 输出最远两个黑点之间的距离。 2 Change(x): 改变x号点的颜色。动态点分治大法好,具体解法如下。1. 构建 重心树按照静态点分治的方法,记录每一个重心xx的上一层重心··par(x)par(x) ,显然会形成一棵树高为log(n)log(n) 级别的树。 对于一个重

INCINCIBLE的博客 734
上一篇: [BZOJ]1086 王室联邦 树分块
下一篇: [BZOJ]3674 可持久化并查集
MaxMercer
博客等级 码龄10年 55粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值