吉首大学2019年程序设计竞赛(重现赛)

68 篇文章 0 订阅
39 篇文章 0 订阅

题目链接:https://ac.nowcoder.com/acm/contest/992#question

链接:https://ac.nowcoder.com/acm/contest/992/A
来源:牛客网
 

A、SARS病毒

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶、腺嘧啶均是成对出现的。这虽然是一个重大发现,但还不是该病毒的最主要特征,因为这个特征实在太弱了。

为了进一步搞清楚该病毒的特征,CN 疾病控制中心和阿里巴巴集团合作,用科技的力量和程序的思维来解决这个难题。现阿里巴巴特委派你成为 CN 疾病控制中心的 SARS 高级研究员,去研究在这个特征下,可能成为 SARS 病毒的 DNA 序列的个数。更精确地说,你需要统计所有满足下列条件的长度为 n 的字符串的个数:

  1. 字符串仅由 A、T、C、G 组成
  2. A 出现偶数次(也可以不出现)
  3. C 出现偶数次(也可以不出现)

当 n=2 时,所有满足条件的字符串有如下 6个:

TT,TG,GT,GG,AA,CC。

注: 由于这个数可能非常庞大,你只需给出对 10^9+7 取模的结果即可。

输入描述:

 
多组输入(不超过10组),每行一个整数n:0 < n < 1010510105

 

输出描述:

对于输入文件中的每一个 n,输出满足条件的字符串的个数对 10^9 +7 取模的结果。

打表后,发现规律是4^n-1+2^n-1,逆元搞一下就行了,a^p%mod = a^(p%(mod-1))%mod

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 100100;
ll ksm(ll a, ll b) {
	ll res = 1;
	while(b) {
		if(b & 1) res = res * a % mod;
		b >>= 1;
		a = a * a % mod;
	}
	return res;
}
char s[N];
int main()
{
    while(~scanf("%s",s)) {
        int len = strlen(s);
        ll ans = 0;
        for(int i = 0; i < len; i++) {
			ans = (ans * 10 % (mod - 1) + s[i] - '0') % (mod - 1);
        }
        ans = (ans + mod - 2) % (mod - 1);
        printf("%lld\n",(ksm(2, ans) + ksm(4 , ans)) % mod);
    }
    return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/B
来源:牛客网
 

干物妹小埋

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

在之前很火的一个动漫《干物妹小埋》中,大家对小埋打游戏喝可乐的印象十分的深刻。

现在欧尼酱将小埋的快乐水全部分开藏在了家具的顶端。

小埋使出空中1080°转身接战术翻滚跳到任一家具上,她相信,只要她翻滚的足够快,欧尼酱就跟不上她。

 

1.为获取梦幻开局,小埋一套技能可以使她一开始掉落在任一家具上。

2.小埋家的家具按顺序给出,每个家具可跳可不跳,为避开欧尼酱的追击,小埋翻滚到某个家具上面后,只能向前继续翻滚。

3.启动超重力感应系统的小埋不会从较高的家具翻滚到较低的家具上。

4.由于每个家具上的快乐水都有对应的happy值,IQ==250的小埋会选择一条happy值总和最大的路线。

那么,最终小埋将获得的happy值总和是多少呢?

输入描述:

第一行一个整数n(0<n<=200000),表示小埋家的家具数。

第二行n个整数,对于每个整数ai, 0<=ai<=10^9,表示第i个家具的高度。

第三行n个整数,对于每个整数vi, 0<=vi<=10^9,表示第i个家具上的快乐水的happy值。

输出描述:

一个整数,表示小埋获得的happy值总和。

示例1

输入

复制

6
2 1 1 3 3 4
3 1 1 1 1 1

输出

复制

6

说明

路线:2->3->3->4

答案:3+1+1+1

对高度离散化,线段树维护下之前每个高度下的最大价值即可。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 200100;
#define PI acos(-1)
int n;
int a[N], val[N], b[N], len;
struct node {
	int l , r;
	ll val;
}tree[N << 2];
void build(int l, int r, int cur) {
	tree[cur].l = l;
	tree[cur].r = r;
	tree[cur].val = 0;
	if(l == r) return;
	int mid = (r + l) >> 1;
	build(l, mid , cur << 1);
	build(mid + 1, r, cur << 1 | 1);
}
void update(int pos, int cur, ll val) {
	if(tree[cur].l == tree[cur].r) {
		tree[cur].val = max(tree[cur].val, 1LL * val);
		return;
	}
	if(pos <= tree[cur << 1].r) update(pos, cur << 1, val);
	else update(pos, cur << 1 | 1, val);
	tree[cur].val = max(tree[cur << 1].val, tree[cur << 1 | 1].val);
}
ll query(int pl, int pr, int cur) {
	if(pl <= tree[cur].l && tree[cur].r <= pr) {
		return tree[cur].val;
	}
	ll res = 0;
	if(pl <= tree[cur << 1].r) res = max(res, query(pl, pr, cur << 1));
	if(pr >= tree[cur << 1 | 1].l) res = max(res, query(pl, pr, cur << 1 | 1));
	return res;
}
int main() {
	while(~scanf("%d", &n)) {
		for(int i = 1; i <= n; i++) scanf("%d", &a[i]), b[i] = a[i];
	    for(int i = 1; i <= n; i++) scanf("%d", &val[i]);
		sort(b + 1, b + 1 + n);
		len = unique(b + 1, b + 1 + n) - (b + 1);
		build(1, len, 1);
	//	cout << len << endl;
		ll ans = 0, cnt;
		int pos;
		for(int i = 1; i <= n; i++) {
			pos = lower_bound(b + 1, b + 1 + len, a[i]) - b;
			cnt = query(1, pos, 1) + val[i];
			ans = max(ans, cnt);
			update(pos, 1, cnt);
		}
		printf("%lld\n", ans);
	}
    
    return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/E
来源:牛客网
 

多喝嘤料

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

卖嘤料~~~卖嘤料~~~

3个空瓶换一瓶。

4个瓶盖换一瓶。

问已购买n瓶嘤料的QAQ能喝到多少瓶嘤料?

输入描述:

第一行一个正整数T(0<T<=100)

随后T行,每行一个整数n(0<=n<=1000000)

输出描述:

T行,每行一个整数表示结果。

示例1

输入

复制

3
1
2
10

输出

复制

1
2
22

模拟一下即可

#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
int n;
int main() {
	int T;
	cin >> T;
	
	while(T -- ) {
		scanf("%d", &n);
		long long ans = n;
		int a = n, b = n, t;
		while(a >= 3 || b >= 4) {
			t = a / 3 + b / 4;
			a = a % 3;
			b = b % 4;
			ans += t;
			a += t;
			b += t;
		}
		cout << ans << endl;
	}
	return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/F
来源:牛客网
 

天花乱坠

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

某年某月某日,琪仔get到了一款十分精美的天花板图案的设计图纸。

图案的框架最初是一个正n边形,之后以它的n条边的中点为顶点构成一个新的正n变形。如此重复多次后,就能得到天花板图案的框架了。

不要问重复多少次,问就是无限重复。。。

给定n,求生成的图案的框架所有边的长度总和(最初正n边形每条边的边长均为100)。

输入描述:

多组测试(不多于100组),每组一行一个整数n( 2 < n <= 100),表示正多边形的边数。

输出描述:

对于每组测试,输出一行一个结果,四舍五入保留两位小数。(请用较为简洁的计算方式,以减少误差)

示例1

输入

复制

3
4
50

输出

复制

600.00
1365.69
2533863.09

等比数列求和,先根据长度把比值k求出来,k^n默认为0

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod = 1e9 + 7;
const int N = 100100;
#define PI acos(-1)
int n;
int main()
{
    while(~scanf("%d", &n)) {
        double ans = 0, k;
        double JI = 1.0 * (n - 2) * PI / n;
        k = sqrt(50 * 50 + 50 * 50 - 2 * 50 * 50 * cos(JI)) / 100;
		ans = n * 100  / (1 - k);
		printf("%.2f\n", ans);
    }
    return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/G
来源:牛客网
 

说能过那是假的

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

这道题你只需要呆萌呆萌的把下面的代码交上去就行了,我书读的多,不会骗你的,我发4。

#include<stdio.h>
#include<string.h>
int main()
{
    char ch[100007];
    int len,ans=0;
    scanf("%s",ch);
    len=strlen(ch);
    for(int i=0;i<len;i++)
    for(int j=i+1;j<len;j++)
        for(int k=j+1;k<len;k++)
            if(ch[i]=='O'&&ch[j]=='R'&&ch[k]=='Z')
                ans++;
    printf("%d\n",ans);
}

 

输入描述:

输入一行一个仅包含'O','R'和'Z'三种字符的字符串s。( 0 < |s| <= 100000 )

输出描述:

一行一个整数表示代码中ans的值。

枚举R,左O*右Z加和

#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
char s[N];
int main() {
	scanf("%s", s);
	int len = strlen(s);
	int O = 0, Z = 0;
	for(int i = 0; i < len; i++)
		if(s[i] == 'Z')
			Z++;
	long long ans = 0;
	for(int i = 0 ; i < len ; i++) {
		if(s[i] == 'Z') Z--;
		else if(s[i] == 'O') O++;
		else ans += (long long)Z * O;
	}
	printf("%lld\n", ans);
	return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/H
来源:牛客网
 

蛇皮走位

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

邪恶的红红星球为攻占蓝蓝星球,派出满载氢弹的敢死星际队去轰炸蓝蓝星球。

但是蓝蓝星球的光速炮弹能在发射后的瞬间击毁星际队。

于是,红红星球在星际队的八万里半径内凝聚浓厚的大气缓冲层来减速炮弹,使得星际队能够有着一定的反应时间,利用蛇皮走位躲开光速炮弹的轰击。

本题要求你模拟星际队的行进轨迹,以边长2n+1的矩形为战略地图,从左上角出发以反'S'形蛇皮走位抵达右下角,输出用26个小写字母循环表示。

输入描述:

多组输入(不多于10组),每行一个整数n(0 <= n <= 100)。

输出描述:

对于每组数据,输出一个(2n+1)*(2n+1)的字母矩阵。

示例1

输入

复制

1
2
3

输出

复制

abc
fed
ghi
abcde
jihgf
klmno
tsrqp
uvwxy
abcdefg
nmlkjih
opqrstu
bazyxwv
cdefghi
ponmlkj
qrstuvw

模拟

#include <bits/stdc++.h>
using namespace std;
const int N = 100100;
char s[310][310];
int n;
int main() {
	while(~scanf("%d", &n)) {
		n = n * 2 + 1;
		int cnt = 0;
		for(int i = 1; i < n; i += 2) {
			for(int j = 1 ; j <= n; j ++)
				s[i][j]=(cnt++)%26+'a';
			
			for(int j = n ; j >= 1; j --)
				s[i + 1][j]=(cnt++)%26+'a';
		}
		for(int i = 1; i <= n; i++)
			s[n][i]=(cnt++)%26+'a';
		for(int i = 1; i <= n; i++)
		{
			for(int j = 1; j <= n; j++)
				printf("%c", s[i][j]);
			printf("\n");
		}
	}
	return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/I
来源:牛客网
 

滑稽树上滑稽果

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

n个不同的滑稽果中,每个滑稽果可取可不取,从所有方案数中选取一种,求选取的方案中滑稽果个数不超过m的概率。(对109+7取模)

输入描述:

第一行一个正整数T( T <= 10^5 )

随后T行每行两个整数n,m ( 0 < m <= n <= 10^5 )

输出描述:

T行,每行一个整数表示答案。

示例1

输入

复制

2
5 2
5 1

输出

复制

500000004
687500005

莫队+逆元求组合数

另(n, m)为所求值

转移:

1、 (n, m) + C(n, m+1) = (n, m+1)

2、因为C(n, m) = C(n-1,m)+C(n-1,m-1)

所以(n-1, m) * 2 - C(n-1,m)=C(n,m)

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
const int mod = 1e9 + 7;
int CM;
struct node {
	int l,r;
	int id;
	bool operator <(const node &b)const{
		if(l/CM != b.l/CM) return l/CM<b.l/CM;
		else return r<b.r;
	}
}q[N];
ll ans[N];
ll f[N],inv[N],er[N],erinv[N];
ll ksm(ll x, ll y){
	ll res=1;
	while(y){
		if(y&1)res=res*x%mod;
		y>>=1;
		x=x*x%mod;
	}
	return res;
}
ll C(ll n, ll m) {
	if(m>n)return 0;
	return f[n]*inv[m]%mod*inv[n-m]%mod;
}
int main() {
	f[0]=1;
	inv[0]=1;
	er[0]=1;
	for(int i=1;i<=100000;i++){
		f[i]=f[i-1]*i%mod;
		inv[i]=ksm(f[i],mod-2);
		er[i]=er[i-1]*2%mod;
		erinv[i]=ksm(er[i],mod-2);
	}
	CM=sqrt(100000);
	int T;
//	cout<<1<<endl;
	scanf("%d",&T);
	for(int i=1;i<=T;i++)
		scanf("%d%d",&q[i].r,&q[i].l),q[i].id=i;
	sort(q+1,q+1+T);
	int l=0,r=1;
	ll cnt=1;
	for(int i=1;i<=T;i++) {
	//	cout<<i<<endl;
		while(l<q[i].l){
			l++;
			cnt=(cnt+C(r,l))%mod;
		}
		while(l>q[i].l){
			cnt=((cnt-C(r,l))%mod+mod)%mod;
			l--;
		}
		while(r<q[i].r){
			cnt=((cnt*2-C(r,l))%mod+mod)%mod;
			r++;
		}
		while(r>q[i].r){
			r--;
			cnt=(cnt+C(r,l))*inv[2]%mod;
		}
	//	cout<<q[i].l<<" "<<q[i].r<<" "<<cnt<<endl;
		ans[q[i].id]=cnt*erinv[q[i].r]%mod;
	//	cout<<i<<endl;
	}
	for(int i=1;i<=T;i++)
		printf("%lld\n",ans[i]);
	return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/J
来源:牛客网
 

滑稽树下你和我

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

红红和蓝蓝是随机降生在苹果树上的苹果仙灵,现在红线仙想估测他们的CP系数,并决定是否使他们成为一对CP。

给出n个结点n-1条边的树,节点编号为1到n,定义distance(i,j)为i与j的树上距离。

CP系数是指所有红红和蓝蓝在不同位置i,j的distance(i,j)之和。

即 ∑n−1i=1∑nj=i+1distance(i,j)∑i=1n−1∑j=i+1ndistance(i,j)。

求红红和蓝蓝的CP系数,对109+7取模。

输入描述:

 

第一行一个整数n( 1 < n <= 105 ),表示树的结点个数。

随后n-1行,每行三个整数a,b,c ( 1 <= a,b <= n ),( 0 <= c <= 109 ),表示结点a,b之间有一条权值为c的边,( a ≠≠ b )。

输出描述:

一行一个整数,表示CP系数对109+7取模的结果。

示例1

输入

复制

4
1 2 1
2 3 1
2 4 1

输出

复制

9

枚举每一条边,计算这条边的贡献

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100100;
const int mod = 1e9 + 7;
struct edge{
	int to,d,nex;
}e[N*2];
int n;
int head[N],len;
int dp[N];
ll ans;
void init()
{
	len=0;
	ans=0;
	for(int i=0;i<=n;i++)
	{
		head[i]=-1;
	}
}
void add(int x,int y,int z)
{
	e[len].to=y;
	e[len].d=z;
	e[len].nex=head[x];
	head[x]=len++;
}
void dfs(int u,int f)
{
	int to;
	dp[u]=1;
//	cout << u << " " << head[u]<<endl;
	for(int i=head[u];i!=-1;i=e[i].nex)
	{
		to=e[i].to;
		if(to==f) continue;
		dfs(to,u);
	//	cout<<dp[to] << " "<< e[i].d<<endl;
		ans += (ll)dp[to]*(ll)(n-dp[to]) % mod *(ll)e[i].d % mod;
		ans %= mod;
		dp[u] += dp[to];
	}
}
int main()
{
	int T;
	int nn=1;
	int x,y,z;
	while(~scanf("%d",&n))
	{
		init();
		for(int i=1;i<n;i++)
		{
			scanf("%d%d%d",&x,&y,&z);
			add(x,y,z);
			add(y,x,z);
		}	
		dfs(1,-1);
		printf("%lld\n",ans);
	}
	return 0;
}

链接:https://ac.nowcoder.com/acm/contest/992/K
来源:牛客网
 

白山茶与红玫瑰

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

公元2019年6月22日,白山茶王国与红玫瑰王国展开大战,在世外仙境——天空花园处,双方军团一字排开,在维持一字长蛇阵的队形下双方战士陷入混战。

然而,为了操控整个战局,白山茶公主与红玫瑰女巫都会一种AOE魔法,使得受到魔法波及的战士"叛变"(白山茶战士变为红玫瑰战士,红玫瑰战士变为白山茶战士)。

可见,这场战争永远没有绝对的优劣势,局势瞬息万变。现在,白山茶公主邀请你协助她了解各个区块的战况。

输入描述:

 

第一行一个整数n( 0 < n <= 105),表示白山茶战士和红玫瑰战士的数量和。

第二行n个只包含0、1的整数,为一字长蛇阵中的战士类别(1为白山茶战士,0为红玫瑰战士,下标从1开始)。

第三行一个整数m(0 < m <= 100001),表示施放魔法和询问战况的操作次数。

随后m行,每行三个整数op,x,y: (op∈∈ {0,1};1 <= x <= y <= n )

    对于op=1,表示对下标属于闭区间[x,y]的战士施放魔法,使她们"叛变";

    对于op=0,表示询问下标属于闭区间[x,y]的连续最多的白山茶战士的数目。

注:此题请不要使用多组输入!

输出描述:

对于每一次op=0的操作,输出区间内连续最多的白山茶战士数目。

示例1

输入

复制

4
1 0 1 0
5
0 1 4
1 2 3
0 1 4
1 3 3
0 4 4

输出

复制

1
2
0

线段树区间合并,维护一个区间内,左边连续1/0,右边连续1/0,区间1/0连续最长的长度,注意合并转换细节

#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
struct node{
    int l,r,len;
    int l0,r0,max0;
    int l1,r1,max1;
    int laz;
}tree[N << 2];
int n, q, x;
void pushup(int cur)
{
    tree[cur].l0=tree[cur<<1].l0;
    if(tree[cur<<1].l0==tree[cur<<1].len)
        tree[cur].l0+=tree[cur<<1|1].l0;
    tree[cur].r0=tree[cur<<1|1].r0;
    if(tree[cur<<1|1].r0==tree[cur<<1|1].len)
        tree[cur].r0+=tree[cur<<1].r0;
    tree[cur].max0=max(tree[cur<<1].max0,tree[cur<<1|1].max0);
    tree[cur].max0=max(tree[cur].max0,tree[cur<<1].r0+tree[cur<<1|1].l0);
 
    tree[cur].l1=tree[cur<<1].l1;
    if(tree[cur<<1].l1==tree[cur<<1].len)
        tree[cur].l1+=tree[cur<<1|1].l1;
    tree[cur].r1=tree[cur<<1|1].r1;
    if(tree[cur<<1|1].r1==tree[cur<<1|1].len)
        tree[cur].r1+=tree[cur<<1].r1;
    tree[cur].max1=max(tree[cur<<1].max1,tree[cur<<1|1].max1);
    tree[cur].max1=max(tree[cur].max1,tree[cur<<1].r1+tree[cur<<1|1].l1);
}
void build(int l,int r,int cur)
{
    tree[cur].laz=0;
    tree[cur].l=l;
    tree[cur].r=r;
    tree[cur].len=r-l+1;
    if(l==r)
    {
        scanf("%d",&x);
        tree[cur].l1=tree[cur].r1=tree[cur].max1=(x==1);
        tree[cur].l0=tree[cur].r0=tree[cur].max0=(x==0);
        return;
    }
    int mid=(r+l)>>1;
    build(l,mid,cur<<1);
    build(mid+1,r,cur<<1|1);
    pushup(cur);
}
void change(int cur)
{
    swap(tree[cur].l0,tree[cur].l1);
    swap(tree[cur].r0,tree[cur].r1);
    swap(tree[cur].max0,tree[cur].max1);
}
void pushdown(int cur)
{
    if(tree[cur].laz)
    {
        tree[cur<<1].laz^=1;
        tree[cur<<1|1].laz^=1;
        change(cur<<1);
        change(cur<<1|1);
        tree[cur].laz=0;
    }
}
 
void update(int pl,int pr,int cur)
{
    if(pl<=tree[cur].l&&tree[cur].r<=pr)
    {
        tree[cur].laz^=1;
        change(cur);
        return;
    }
    pushdown(cur);
    if(pl<=tree[cur<<1].r) update(pl,pr,cur<<1);
    if(pr>=tree[cur<<1|1].l) update(pl,pr,cur<<1|1);
    pushup(cur);
}
int query(int pl,int pr,int cur)
{
    if(pl<=tree[cur].l&&tree[cur].r<=pr)
    {
        return tree[cur].max1;
    }
    pushdown(cur);
    if(pr<=tree[cur<<1].r) return query(pl,pr,cur<<1);
    else if(pl>=tree[cur<<1|1].l) return query(pl,pr,cur<<1|1);
    else
    {
        int res=min(pr,tree[cur<<1|1].l1+tree[cur<<1|1].l-1)-max(pl,tree[cur<<1].r-tree[cur<<1].r1+1)+1;
        res=max(res,query(pl,pr,cur<<1));
        res=max(res,query(pl,pr,cur<<1|1));
        return res;
    }
}
int main()
{
    int op,l,r;
    scanf("%d",&n);
    build(1,n,1);
    scanf("%d",&q);
    while(q--)
    {
        scanf("%d%d%d",&op,&l,&r);
        if(op==0)
        {
            printf("%d\n",query(l,r,1));
        }
        else
        {
            update(l,r,1);
        }
    }
    
    return 0;
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值