省赛训练4

队友都不在,一个人打比赛真的累, 打不动打不动。。。。

还好这次的题目特别水。还能做几题。


Recursively Palindromic Partitions

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

A partition of a positive integer N is a sequence of integers which sum to N, usually written with plus signs between the numbers of the partition. For example

15 = 1+2+3+4+5 = 1+2+1+7+1+2+1

A partition is palindromic if it reads the same forward and backward. The first partition in the example is not palindromic while the second is. If a partition containing m integers is palindromic, its left half is the firstfloor(m/2) integers and its right half is the lastfloor(m/2) integers (which must be the reverse of the left half. (floor(x) is the greatest integer less than or equal to x.)

A partition is recursively palindromic if it is palindromic and its left half is recursively palindromic or empty. Note that every integer has at least two recursively palindromic partitions one consisting of all ones and a second consisting of the integer itself. The second example above is also recursively palindromic.

For example, the recursively palindromic partitions of 7 are:

7, 1+5+1, 2+3+2, 1+1+3+1+1, 3+1+3, 1+1+1+1+1+1+1

Write a program which takes as input an integer N and outputs the number of recursively palindromic partitions of N.

Input

The first line of input contains a single integer N, (1 ≤ N ≤ 1000) which is the number of data sets that follow. Each data set consists of a single line of input containing a single positive integer for which the number of recursively palindromic partitions is to be found.

Output

For each data set, you should generate one line of output with the following values: The data set number as a decimal integer (start counting at one), a space and the number of recursively palindromic partitions of the input value.

Sample Input
 
3 4 7 20
Sample Output
 
1 4 2 6 3 60
Source
HDU-ACM 2009 省赛集训队-组队PK(3)

给你一个数字,求出分解出变成和的形式并且要是回文串形式。

本来挺懵逼的,但是手推了几个就发现其实是有递推关系的。

对于每个数字,就是把它分为三部分,左中右,其中中间的数字和原数字奇偶性相同,左边右边的数字们和相同。

对于N来说,分为s1, n, s2,依次取:

0 N 0

1 N - 2 1

2 N - 4 2

3 N - 6 3

4 N - 8 4

……

然后其中1234……的分解数量和就是答案。

#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <cmath>
using namespace std;
#define N 10005

int t, n, ans;
int num[N];

int main()
{
    cin >> t;

    num[0] = num[1] = 1;
    num[2] = 2;
    for(int i = 3; i < N; i++)
    for(int j = 0; j <= i / 2; j++){
        num[i] += num[j];
    }

    for(int cse = 1; cse <= t; cse++){
        cin >> n;
        ans = 0;

        for(int i = 0; i <= n / 2; i++){
             ans += num[i];
        }

        printf("%d %d\n", cse, ans);
    }

    return 0;
}

An ant's story

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

Long long ago, there is an ant crawling on an L-meter magic rubber band with speed of v cm/s.The magic rubber band will elongate m meters every second. We can assume that the magic rubber band elongates equably. Now, the ant is on the start point and crawling to another point, please tell me whether it can reach the endpoint.

Input

The first line of the input is T, which stands for the number of test cases you need to solve.
Each case include three integers: L , v , m ( 0< L< 10^9,0<= v, m< 10^ 9,).

Output

For each test case, if the ant can reach endpoint, output "YES", otherwise "NO".

Sample Input
 
1 99999 61 1
Sample Output
 
YES
Source
HDU2010省赛集训队选拔赛(校内赛)

蚂蚁又走橡皮又拉伸,我一开始以为是蚂蚁速度比橡皮快不就好了。

年轻。。。。。。。

其实橡皮拉伸会把蚂蚁往前拉,所以emmmmmmmm如果蚂蚁能走出历史性的一步的话,它就能走出历史性的第二步,就肯定能到达终点。

#include <iostream>
#include <cstdio>
using namespace std;

int t, l, v, m;

int main()
{
    cin >> t;

    while(t--){
        cin >> l >> v >> m;

        if(v > 0) printf("YES\n");
        else printf("NO\n");
    }

    return 0;
}


Kakuro Extension Extension

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

You know ,I'm a lazy guy and write problem description is a very very boring thing.So , I would not repeat the rule of Kakuro again , Please look atthis.But things are different again,contray to the problem above,this time you should work out the input file according to the output file.

Input

The first line of the inputs is T, which stands for the number of test cases you need to solve.
Then T case follow:
Each test case starts with a line contains two numbers N,M (2<=N,M<=100)and then N lines follow, each line contains M columns, either ‘_’ or 1~9. You can assume that the first column of the first line is ’_’.

Output

Output N lines, each line contains M parts, each part contains 7 letters. The m parts are seperated by spaces.Output a blank line after each case.

Sample Input
 
2 6 6 _ _ _ _ _ _ _ _ 5 8 9 _ _ 7 6 9 8 4 _ 6 8 _ 7 6 _ 9 2 7 4 _ _ _ 7 9 _ _ 5 8 _ _ _ _ _ _ _ _ _ 1 9 9 1 1 8 6 _ _ 1 7 7 9 1 9 _ 1 3 9 9 9 3 9 _ 6 7 2 4 9 2 _
Sample Output
 
XXXXXXX XXXXXXX 028\XXX 017\XXX 028\XXX XXXXXXX XXXXXXX 022\022 ....... ....... ....... 010\XXX XXX\034 ....... ....... ....... ....... ....... XXX\014 ....... ....... 016\013 ....... ....... XXX\022 ....... ....... ....... ....... XXXXXXX XXXXXXX XXX\016 ....... ....... XXXXXXX XXXXXXX XXXXXXX 001\XXX 020\XXX 027\XXX 021\XXX 028\XXX 014\XXX 024\XXX XXX\035 ....... ....... ....... ....... ....... ....... ....... XXXXXXX 007\034 ....... ....... ....... ....... ....... ....... XXX\043 ....... ....... ....... ....... ....... ....... ....... XXX\030 ....... ....... ....... ....... ....... ....... XXXXXXX

看了半天找到的规律,左边数字是下面的数字和,右边数字是右边数字和。

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;
#define N 105

int t, n, m;
char maze[N][N];

string solve(int x, int y)
{
    if(maze[x][y] != '_'){
        return ".......";
    }

    string ans = "";
    int cnt = 0;

    for(int i = x + 1; i <= n; i++){
        if(maze[i][y] == '_')
            break;
        else{
            cnt += maze[i][y] - '0';
        }
    }

    if(cnt == 0) ans = "XXX";
    else{
        for(int k = 0; k < 3; k++){
            ans = char(cnt % 10 + '0') + ans;
            cnt /= 10;
        }
    }

    cnt = 0;

    for(int i = y + 1; i <= m; i++){
        if(maze[x][i] == '_')
            break;
        else{
            cnt += maze[x][i] - '0';
        }
    }

    string tmp = "";
    if(cnt == 0) tmp = "XXX";
    else{
        for(int k = 0; k < 3; k++){
            tmp = char(cnt % 10 + '0') + tmp;
            cnt /= 10;
        }
    }

    if(ans == "XXX" && tmp == "XXX"){
        ans = ans + "X" + tmp;
    }
    else{
        ans = ans + "\\" + tmp;
    }

    return ans;
}

int main()
{
    cin >> t;

    while(t--){
        cin >> n >> m;

        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                cin >> maze[i][j];
            }
        }

        for(int i = 1; i <= n; i++){
            for(int j = 1; j <= m; j++){
                cout << solve(i, j);
                if(j != m) putchar(' ');
                else putchar('\n');
            }
        }

        putchar('\n');
    }

    return 0;
}

Lucky Number

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

To Chinese people, 8 is a lucky number. Now your task is to judge if a number is lucky.
We say a number is lucky if it’s a multiple of 8, or the sum of digits that make up the number is a multiple of 8, or the sum of every digit’s square is a multiple of 8.

Input

The first line contains an integer stands for the number of test cases.
Each test case contains an integer n (n >= 0).

Output

For each case, output “Lucky number!” if the number is lucky, otherwise output “What a pity!”.

Sample Input
 
2 0 8
Sample Output
 
Lucky number! Lucky number!
#include <iostream>
#include <cstdio>
using namespace std;

int t, n;

bool judge1(int m)
{
    int cnt = 0;
    while(m){
        cnt += m % 10;
        m /= 10;
    }

    return (cnt % 8 == 0);
}

bool judge2(int m)
{
    int cnt = 0;
    while(m){
        cnt += (m % 10) * (m % 10);
        m /= 10;
    }

    return (cnt % 8 == 0);
}

int main()
{
    cin >> t;

    while(t--){
        cin >> n;

        if(n != 0 && (n % 8 == 0 || judge1(n) || judge2(n))) printf("Lucky number!\n");
        else printf("What a pity!\n");
    }


    return 0;
}

Calculate the expression

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

You may find it’s easy to calculate the expression such as:
a = 3
b = 4
c = 5
a + b + c = ?
Isn’t it?

Input

The first line contains an integer stands for the number of test cases.
Each test case start with an integer n stands for n expressions will follow for this case.
Then n – 1 expressions in the format: [variable name][space][=][space][integer] will follow.
You may suppose the variable name will only contain lowercase letters and the length will not exceed 20, and the integer will between -65536 and 65536.
The last line will contain the expression you need to work out.
In the format: [variable name| integer][space][+|-][space][variable name| integer] …= ?
You may suppose the variable name must have been defined in the n – 1 expression and the integer is also between -65536 and 65536.
You can get more information from the sample.

Output

For each case, output the result of the last expression.

Sample Input
 
3 4 aa = 1 bb = -1 aa = 2 aa + bb + 11 = ? 1 1 + 1 = ? 1 1 + -1 = ?
Sample Output
 
12 2 0
Source
HDU2010省赛集训队选拔赛(校内赛)


模拟题。用map。map真是伟大的发明。

#include <iostream>
#include <cstdio>
#include <string>
#include <map>
using namespace std;
#define N 100005

int t, n, m, ans, sign;
string val[N], tmp;
map<string, int> mp;

bool isnum(string & s)
{
    int i = 0;
    if(s[0] == '-' || s[0] == '+')
        i = 1;

    if(s.length() == 1 && i == 1)
        return false;

    for(; i < s.length(); i++){
        if('0' > s[i] || s[i] > '9'){
            return false;
        }
    }
    return true;
}

int getnum(string & s)
{
    int cnt = 0;
    int sign = 1;

    int i = 0;
    if(s[0] == '-' || s[0] == '+'){
        i = 1;
        sign = s[0] == '-'?-1:1;
    }


    for(; i < s.length(); i++){
        cnt = cnt * 10 + s[i] - '0';
    }
    return cnt * sign;
}

int main()
{
    cin >> t;

    while(t--){
        mp.clear();

        cin >> n;
        for(int i = 0; i < n - 1; i++){
            cin >> val[i] >> tmp >> m;

            mp[val[i]] = m;
        }


        ans = 0;
        sign = 1;
        do{
            cin >> tmp;
            if(isnum(tmp)){
                ans += sign * getnum(tmp);
                //cout << "a\n";
            }
            else if(tmp == "-" || tmp == "+"){
                sign = tmp == "-"?-1:1;
                //cout << "b" << endl;
            }
            else if(tmp != "="){
                ans += sign * mp[tmp];
                //cout << "c\n";
            }
          //  cout << sign << ' ' << tmp << endl;
        }while(tmp != "=");
        cin >> tmp;

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

    return 0;
}

lazy gege

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

Gege hasn't tidied his desk for long,now his desk is full of things.
This morning Gege bought a notebook,while to find somewhise to put it troubles him.
He wants to tidy a small area of the desk, leaving an empty area, and put the notebook there, the notebook shouldn't fall off the desk when putting there.
The desk is a square and the notebook is a rectangle, area of the desk may be smaller than the notebook.
here're two possible conditions:


Can you tell Gege the smallest area he must tidy to put his notebook?

Input

T(T<=100) in the first line is the case number.
The next T lines each has 3 real numbers, L,A,B(0< L,A,B <= 1000).
L is the side length of the square desk.
A,B is length and width of the rectangle notebook.

Output

For each case, output a real number with 4 decimal(printf("%.4lf",ans) is OK), indicating the smallest area Gege should tidy.

Sample Input
 
3 10.1 20 10 3.0 20 10 30.5 20.4 19.6
Sample Output
 
25.0000 9.0000 96.0400
Source
HDU2010省赛集训队选拔赛(校内赛)

几何题目,一开始我真的傻乎乎的以为是两种情况,加了第三种五边形的就过了。

#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
const double eps = 1e-8;

int t;
double l, a, b, c;

int main()
{
    cin >> t;

    while(t--){
        cin >> l >> a >> b;

        c = min(a, b);
        if(l * sqrt(2) * 2 <= c ){
            printf("%.4lf\n", l * l);
        }
        else if(l * sqrt(2) < c){
            printf("%.4lf\n", l * l - 2*l*l - c*c/4 + sqrt(2)*l*c);
        }
        else{
            printf("%.4lf\n", c * c / 4);
        }
    }

    return 0;
}

Seinfeld

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

I’m out of stories. For years I’ve been writing stories, some rather silly, just to make simple problems look difficult and complex problems look easy. But, alas, not for this one.
You’re given a non empty string made in its entirety from opening and closing braces. Your task is to find the minimum number of “operations” needed to make the string stable. The definition for being stable is as follows:
1. An empty string is stable.
2. If S is stable, then {S} is also stable.
3. If S and T are both stable, then ST (the concatenation of the two) is also stable.
All of these strings are stable: {}, {}{}, and {{}{}}; But none of these: }{, {{}{, nor {}{.
The only operation allowed on the string is to replace an opening brace with a closing brace, or visa-versa.

Input

Your program will be tested on one or more data sets. Each data set is described on a single line. The line is a non-empty string of opening and closing braces and nothing else. No string has more than 2000 braces. All sequences are of even length.
The last line of the input is made of one or more ’-’ (minus signs.)

Output

For each test case, print the following line:
k. N
Where k is the test case number (starting at one,) and N is the minimum number of operations needed to convert the given string into a balanced one.
Note: There is a blank space before N.

Sample Input
 
}{ {}{}{} {{{} ---
Sample Output
 
1. 2 2. 0 3. 1
Source
2009 ANARC

本来想多了还以为是DP来着,但是大佬一点拨原来是贪心。。。

Orz,菜了菜了。

#include <iostream>
#include <cstdio>
#include <string>
#include <map>
#include <cmath>
#include <cstring>
using namespace std;
#define N 2005

int ans;
char s[N];
int ls;
int cse = 1;
char stk[N];
int l;

int main()
{
    while(scanf("%s", s + 1) != EOF && s[1] != '-'){
        ls = strlen(s + 1);
        ans = 0;
        l = 0;

        for(int i = 1; i <= ls; i++){
            if(s[i] == '{'){
                stk[l++] = '{';
            }
            else{
                if(l == 0){
                    stk[l++] = '{';
                    ans++;
                }
                else
                l--;
            }
        }

        if(l > 0){
            ans += l / 2;
        }

        printf("%d. %d\n", cse++, ans);
    }

    return 0;
}

以上是比赛的时候写出来的,现在要补没写完的。

War Chess

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

War chess is hh's favorite game:
In this game, there is an N * M battle map, and every player has his own Moving Val (MV). In each round, every player can move in four directions as long as he has enough MV. To simplify the problem, you are given your position and asked to output which grids you can arrive.

In the map:
'Y' is your current position (there is one and only one Y in the given map).
'.' is a normal grid. It costs you 1 MV to enter in this gird.
'T' is a tree. It costs you 2 MV to enter in this gird.
'R' is a river. It costs you 3 MV to enter in this gird.
'#' is an obstacle. You can never enter in this gird.
'E's are your enemies. You cannot move across your enemy, because once you enter the grids which are adjacent with 'E', you will lose all your MV. Here “adjacent” means two grids share a common edge.
'P's are your partners. You can move across your partner, but you cannot stay in the same grid with him final, because there can only be one person in one grid.You can assume the Ps must stand on '.' . so ,it also costs you 1 MV to enter this grid.

Input

The first line of the inputs is T, which stands for the number of test cases you need to solve.
Then T cases follow:
Each test case starts with a line contains three numbers N,M and MV (2<= N , M <=100,0<=MV<= 65536) which indicate the size of the map and Y's MV.Then a N*M two-dimensional array follows, which describe the whole map.

Output

Output the N*M map, using '*'s to replace all the grids 'Y' can arrive (except the 'Y' grid itself). Output a blank line after each case.

Sample Input

 
5 3 3 100 ... .E. ..Y 5 6 4 ...... ....PR ..E.PY ...ETT ....TT 2 2 100 .E EY 5 5 2 ..... ..P.. .PYP. ..P.. ..... 3 3 1 .E. EYE ...

Sample Output

 
... .E* .*Y ...*** ..**P* ..E*PY ...E** ....T* .E EY ..*.. .*P*. *PYP* .*P*. ..*.. .E. EYE .*.

Source

HDU2010省赛集训队选拔赛(校内赛)

入队列要注意如果当前节点已经访问过,只有比当前值大的时候才入队列。

#include <bits/stdc++.h>
using namespace std;
#define N 105
typedef pair<int, int> P;
#define f first
#define s second
const int INF = 0x3f3f3f3f;

queue<P> que;
//bool vis[N][N];
char maze[N][N], ans[N][N];
int n, m, mv;
int sx, sy;
int d[N][N];
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};

bool adjemy(int x, int y){
    bool flag = false;

    if(x < n - 1 && maze[x + 1][y] == 'E') flag = true;
    if(x > 0 && maze[x - 1][y] == 'E') flag = true;
    if(y < m - 1 && maze[x][y + 1] == 'E') flag = true;
    if(y > 0 && maze[x][y - 1] == 'E') flag = true;

    return flag;
}

void bfs()
{
    while(!que.empty()) que.pop();
    //memset(vis, false, sizeof vis);
    memset(d, 0x3f, sizeof d);

    //vis[sx][sy] = true;
    d[sx][sy] = mv;
    que.push(P(sx, sy));
    int x, y, xx, yy;

    while(!que.empty()){
        P h = que.front();que.pop();

        x = h.f;y = h.s;

        if(adjemy(x, y) && !(x == sx && y == sy)){
            d[x][y] = 0;
            continue;
        }
        //cout << x << ' ' << y << endl;

        for(int i = 0; i < 4; i++){
            xx = x + dx[i];yy = y + dy[i];

            if(xx < 0 || xx >= n || yy < 0 || yy >= m || maze[xx][yy] == '#' || maze[xx][yy] == 'E')
                continue;

            if(d[xx][yy] < INF && d[xx][yy] >= d[x][y])
                continue;

            int tmp;
            if((maze[xx][yy] == '.' || maze[xx][yy] == 'P')) tmp = d[x][y] - 1;
            else if(maze[xx][yy] == 'T') tmp = d[x][y] - 2;
            else if(maze[xx][yy] == 'R') tmp = d[x][y] - 3;

            if((d[xx][yy] < INF && d[xx][yy] >= tmp) || tmp < 0){
                continue;
            }

            d[xx][yy] = tmp;

            if(maze[xx][yy] != 'P'){
                ans[xx][yy] = '*';
            }
            //vis[xx][yy] = true;
            if(d[xx][yy] > 0)
                que.push(P(xx, yy));
        }
    }
}

int main()
{
   // freopen("date.txt", "r", stdin);
    int t;

    scanf("%d", &t);

    while(t--){
        scanf("%d%d%d", &n, &m, &mv);

        for(int i = 0; i < n; i++){
            scanf("%s", maze[i]);
            strcpy(ans[i], maze[i]);
        }

        for(int i = 0 ; i < n; i++){
            for(int j = 0; j < m; j++){
                if(maze[i][j] == 'Y') {sx = i; sy = j;break;}
            }
        }

        bfs();

        for(int i = 0; i < n; i++){
            printf("%s\n", ans[i]);
        }
        putchar('\n');
    }

    return 0;
}


#define is unsafe

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

Have you used #define in C/C++ code like the code below?

#include <stdio.h>
#define MAX(a , b) ((a) > (b) ? (a) : (b))
int main()
{
  printf("%d\n" , MAX(2 + 3 , 4));
  return 0;
}

Run the code and get an output: 5, right?
You may think it is equal to this code:

#include <stdio.h>
int max(a , b) {  return ((a) > (b) ? (a) : (b));  }
int main()
{
  printf("%d\n" , max(2 + 3 , 4));
  return 0;
}

But they aren't.Though they do produce the same anwser , they work in two different ways.
The first code, just replace the MAX(2 + 3 , 4) with ((2 + 3) > (4) ? (2 + 3) : 4), which calculates (2 + 3) twice.
While the second calculates (2 + 3) first, and send the value (5 , 4) to function max(a , b) , which calculates (2 + 3) only once.

What about MAX( MAX(1+2,2) , 3 ) ?
Remember "replace".
First replace: MAX( (1 + 2) > 2 ? (1 + 2) : 2 , 3)
Second replace: ( ( ( 1 + 2 ) > 2 ? ( 1 + 2 ) : 2 ) > 3 ? ( ( 1 + 2 ) > 2 ? ( 1 + 2 ) : 2 ) : 3).
The code may calculate the same expression many times like ( 1 + 2 ) above.
So #define isn't good.In this problem,I'll give you some strings, tell me the result and how many additions(加法) are computed.

Input

The first line is an integer T(T<=40) indicating case number.
The next T lines each has a string(no longer than 1000), with MAX(a,b), digits, '+' only(Yes, there're no other characters).
In MAX(a,b), a and b may be a string with MAX(c,d), digits, '+'.See the sample and things will be clearer.

Output

For each case, output two integers in a line separated by a single space.Integers in output won't exceed 1000000.

Sample Input
 
6 MAX(1,0) 1+MAX(1,0) MAX(2+1,3) MAX(4,2+2) MAX(1+1,2)+MAX(2,3) MAX(MAX(1+2,3),MAX(4+5+6,MAX(7+8,9)))+MAX(10,MAX(MAX(11,12),13))
Sample Output
 
1 0 2 1 3 1 4 2 5 2 28 14
Source
HDU2010省赛集训队选拔赛(校内赛)

大模拟题,用几个栈,有空再写吧。


coins

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

"Yakexi, this is the best age!" Dong MW works hard and get high pay, he has many 1 Jiao and 5 Jiao banknotes(纸币), some day he went to a bank and changes part of his money into 1 Yuan, 5 Yuan, 10 Yuan.(1 Yuan = 10 Jiao)
"Thanks to the best age, I can buy many things!" Now Dong MW has a book to buy, it costs P Jiao. He wonders how many banknotes at least,and how many banknotes at most he can use to buy this nice book. Dong MW is a bit strange, he doesn't like to get the change, that is, he will give the bookseller exactly P Jiao.

Input

T(T<=100) in the first line, indicating the case number.
T lines with 6 integers each:
P a1 a5 a10 a50 a100
ai means number of i-Jiao banknotes.
All integers are smaller than 1000000.

Output

Two integers A,B for each case, A is the fewest number of banknotes to buy the book exactly, and B is the largest number to buy exactly.If Dong MW can't buy the book with no change, output "-1 -1".

Sample Input
 
3 33 6 6 6 6 6 10 10 10 10 10 10 11 0 1 20 20 20
Sample Output
 
6 9 1 10 -1 -1
Source
HDU2010省赛集训队选拔赛(校内赛)
懒得写了。。。。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值