牛客寒假算法基础集训营6补题和题解

这是寒假写的题解,不知道为什么没发出去。。。

总结: 牛客做多了可以学很多奇葩的开数组方法和很多奇妙的方法!感觉题目出的不错2333

A.出题

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

题目描述
小B准备出模拟赛。
她把题目按难度分为四等,分值分别为6,7,8,9。
已知小B共出了m道题,共n分。
求小B最少出了多少道6分题。

输入描述:
两个正整数n,m
输出描述:
一个数,表示答案。
若无解,输出"jgzjgzjgz"。
示例1
输入
复制
34 5
输出

1
示例2
输入

32 5
输出

3
示例3
输入

5 1
输出

jgzjgzjgz
备注:
n,m≤1012

这道题看样例很容易就能看出来如果n<m6的话是绝对不成立的,但是这里有一个坑,是如果n>m9的话也是不成立的

由于7*(m-x) <= n-6x,所以x的最小值是max(0,7m-n),这时候发现如果像上面这样写的话会报错,与迭代器(max)函数有关系,所以要写成max(0LL,7*m-n)让数据类型统一即可 代码:

#include <bits/stdc++.h>
using namespace std;
long long m,n;
void init()
{
  cin>>n>>m;
}
void solve()
{
  if(n<6*m||n>9*m)
  cout<<"jgzjgzjgz";
  else if(n==6*m)
  cout<<m;
  else
  {
    cout<<max(0LL,7*m-n);
  }
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  init();
  solve();
}

B.煤气灶

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

题目描述
小j开始打工,准备赚钱买煤气灶。
第一天,小j的工资为n元,之后每天他的工资都比前一天多d元。
已知煤气灶需要m元,求小j最少工作几天才能买到煤气灶。
输入描述:
四个整数 n,m,d,x
分别表示小j第一天的工资,煤气灶的价格,工资每天的增长量,答案不超过x
输出描述:
一个数表示答案
示例1
输入

10 100 20 100
输出

4
说明
10+30+50+70>=100
备注:
0≤n,d≤109,n+d>0
1≤m≤1018

这题非常的迷啊,直接暴力就过了 1018跟闹着玩一样= = 牛客真打不准啊

#include<bits/stdc++.h>
using namespace std;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int n,m,d,x;
  cin>>n>>m>>d>>x;
  long long sum=0;
  long long day=0;
  while(sum<m)
  {
    sum+=n;
    n+=d;
    day++;
  }
  if(day<=x)
  cout<<day;
  else
  cout<<x;
}

C.项链

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

小B想给她的新项链染色。
现在有m种颜色,对于第i种颜色,小B有a_i单位的颜料,每单位颜料可以染项链的一个珠子;
同时,小B对于第i种颜色的喜爱度为b_i。
已知项链有n个珠子,求染色后每个珠子的颜色的喜爱度之和的最大值。
(每个珠子只能至多被染一次,不被染色则喜爱度为0)
输入描述:
第一行两个数n,m
第二行m个数a_i
第三行m个数b_i
输出描述:
一个数表示答案
示例1
输入

5 3
1 2 3
3 2 1
输出

9
示例2
输入

5 3
1 2 1
3 2 1
输出

8

贪心即可,把喜爱度高的排在前面,如果高的珠子数量够的话就全部涂上颜色,加上结果,并且减去相应的珠子的个数,n就是剩余可以涂的珠子的个数,如果一种颜色超过n的话就把剩下的n全部涂上颜色然后跳出循环就行了 代码:

#include<iostream>
#include<algorithm>
using namespace std;
long long sum;
long long n,m;
struct node
{
  long long a;
  long long b;
}ans[100100];
void init()
{
  cin>>n>>m;
  for(int i=0;i<m;i++)
  cin>>ans[i].a;
  for(int i=0;i<m;i++)
  cin>>ans[i].b;
}
bool cmp(node a,node b)
{
  return a.b>b.b;
}
void sortted()
{
  sort(ans,ans+m,cmp);
}
void solve()
{
  for(int i=0;i<m;i++)
  {
    if(ans[i].a>=n)
    {
      sum+=n*ans[i].b;
      break;
    }
    else
    {
        sum+=ans[i].a*ans[i].b;
        n-=ans[i].a;
    }
   }
  cout<<sum;
}
int main()
{
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  init();
  sortted();
  solve();
}

D.美食

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

小B喜欢美食。
现在有n个美食排成一排摆在小B的面前,依次编号为1…n,编号为i的食物大小为 a[i] ,即足够小B吃 a[i] 口。
小B每次会吃两口,这两口要么是编号相同的美食,要么是编号之差的绝对值为1的美食。
小B想知道,她最多能吃几次?
输入描述:
第1行一个正整数n,表示美食个数
接下来n行,第i行一个整数a[i],表示编号为i的美食的大小
输出描述:
一个数表示小B最多吃几次。
示例1
输入
复制
4
1
5
7
8
输出
复制
10
说明
用二元组(a,b)表示某一次吃的两个美食分别为第a个美食和第b个美食,则下面为一个吃10次的方案:
(1,2)(2,2)(2,2)(3,4)(3,4)(3,4)(3,4)(3,4)(3,4)(3,4)
注意不一定要吃完。

由于吃到最后还剩一个的时候停止吃,那么如果中间没有0的话就全部加上除以二就行了,如果加起来有8个,正好吃四次,九个还剩一个也是吃四次,如果有0的话就重新计数,因为不能因为0就停止,后面可能还有能吃的美食

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int a[100010];
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    ll ans=0;
    ll cnt=0;
    for(int i=0;i<n;i++)
    {
        if(a[i]!=0)
        {
            cnt+=a[i];
        }
        else
        {
            ans+=cnt/2;
            cnt=0;
        }
    }
    ans+=cnt/2;
    cout<<ans;
}

还有一种贪心方式 那就是输入的同时判断能不能吃,只要能吃就吃下去,加上刚输入的a[i]的数量/2就是最多能吃的,再让它对2取余,如果还剩下1就可以继续和下一个吃,如果不行就直接让ans+=a[i]/2 这就是吃的最多的方案 代码:

#include<bits/stdc++.h>
using namespace std;
long long ans;
int a[100010];
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin>>n;
  for(int i=1;i<=n;i++)
  {
    cin>>a[i];
    if(a[i-1]==1&&a[i]>=1)
    {
      a[i-1]--;
      a[i]--;
      ans++;
    }
    ans+=a[i]/2;
    a[i]%=2;
  }
  cout<<ans;
}

E.海啸

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

题目描述
有一个沿海地区,可以看作有n行m列的城市,第i行第j列的城市海拔为h[i][j]。
由于沿海,所以这个地区经常会发生海啸。
海啸发生时,部分城市会被淹没,具体来说,海水高度会达到d,因此海拔低于d的城市都会被淹没。
现在有q次询问,每次问你一个矩形区域中,有多少城市不会被淹没。
输入描述:
第一行三个整数n,m,d,具体含义见题目描述。
接下来n行,每行m个整数,其中第i行第j列的整数为h[i][j],具体含义见题目描述。
第n+2行一个整数q,表示询问数。
接下来q行,每行四个整数a,b,x,y,
表示询问从第a行第b列到第x行第y列的矩形地区中,有多少地区不会被淹没。
即有多少个i,j,满足

a≤i≤x,b≤j≤y ,且

h[i][j]≥d 。
输出描述:
共q行,第i行一个整数,表示第i个询问的答案。
示例1
输入
复制
3 3 3
1 2 3
2 1 5
4 3 2
2
1 2 2 3
2 1 3 3
输出
复制
2
3

这题是跟mhr大佬学习的,详情请见mhr大佬的博客 和上次第一次比赛那题非常的相似,是二维dp,如果满足条件就变成1,加的时候别忘记加上重复减去的部分就行了 但是这个开动态数组实在是第一次见太神奇了 以前有大佬不推荐这样开是因为怕爆栈或者运行错误,没想到牛客遇到了只能这样写的题,第一次见= =

#include<bits/stdc++.h>
using namespace std;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n,m,d;
  cin>>n>>m>>d;
  int mp[n+10][m+10];
  int dp[n+10][m+10];
  memset(mp,0,sizeof(mp));
  memset(dp,0,sizeof(dp));
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
  cin>>mp[i][j];
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
  {
    if(mp[i][j]>=d)
    dp[i][j]++;
    dp[i][j]+=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1];
  }
  int t;
  cin>>t;
  while(t--)
  {
    int x1,x2,y1,y2;
    cin>>x1>>y1>>x2>>y2;
    cout<<dp[x2][y2]-dp[x1-1][y2]-dp[x2][y1-1]+dp[x1-1][y1-1]<<"\n";
  }
}

F.石头剪刀布

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

wzms 今年举办了一场剪刀石头布大赛,bleaves 被选为负责人。
比赛共有
2n 个人参加, 分为 n 轮,
在每轮中,第 1 位选手和第 2 位选手对战,胜者作为新的第 1 位选手,
第 3 位和第 4 位对战,胜者作为新的第 2 位选手,以此类推。
bleaves 调查得知,每个人都有其偏爱决策,每个人在每一次对战中都会使用他的偏爱决策。
如果一次对战的双方的偏爱决策相同,那么这次对战就永远不会结束,所以 bleaves 不希望这种情况发生。
现在 bleaves 知道了每个人的偏爱决策,但她不知道如何安排初始的次序,使得上面的情况不会发生,你能帮帮她吗?
输入描述:
一行三个整数 R,P,S ,表示偏爱石头,布,剪刀的人数分别为 R,P,S 。
输出描述:
如果无解,输出 IMPOSSIBLE
否则输出一个长度为 R+P+S 的字符串,第 i 个字符表示初始时第 i 位选手的偏爱决策,
如果有多种方案,输出字典序最小的。
示例1
输入
复制
1 1 0
输出
复制
PR
说明
只有 2 个选手,一个偏爱石头,一个偏爱布,无论次序如何,偏爱布的选手都会胜出。

所以方案可以是 PR 和 RP ,其中字典序最小的 PR 。
示例2
输入
复制
2 0 0
输出

IMPOSSIBLE
示例3
输入

1 1 2
输出

PSRS

待解决2333

G.区间或和

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

求a|(a+1)|(a+2)|…|(b-1)|b。

其中|表示按位或
输入描述:
多组输入,每行两个数表示a和b
输出描述:
对于每组输入,输出一个数a|(a+1)|(a+2)|…|(b-1)|b。
示例1
输入

99 109
68 77
55 66
34 43
1111234 1114321
输出

111
79
127
47
1179647

这题也很迷直接暴力没想到直接过了。。。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ll a,b;
  while(cin>>a>>b)
  {
    while(a<b)
    a|=(a+1);
    cout<<a<<"\n";
  }
}

H.肥猪

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

题目描述
小B来到了一个异世界,成为了肥猪之王。
在这个异世界,共有n种肥猪,编号分别为1,…,n。
小B希望集齐这n种肥猪。
召集肥猪有两种方式:

  1. 花费a[i]的金币召唤一只编号为i的肥猪。
  2. 花费x的金币使所有已召集的肥猪进化。
    即编号为i的肥猪编号变成i+1,特殊的,编号为n的肥猪编号变成1。

请问小B最少要花多少金币才能集齐n种肥猪。
输入描述:
第一行两个正整数n,x
接下来n行,第i行一个正整数a[i]
输出描述:
一个数表示答案
示例1
输入

2 10
1
20
输出

12
示例2
输入

4 10
1
2
3
4
输出

10

待解决2333

I.wzoi

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

题目描述
bleaves 最近在 wzoi 上面做题。
wzoi 的题目有两种,一种是 noip 题,一种是省选题。
bleaves 的做题方式很特别。每一天,她可能会看一道题目,这时她会选择题目种类,然后 wzoi 会在选定种类中随机扔给她一道她还没看过的题,她会把这道题看一遍,然后存在脑子里慢慢思考;她也有可能写题,这时她一定会写没写过的题中看的时间最迟的一题(如果不存在没写过的且没看过的题,她就不能写题)。
wzoi 每天会有一个推荐的题目种类,
如果 bleaves 看一道题目:如果种类和推荐的相同,那么这道题目最大得分为10,否则为5
如果 bleaves 写一道题目:如果种类和推荐的相同,那么这道题目得分为最大得分,否则为最大得分-5
假如 bleaves 现在还没看过任何一题,并且她知道了 wzoi 接下来一些天每天推荐的种类,问她在这些天的最大得分。
输入描述:
一行一个01串 s ,|s| 表示天数,
s
i

0
si=0 表示 wzoi 第 i 天推荐 noip 题,
s
i

1
si=1 表示 wzoi 第 i 天推荐省选题。
输出描述:
一行一个整数最大得分。
示例1
输入
复制
0011
输出

20
说明
4天行动依次为:看一道 noip 题,写第1天看的题,看一道省选题,写第3天看的题。
示例2
输入

0101
输出

10
说明
4天行动依次为:看一道 noip 题,写第1天看的题,看一道noip题,写第3天看的题。
示例3
输入

0110
输出

20
说明
4天行动依次为:看一道 noip 题,看一道省选题,写第2天看的题,写第1天看的题。

这道题就比较巧了,和我前几天和mhr一起打的一场cf的b题很相似,这里贴上cf的b题:

B. Game with string

time limit per test1 second
memory limit per test256 megabytes
inputstandard input
outputstandard output
Two people are playing a game with a string s, consisting of lowercase latin letters.

On a player’s turn, he should choose two consecutive equal letters in the string and delete them.

For example, if the string is equal to “xaax” than there is only one possible turn: delete “aa”, so the string will become “xx”. A player not able to make a turn loses.

Your task is to determine which player will win if both play optimally.

Input
The only line contains the string s, consisting of lowercase latin letters (1≤|s|≤100000), where |s| means the length of a string s.

Output
If the first player wins, print “Yes”. If the second player wins, print “No”.

Examples
inputCopy
abacaba
outputCopy
No
inputCopy
iiq
outputCopy
Yes
inputCopy
abba
outputCopy
No
Note
In the first example the first player is unable to make a turn, so he loses.

In the second example first player turns the string into “q”, then second player is unable to move, so he loses.

这题的意思是如果中间有两个一样的,就可以消一次,一直消到不能再消为止,不能消的人就输了,当时比赛的时候写了一个模拟 没想到复审直接被官方数据hack了

模拟代码:

#include<bits/stdc++.h>
using namespace std;
int bk[100010];
int main()
{
  string a;
  cin>>a;
  int l=a.size();
  int ans=0;
  int f=0;
  for(int i=1;i<l;i++)
  {
    if(a[i]==a[i-1]&&!bk[i-1]&&!bk[i])
    {
      ans++;
      bk[i]=1;
      bk[i-1]=1;
      f=1;
    }
  }
  int ll=l/2;
  if(f)
  for(int i=ll;i>0;i--)
  {
      if(a[i-1]==a[l-i]&&!bk[i-1]&&!bk[l-i]&&bk[i]&&bk[l-i-1])
      {
        ans++;
        bk[i-1]=1;
        bk[l-i]=1;
      }
  }
  else
  {
    cout<<"No";
    return 0;
  }
  if(ans%2!=0)
  cout<<"Yes";
  else
  cout<<"No";
}

这里有一种情况没有考虑, 后来学了一下数据结构写法,发现使用栈特别的巧妙,不愧是世界级的比赛,大家都是用的栈,只有我没有想起来,还是没有用数据结构的意识鸭

ac代码:

#include<bits/stdc++.h>
using namespace std;
stack<int>st;
int main()
{
  string a;
  cin>>a;
  int ans=0;
  for(int i=0;i<a.size();i++)
  {
    if(!st.empty()&&a[i]==st.top())
    ans++,st.pop();
    else
    st.push(a[i]);
  }
  if(ans%2!=0)
  cout<<"Yes";
  else
  cout<<"No";
}

再回过头来看看这道题发现比cf上的b题简单多了,只需要算一下相邻的有几个一样的,如果正好都匹配就输出,如果不正好就加上剩下的对数*5 代码:

#include<iostream>
#include<stack>
using namespace std;
stack<char>zhan;
long long ans;
long long b;
string a;
void solve()
{
  cin>>a;
  for(int i=0;i<a.size();i++)
  {
    if(!zhan.empty()&&a[i]==zhan.top())
    {
        ans+=10;
        b++;
        zhan.pop();
        //cout<<ans<<" "<<b<<endl;
      }
    else
    zhan.push(a[i]);
  }
  //cout<<a.size()<<endl;
}
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
  if(b*2==a.size())
  {
    cout<<ans;
  }
  else
  {
    cout<<ans+(a.size()/2-b)*5;
  }
}

j.迷宫

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

题目描述
你在一个 n 行 m 列的网格迷宫中,迷宫的每一格要么为空,要么有一个障碍。
你当前在第 r 行第 c 列(保证该格子为空)。每次移动你可以向上下左右任意一个方向移动一格,前提是不能走到障碍上,也不能超出迷宫的边界。
你向左移动的次数不能超过 x 次,向右不能超过 y 次。
问在这种情况下,对于每个格子,是否存在一种移动方案让你走到它。
输出有多少个格子存在移动方案让你走到它。
输入描述:
第一行两个正整数 n,m 。
第二行两个正整数 r,c ,保证
1≤r≤n ,
1≤c≤m 。
第三行两个整数 x,y ,保证
0≤x,y≤109 。
接下来 n 行,每行一个长度为 m 的字符串,
第 i 行第 j 个字符表示迷宫第 i 行第 j 列的格子,
字符为. 表示格子为空,字符为* 表示格子上有一个障碍。
输出描述:
输出一个数,表示有多少个格子存在移动方案让你走到它。
示例1
输入

4 5
3 2
1 2

.*.

*…
输出

10
说明
将能走到的格子用+标记:

+++…
+*.
+++

*+++.
示例2
输入

4 4
2 2
0 1

…*.


输出

7
说明
.++.
.+*.
.++.
.++.

对于全部数据,
1≤n,m≤1000 。

这题是看mhr大佬的博客然后写的 再次感谢mhr大佬!!! 博客地址:大佬的博客直接使用bfs 遇到向左走就让l-- 向右走就r-- 一直走到用完次数就不能走了

这里我用了一种很方便的写法和一种我惯用的写法写了两次 希望都能看懂

AC代码1:(方便但是不太熟练)

#include<bits/stdc++.h>
using namespace std;
char mp[1010][1010];
bool bk[1010][1010];
bool mark[1010][1010];
int ans;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
struct node1
{
  int x;
  int y;
};
struct node2
{
  int l;
  int r;
}id[1010][1010];
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n,m,sx,sy,l,r;
  cin>>n>>m>>sx>>sy>>l>>r;
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
  cin>>mp[i][j];
  queue<node1>q;
  q.push((node1){sx,sy});
  bk[sx][sy]=1;
  id[sx][sy]=(node2){l,r};
  while(!q.empty())
  {
    node1 p=q.front();
    q.pop();
    mark[p.x][p.y]=1;
    for(int i=0;i<4;i++)
    {
      int xx=dx[i]+p.x;
      int yy=dy[i]+p.y;
      if(xx<=0||yy<=0||xx>n||yy>m||bk[xx][yy]||mp[xx][yy]=='*')
      {
        continue;
      }
      else if(dy[i]==-1&&id[p.x][p.y].l==0)
      {
        continue;
      }
      else if(dy[i]==1&&id[p.x][p.y].r==0)
      {
        continue;
      }
      else if(dy[i]==-1)
      {
        q.push((node1){xx,yy});
        id[xx][yy]=(node2){id[p.x][p.y].l-1,id[p.x][p.y].r};
        bk[xx][yy]=1;
      }
      else if(dy[i]==1)
      {
        q.push((node1){xx,yy});
        id[xx][yy]=(node2){id[p.x][p.y].l,id[p.x][p.y].r-1};
        bk[xx][yy]=1;
      }
      else
      {
        q.push((node1){xx,yy});
        id[xx][yy]=(node2){id[p.x][p.y].l,id[p.x][p.y].r};
        bk[xx][yy]=1;
      }
    }
  }
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
  if(mark[i][j])
  ans++;
  cout<<ans;
}

AC代码2 (熟练的写法)

#include<bits/stdc++.h>
using namespace std;
char mp[1010][1010];
bool bk[1010][1010];
bool mark[1010][1010];
int ans;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
struct node1
{
  int x;
  int y;
};
struct node2
{
  int l;
  int r;
}id[1010][1010];
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n,m,sx,sy,l,r;
  cin>>n>>m>>sx>>sy>>l>>r;
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
  cin>>mp[i][j];
  queue<node1>q;
  node1 n1;
  n1.x=sx;
  n1.y=sy;
  q.push(n1);
  bk[sx][sy]=1;
  node2 n2;
  n2.l=l;
  n2.r=r;
  id[sx][sy]=n2;
  while(!q.empty())
  {
    node1 p=q.front();
    q.pop();
    mark[p.x][p.y]=1;
    for(int i=0;i<4;i++)
    {
      node1 n3;
      node2 n4;
      n3.x=dx[i]+p.x;
      n3.y=dy[i]+p.y;
      if(n3.x<=0||n3.y<=0||n3.x>n||n3.y>m||bk[n3.x][n3.y]||mp[n3.x][n3.y]=='*')
      {
        continue;
      }
      else if(dy[i]==-1&&id[p.x][p.y].l==0)
      {
        continue;
      }
      else if(dy[i]==1&&id[p.x][p.y].r==0)
      {
        continue;
      }
      else if(dy[i]==-1)
      {
        q.push(n3);
        n4.l=id[p.x][p.y].l-1;
        n4.r=id[p.x][p.y].r;
        id[n3.x][n3.y]=n4;
        bk[n3.x][n3.y]=1;
      }
      else if(dy[i]==1)
      {
        q.push(n3);
        n4.l=id[p.x][p.y].l;
        n4.r=id[p.x][p.y].r-1;
        id[n3.x][n3.y]=n4;
        bk[n3.x][n3.y]=1;
      }
      else
      {
        q.push(n3);
        n4.l=id[p.x][p.y].l;
        n4.r=id[p.x][p.y].r;
        id[n3.x][n3.y]=n4;
        bk[n3.x][n3.y]=1;
      }
    }
  }
  for(int i=1;i<=n;i++)
  for(int j=1;j<=m;j++)
  if(mark[i][j])
  ans++;
  cout<<ans;
}

啦啦啦 希望能帮到大家啦

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值