省赛训练3

隔了这么久才匆匆整理一下,Orz。


大明A+B

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。
这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。

现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。

Input

本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。

Output

请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。

Sample Input
 
 
1.1 2.9 1.1111111111 2.3444323343 1 1.1
Sample Output
 
 
4 3.4555434454 2.1
Source
2007省赛集训队练习赛(6)_linle专场

比赛的时候不是我过的,线下自己写忘记关freopen,,,,人生。

大模拟题。。。。就当得自己写了个高精度小数的板子吧。

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
#define N 405

string highadd(string & a, string & b)
{
    string ans1, ans2;
    int pa, pb;
    int la = a.length(), lb = b.length();
    int k1, k2;
    int n[N] = {0}, m[N] = {0};
    int x = 0;
    bool f;

    pa = a.find('.');pb = b.find('.');

    if(pa == string::npos) pa = -1;
    if(pb == string::npos) pb = -1;

    if(pa != -1 && pb != -1){
        for(int i = pa + 1; i < la; i++){
            n[i - pa - 1] = a[i] - '0';
        }
        for(int i = pb + 1; i < lb; i++){
            m[i - pb - 1] = b[i] - '0';
        }
        k2 = max(lb - pb, la - pa);
    }
    else if(pa == -1 && pb == -1){
        k2 = 0;
    }
    else if(pa == -1 && pb != -1){
        for(int i = pb + 1; i < lb; i++){
            m[i - pb - 1] = b[i] - '0';
        }
        k2 = lb - pb;
    }
    else{
        for(int i = pa + 1; i < la; i++){
            n[i - pa - 1] = a[i] - '0';
        }
        k2 = la - pa;
    }

    if(k2 > 0){
        for(int i = 0; i < k2; i++)
            n[i] += m[i];
        for(int i = k2 - 1; i >= 0; i--){
            n[i] += x;
            x = n[i] / 10;
            n[i] %= 10;
        }

        f = false;
        for(int i = 0; i< k2; i++)
            if(n[i]){
                f = true;
                break;
            }

        while(k2 > 0 && !n[k2 - 1])
            k2--;
        if(f){
            ans2.clear();
            for(int i = 0; i < k2; i++){
                ans2 += char(n[i] + '0');
            }
        }
    }

    memset(n, 0, sizeof n);
    memset(m, 0, sizeof m);

    if(pa != -1) la = pa;
    if(pb != -1) lb = pb;

    for(int i = 0; i < la; i++){
        n[la - i - 1] = a[i] - '0';
    }

    for(int i = 0; i < lb; i++){
        m[lb - i - 1] = b[i] - '0';
    }

    k1 = max(la, lb) + 1;
    for(int i = 0; i < k1; i++){
        n[i] += m[i];
    }
    for(int i = 0; i < k1; i++){
        n[i] += x;
        x = n[i] / 10;
        n[i] %= 10;
    }

    while(k1 > 0 && !n[k1 - 1])
        k1--;
    ans1.clear();
    for(int i = k1 - 1; i >= 0; i--){
        ans1 += char(n[i] + '0');
    }

    if(k2 > 0 && f)
        return ans1 + '.' + ans2;
    else
        return ans1;
}

int main()
{
    //freopen("date.txt", "r", stdin);
    string a, b;
    while(cin >> a >> b){
        cout << highadd(a, b) << endl;
    }

    return 0;
}


I Hate It

Time Limit: 3000 ms /Memory Limit: 32768 kb

Description

很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。
这让很多学生很反感。

不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。

Input

本题目包含多组测试,请处理到文件结束。
在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<5000 ),分别代表学生的数目和操作的数目。
学生ID编号分别从1编到N。
第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩。
接下来有M行。每一行有一个字符 C (只取'Q'或'U') ,和两个正整数A,B。
当C为'Q'的时候,表示这是一条询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。
当C为'U'的时候,表示这是一条更新操作,要求把ID为A的学生的成绩更改为B。

Output

对于每一次询问操作,在一行里面输出最高成绩。

Sample Input
 
 
5 6 1 2 3 4 5 Q 1 5 U 3 6 Q 3 4 Q 4 5 U 2 9 Q 1 5
Sample Output
 
 
5 6 5 9
Hint
Huge input,the C function scanf() will work better than cin
Source
2007省赛集训队练习赛(6)_linle专场

第一次敲线段树的题。凉凉。

是用update建树的。

#include <bits/stdc++.h>
using namespace std;
#define N 200001
#define INF 0x3f3f3f3f

int minv[N * 4], date[N];

int ql, qr;
int query(int o, int L, int R)
{
    int M = L + (R - L) / 2, ans = -1;
    if(ql <= L && R <= qr)
        return minv[o];

    if(ql <= M) ans = max(ans, query(o * 2, L, M));
    if(M < qr) ans = max(ans, query(o * 2 + 1, M + 1, R));

    return ans;
}

int p, v;
void update(int o, int L, int R)
{
    int M = L + (R - L) / 2;
    if(L == R) minv[o] = v;
    else{
        if(p <= M) update(o * 2, L, M);
        else update(o * 2 + 1, M + 1, R);
        minv[o] = max(minv[o * 2], minv[o * 2 + 1]);
    }
}

int main()
{
    //freopen("date.txt", "r", stdin);
    int n, m;
    char c;
    int a, b;

    while(scanf("%d%d", &n, &m) != EOF){
        memset(minv, -1, sizeof minv);

        for(int i = 1; i <= n; i++){
            scanf("%d", &date[i]);
            p = i;v = date[i];
            update(1, 1, n);
        }

        while(m--){
            cin >> c >> a >> b;
            if(c == 'Q'){
                ql = a;qr = b;
                printf("%d\n", query(1, 1, n));
            }
            else{
                p = a;v = b;
                update(1, 1, n);
            }
        }
    }

    return 0;
}

A Number Puzzle

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

Lele 最近上课的时候都很无聊,所以他发明了一个数字游戏来打发时间。

这个游戏是这样的,首先,他拿出几张纸片,分别写上0到9之间的任意数字(可重复写某个数字),然后,他叫同学随便写两个数字X和K。Lele要做的事情就是重新拼这些纸牌,组成数字 T ,并且 T + X 是 K 的正整数倍。

有时候,当纸片很多的时候,Lele经常不能在一节课之内拼出来,但是他又想知道答案,所以,他想请你帮忙写一个程序来计算答案。

Input

本题目包含多组测试数据,请处理到文件结束。
每组数据第一行包含两个整数 N和M(0<N<9,0<M<2000),分别代表纸片的数目和询问的数目。
第二行包含N个整数分别代表纸片上写的数字,每个数字可能取0~9。
接下来有M行询问,每个询问给出两个整数X和K(0<=x<10^9,0<K<100)。

注意:在拼纸片的时候,每张纸片都必须用上,且T首位不能为0

Output

对于每次询问,如果能够用这些纸片拼出符合答案的T,就输出结果T。如果有多个结果,就输出符合要求的最小的T。
如果不能拼出,就输出"None"。

Sample Input
 
 
4 3 1 2 3 4 5 7 33 6 12 8
Sample Output
 
 
1234 None 1324
Source
2007省赛集训队练习赛(6)_linle专场

T首位不为0;;;;;;;;;;;;;;;;;;

#include <cstring>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;

int num[10], n, m, x, y, tmp;
int a[50000];
int l;
int main()
{
    while(scanf("%d%d", &n, &m) != EOF){
        for(int i = 0; i < n; i++)
            scanf("%d", &num[i]);

        l = 0;
        sort(num, num + n);
        do{
            tmp = 0;

            if(num[0] == 0)
                continue;

            for(int i = 0; i < n; i++){
                tmp = tmp * 10 + num[i];
            }

           a[l++] = tmp;
        }while(next_permutation(num, num + n));

         while(m--){
             scanf("%d%d", &x, &y);
             bool flag = false;
             for(int i = 0; i < l; i++){
                if((a[i] + x) % y == 0){
                    printf("%d\n", a[i]);
                    flag = true;
                    break;
                }
             }
             if(!flag) printf("None\n");
         }
    }

    return 0;
}

Cupid's Arrow

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

传说世上有一支丘比特的箭,凡是被这支箭射到的人,就会深深的爱上射箭的人。
世上无数人都曾经梦想得到这支箭。Lele当然也不例外。不过他想,在得到这支箭前,他总得先学会射箭。
日子一天天地过,Lele的箭术也越来越强,渐渐得,他不再满足于去射那圆形的靶子,他开始设计各种各样多边形的靶子。
不过,这样又出现了新的问题,由于长时间地练习射箭,Lele的视力已经高度近视,他现在甚至无法判断他的箭射到了靶子没有。所以他现在只能求助于聪明的Acmers,你能帮帮他嘛?

Input

本题目包含多组测试,请处理到文件结束。
在每组测试的第一行,包含一个正整数N(2<N<100),表示靶子的顶点数。
接着N行按顺时针方向给出这N个顶点的x和y坐标(0<x,y<1000)。
然后有一个正整数M,表示Lele射的箭的数目。
接下来M行分别给出Lele射的这些箭的X,Y坐标(0<X,Y<1000)。

Output

对于每枝箭,如果Lele射中了靶子,就在一行里面输出"Yes",否则输出"No"。

Sample Input
 
 
4 10 10 20 10 20 5 10 5 2 15 8 25 8
Sample Output
 
 
Yes No
Source
2007省赛集训队练习赛(6)_linle专场

又是板子题,,,,不会啊。

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;

struct Point
{
    double x, y;
    Point(double x, double y) : x(x), y(y){}
};

Point operator - (const Point p, const Point q){
    return Point(p.x - q.x, p.y - q.y);
}

typedef vector<Point> Polygon;
typedef Point Vector;
Polygon v;

int dcmp(double x)
{
    if(fabs(x) <= 1e-8)
        return 0;
    else
        return x < 0?-1:1;
}

double Dot(Vector A,Vector B)
{
    return A.x*B.x+A.y*B.y;
}

double Cross(Point a, Point b)
{
    return (a.x * b.y - a.y * b.x);
}

bool isPointOnSegment(Point P, Point A, Point B)
{
    //return dcmp( (a.x - b.x) * (b.y - c.y) - (b.x - c.x) * (a.y - b.y) ) == 0;
    return dcmp(Cross(A-P,B-P))==0 && dcmp(Dot(A-P,B-P))<=0;
}

int isPointInPolygon(Point p, Polygon poly)
{
    int wn = 0;
    int n = v.size();

    for(int i = 0; i < n; i++){
        if(isPointOnSegment(p, poly[i], poly[(i + 1) % n])) return -1;

        int k = dcmp(Cross(poly[(i+1)%n] - poly[i], p - poly[i]));
        int d1 = dcmp(poly[i].y - p.y);
        int d2 = dcmp(poly[(i+1)%n].y - p.y);

        if(k > 0 && d1 <= 0 && d2 > 0) wn++;
        if(k < 0 && d2 <= 0 && d1 > 0) wn--;
    }

    return wn == 0?0:1;
}

int main()
{
    int n, m;
    double x, y;

    while(cin >> n){
        v.clear();

        for(int i = 0; i < n; i++){
            cin >> x >> y;
            v.push_back(Point(x, y));
        }

        cin >> m;

        while(m--){
            cin >> x >> y;
            Point tmp(x, y);

            if( isPointInPolygon(tmp, v) == 1 ){
                cout << "Yes\n";
            }
            else{
                cout << "No\n";
            }
        }
    }

    return 0;
}

A Simple Math Problem

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

Lele now is thinking about a simple function f(x).

If x < 10 f(x) = x.
If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);
And ai(0<=i<=9) can only be 0 or 1 .

Now, I will give a0 ~ a9 and two positive integers k and m ,and could you help Lele to caculate f(k)%m.

Input

The problem contains mutiple test cases.Please process to the end of file.
In each case, there will be two lines.
In the first line , there are two positive integers k and m. ( k<2*10^9 , m < 10^5 )
In the second line , there are ten integers represent a0 ~ a9.

Output

For each case, output f(k) % m in one line.

Sample Input
 
 
10 9999 1 1 1 1 1 1 1 1 1 1 20 500 1 0 1 0 1 0 1 0 1 0
Sample Output
 
 
45 104
Source
2007省赛集训队练习赛(6)_linle专场

这一题是我过的,通过写二维三维手推出矩阵规律。

没初始化E,一直错样例。

复制粘贴了一个矩阵快速幂的板子。

#include <stdio.h>
#define MOD (1e9+7)

typedef long long ll;
struct maxtrix//原来c++不用typedef
{
    ll m[11][11];
};

int N;//维数,小于等于10

maxtrix E;//单位矩阵

maxtrix mulit( maxtrix & a, maxtrix & b , int m)
{
    maxtrix p;

    for(int i = 0; i < N; ++i)
        for(int j = 0; j < N; ++j)
    {
        p.m[i][j] = 0;
        for(int k = 0; k < N; ++k)
            p.m[i][j] += a.m[i][k] * b.m[k][j];
        p.m[i][j] %= m;
    }

    return p;
}

maxtrix power( maxtrix a, int k, int m)
{
    maxtrix ans = E;

    while(k)//快速幂
    {
        if(k & 1 )
            ans = mulit( ans, a, m);
        k >>= 1;
        a = mulit(a, a, m);
    }

    return ans;
}

int m, k;
maxtrix a;
maxtrix ans;
maxtrix b[11];
int main()
{
    for(int i = 1; i < 10; i++){
        a.m[i][i - 1] = 1;
    }
    for(int i = 0; i < 10; i++)
        E.m[i][i] = 1;

    N = 10;
    while(scanf("%d%d", &k, &m) != EOF){
        for(int i = 0; i < 10; i++)
            scanf("%d", &a.m[0][i]);
     //   for(int i = 0; i < 10; i++){
      //  for(int j = 0; j < 10; j++)
      //      printf("%d ", a.m[i][j]);
      //  printf("\n");
   // }

        if(k < 10){
            printf("%d\n", k % m);
            continue;
        }
        ans = power(a, k - 9, m);
        int cnt = 0;
        for(int i = 0; i < 10; i++){
            cnt += (ans.m[0][i] * (9 - i)) % m;
        }

        printf("%d\n", cnt % m);
    }

    return 0;
}

Two Brothers

Time Limit: 2000 ms /Memory Limit: 32768 kb

Description

Though Yueyue and Lele are brothers , they are very different.
For example, Yueyue is very hard in study, especially in writing compositions. To make the composition looks nice , he will not use the same word twice. While Lele is very lazy, and he sometimes copys his brother's homework.

Last week, their teacher asked them to write a composition named "My Mother", they handed the same composition. The teacher was very angry , but Lele just answered "We have the same mother , why should our compositions be different ?"

Now,the teacher is asking Yueyue and Lele to write the compositions again, and he wants to calculate the length of longest common subsequence of words occuring in the two compositions. Can you help him ?

Input

There will be many test cases in the problem.Please process to the end of file.
Each case contains two lines.
The first line means Yueyue's composition and the second line means Lele's composition.
Each composition will contains no more than 10^4 words . And each word will contains less than 40 characters.Each character will only be in a~z or A~Z.
Two words will be separated by a blank.

To make the problem easier, there will be a "#" at the end of each composition.

Output

For each case , output a integer in a line represents the length of longest common subsequence of words occuring in the their compositions.

Sample Input
 
 
aa bb cc # aa cc bb #
Sample Output
 
 
2
Hint
Huge input,the C function scanf() will work better than cin
Source
2007省赛集训队练习赛(6)_linle专场

原来还存在nlogn的lcs,Orz。

转化成最长上升子序列这个操作太骚气了。

老老实实map,哈希什么的不会写。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <vector>
#include <map>
using namespace std;
#define N 10007
#define INF 0x3f3f3f3f

map<string, int> mp;
char a[41], b[41];
int c[N], d[N];
vector<int> location[N];
int da[N];
int db[N];
int k, la, lb, cnt;

int lcs()
{
    for(int i = 0; i < cnt; i++) location[i].clear();
    memset(d, INF, sizeof d);
    memset(c, 0, sizeof c);
    for(int i = lb - 1; i >= 0; i--){
        location[db[i]].push_back(i);
    }

    k = 0;
    for(int i = 0; i < la; i++){
        //cout << location[da[i]].size() << endl;
        for(int j = 0; j < location[da[i]].size(); j++){
            c[k++] = location[da[i]][j];
        }
    }

    for(int i = 0; i < k; i++)
        *lower_bound(d, d + k, c[i]) = c[i];

    return lower_bound(d, d + k, INF) - d;
}

int main()
{
    cnt = 1;
    while(scanf("%s", a) != EOF){
        la = 1;lb = 0;
        mp[a] = cnt++;
        da[0] = mp[a];
        if(a[0] == '#')
            continue;
        do{
            scanf("%s", a);
            if(mp[a] == 0) mp[a] = cnt++;
            da[la++] = mp[a];
        }while(strcmp("#", a));

        do{
            scanf("%s", b);
            if(mp[b] == 0) mp[b] = cnt++;
            db[lb++] = mp[b];
        }while(strcmp("#", b));

        --la;--lb;

        printf("%d\n", lcs());

        mp.clear();
        cnt = 1;
    }

    return 0;
}

Matrix Revolution

Time Limit: 3000 ms /Memory Limit: 32768 kb

Description

Lele 现在不仅会整数A+B,A*B,还会矩阵A+B,矩阵A*B。

一天,Lele在百无聊赖的时候,突然想起一个很无聊的问题。
对于给定的一个矩阵A,A+A^2+A^3+...+A^K 是多少呢?
其中A^2 表示两个矩阵的乘积A*A,A^3表示三个矩阵的乘积A*A*A,依此类推。

由于这个计算结果太大了,Lele无法把整个结果写出来,但是,他还是想请你告诉他,结果矩阵中到底有多少个非零元素。

Input

本题目包含多组测试,请处理到文件结束。
在每个测试数据的第一行,有三个整数N,M,和K(0<N<1000,0<=M<10*N,N<K<10^100),其中N代表矩阵A的大小是N*N,K是题目中所描述的K。
接下来有M行,每行有三个整数a,b,c(0<=a,b,<N 且a!=b,0<c<10^9)表示矩阵中第a行第b列的值为c。(矩阵的行数和列数都是从0开始计数)

你可以假定矩阵中主对角线上的数都是1,其余没有提到的元素都是0。

Output

对于每一组测试数据,请在一行里输出结果矩阵里的非0元素的个数。

Sample Input
 
 
3 4 4 1 2 1 2 1 1 0 1 1 0 2 1
Sample Output
 
 
7
Hint
Huge input,the C function scanf() will work better than cin
Source
2007省赛集训队练习赛(6)_linle专场

A*A就是求a[i][j] 看看有没有 k 使 a[i][k] 和 a[k][j] 同时成立。

枚举所有i,来求答案。

也就是对于图枚举所有顶点看看能不能通过小于k步来得到走到j。

学的网上的代码。

点击打开链接

//https://blog.csdn.net/hnust_derker/article/details/55669112
#include <bits/stdc++.h>
using namespace std;
#define N 1002

const int INF = 0x3f3f3f3f;
int n, m;
string s;
vector<int> a[N];
int ans, k;
int d[N];
queue<int> que;

void init()
{
    ans = 0;
    if(s.length() >= 9) k = INF;
    else{
        k = 0;
        for(int i = 0; i < s.length(); i++){
            k = k * 10 + s[i] - '0';
        }
    }

    for(int i = 0; i < n; i++){
        a[i].clear();
        a[i].push_back(i);
    }

    int x, y, c;
    for(int i = 0; i < m; i++){
        scanf("%d%d%d", &x, &y, &c);
        a[x].push_back(y);
    }
}

int bfs(int s)
{
    memset(d, 0x3f, sizeof d);
    d[s] = 1;
    que.push(s);

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

        for(int i = 0; i < a[h].size(); i++){
            int t = a[h][i];
            if(d[t] < INF) continue;
            d[t] = d[h] + 1;
            que.push(t);
        }
    }

    int cnt = 0;
    for(int i = 0; i < n; i++)
    if(d[i] < k){
        cnt++;
    }

    return cnt;
}

int main()
{
    while(scanf("%d%d", &n, &m) != EOF){
        cin >> s;

        init();

        for(int i = 0 ; i < n; i++){
            ans += bfs(i);
        }

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

    return 0;
}


A New Tetris Game

Time Limit: 1000 ms /Memory Limit: 32768 kb

Description

曾经,Lele和他姐姐最喜欢,玩得最久的游戏就是俄罗斯方块(Tetris)了。
渐渐得,Lele发觉,玩这个游戏只需要手快而已,几乎不用经过大脑思考。
所以,Lele想出一个新的玩法。

Lele和姐姐先拿出一块长方形的棋盘,这个棋盘有些格子是不可用的,剩下的都是可用的。Lele和姐姐拿出俄罗斯方块里的正方形方块(大小为2*2的正方形方块)轮流往棋盘里放,要注意的是,放进去的正方形方块不能叠在棋盘不可用的格子上,也不能叠在已经放了的正方形方块上。
到最后,谁不能再放正方形方块,谁就输了。

现在,假设每次Lele和姐姐都很聪明,都能按最优策略放正方形,并且每次都是Lele先放正方形,你能告诉他他是否一定能赢姐姐吗?

Input

本题目包含多组测试,请处理到文件结束。
每组测试第一行包含两个正整数N和M(0<N*M<50)分别代表棋盘的行数和列数。
接下来有N行,每行M个0或1的数字代表整个棋盘。
其中0是代表棋盘该位置可用,1是代表棋盘该位置不可用

你可以假定,每个棋盘中,0的个数不会超过40个。

Output

对于每一组测试,如果Lele有把握获胜的话,在一行里面输出"Yes",否则输出"No"。

Sample Input
 
 
4 4 0000 0000 0000 0000 4 4 0000 0010 0100 0000
Sample Output
 
 
Yes No
Source
2007省赛集训队练习赛(6)_linle专场

这个博弈题目也是搜的题解。

当前状态下,如果再搜索没法了,说明这个人赢。否则输。

#include <bits/stdc++.h>
using namespace std;

int n, m;
char a[52][52];

bool isok(int x, int y)
{
    return a[x][y]=='0'&&a[x+1][y]=='0'&&a[x][y+1]=='0'&&a[x+1][y+1]=='0';
}

bool dfs()
{
    for(int i = 0 ; i < n - 1; i++){
        for(int j = 0; j < m - 1; j++){
            if(isok(i, j)){
                a[i][j]='1';a[i+1][j]='1';a[i][j+1]='1';a[i+1][j+1]='1';
                if(!dfs()){
                    a[i][j]='0';a[i+1][j]='0';a[i][j+1]='0';a[i+1][j+1]='0';
                    return true;
                }
                a[i][j]='0';a[i+1][j]='0';a[i][j+1]='0';a[i+1][j+1]='0';
            }
        }
    }
    return false;
}

int main()
{
    while(scanf("%d%d", &n, &m) != EOF){
        for(int i = 0; i < n; i++)
            scanf("%s", a[i]);
        printf(dfs()?"Yes\n":"No\n");
    }

    return 0;
}

最后一个模拟不想写了。。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值