Codeforces 水题选刷

C++几个适合的OJ刷题网站 RQNOJ,VIJOS 这两个还比较基本,题目也是中文的 对于准备NOI或者省选的话,BZOJ是不错的 ACM什么的,最好就做POJ,SGU,Codeforces等题库,这些都是英文的 阅读详情

翻译会给出在代码中

Ctrl+F点开网页搜索,直接查题号即可

有一些很棒的题我会单独拿出来写题解的,特别水的题就不做了嘻嘻嘻

Codeforces 938C

/*
题解:
给定两个正整数n,m(m≤n),对于一个n阶0-1方阵,
其任意m阶子方阵中至少有一个元素“0”,则可以求解这个方阵中的“1”的最大数目。现求解这个问题的逆向问题:已知这个最大数目为X,求相应的n和m。 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int n,m;
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        int x;scanf("%d",&x);
        if(x==0){printf("1 1\n");continue;}
        bool bk=false;
        for(int i=1;i*i<=x;i++)
        {
            int j=x/i;
            if(i*j==x && ((i&1)==(j&1)))
            {
                n=(i+j)/2;
                int temp=n-i;
                if(temp==0)continue;
                m=n/temp;
                if(n>=m && (n/m)==temp)
                {
                    printf("%d %d\n",n,m);
                    bk=true;
                    break;
                }
            }
        }
        if(bk==false)printf("-1\n");
    }
    return 0;
}

Codeforces 938D

/*
翻译:
给定一张包含n(n<=2*10^5)个节点的图,给出m(m<=2*10^5)条双向边,边有权,每个点也有权
对于每个点i,你要输出i到任意一个点再回来的最小代价,到达那个点时要加入那个点的点权,经过则不用 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
typedef long long LL;
LL d[210000];
struct pt
{
    int x;
    friend bool operator <(pt n1,pt n2){return d[n1.x]>d[n2.x];}
};
priority_queue<pt> q;
inline LL read()
{
    LL f=1,x=0;char ch=getchar();
    while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
struct node
{
    LL c;
    int x,y,next;
}a[810000];int len,last[210000];
void ins(int x,int y,LL c)
{
    len++;
    a[len].x=x;a[len].y=y;a[len].c=c;
    a[len].next=last[x];last[x]=len;
}
int n,m,st;
bool v[210000];
int main()
{
    n=read();m=read();st=n+1;
    len=0;memset(last,0,sizeof(last));
    for(int i=1;i<=m;i++)
    {
        int x=read(),y=read();LL c=read();
        ins(x,y,2*c);ins(y,x,2*c);
    }
    for(int i=1;i<=n;i++)
    {
        LL x=read();
        ins(st,i,x);
    }
    memset(d,63,sizeof(d));d[st]=0;
    memset(v,false,sizeof(v));v[st]=true;
    pt tmp;tmp.x=st;q.push(tmp);
    while(!q.empty())
    {
        tmp=q.top();int x=tmp.x;
        for(int k=last[x];k;k=a[k].next)
        {
            int y=a[k].y;
            if(d[y]>d[x]+a[k].c)
            {
                d[y]=d[x]+a[k].c;
                if(v[y]==false)
                {
                    v[y]=true;
                    pt cnt;cnt.x=y;q.push(cnt);
                }
            }
        }
        q.pop();v[x]=false;
    }
    for(int i=1;i<n;i++)printf("%lld ",d[i]);
    printf("%lld\n",d[n]);
    return 0;
}

Codeforces 939E

/*
翻译:
给出Q(Q<=5*10^5)个操作,共有两种操作
第一种操作输入两个数op x:op表示第几种操作,x表示在当前序列中插入数x(x<=10^9),保证x大于当前序列中任意一个数
第二种操作输入一个数op:op表示第几种操作,求当前序列中的Maximize
定义Maximize为:在当前序列中找出一个子集,Maximize表示子集中数最大值/子集平均数的最大值
输出保留10位小数 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL sum[510000],f[510000],list[510000];
int T,head;
int main()
{
    head=0;
    scanf("%d",&T);
    while(T--)
    {
        int op;LL x;
        scanf("%d",&op);
        if(op==1)
        {
            scanf("%I64d",&list[++head]);
            sum[head]=sum[head-1]+list[head];
        }
        else
        {
            int l=1,r=head;
            while(l<r-1)
            {
                int mid=(l+r)/2;
                int mmid=(mid+r)/2;
                if((double)(list[head]+sum[mid])/(mid+1)>(double)(list[head]+sum[mmid])/(mmid+1))l=mid;
                else r=mmid;
            }
            if((double)(list[head]+sum[l])/(l+1)>(double)(list[head]+sum[r])/(r+1))printf("%.10lf\n",(double)list[head]-(double)(list[head]+sum[r])/(r+1));
            else printf("%.10lf\n",(double)list[head]-(double)(list[head]+sum[l])/(l+1));
        }
    }
    return 0;
}

Codeforces 940F

/*
翻译: 
给出一个长度为n(n<=100000)的序列,序列中每个数a[i]<=10^9
设c[i]表示第i种数出现的次数 
q(q<=100000)次询问,询问共有两种
第一种 1 x y 表示求序列中x~y c[i]的mex。mex表示最小的没有出现过的值(不包括0) 
第二种 2 x y 表示把序列中第x位的数替换为y 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<map>
using namespace std;
map<int,int> q;
int val[210000],len;
int l,r,t;
struct pck{int p,c,las;}ch[210000];int chlen;
struct ask
{
    int l,r,t,op;
}A[210000];int n,m,alen;
int block,pos[210000];
bool cmp(ask n1,ask n2)
{
    if(pos[n1.l]!=pos[n2.l])return pos[n1.l]<pos[n2.l];
    if(pos[n1.r]!=pos[n2.r])return pos[n1.r]<pos[n2.r];
    return n1.t<n2.t;
}
int vis[210000];//sum[i]的出现次数 
int col[210000],las[210000],answer[210000],ans;//las[i]表示第i个位置上一次的颜色 
int sum[210000];//每种数出现了多少次 
void upd_col(int now,int c)
{
    if(now>=l && now<=r)vis[sum[col[now]]]--,sum[col[now]]--,vis[sum[col[now]]]++;
    col[now]=c;
    if(now>=l && now<=r)vis[sum[col[now]]]--,sum[col[now]]++,vis[sum[col[now]]]++;
}
void del(int now)
{
    vis[sum[col[now]]]--;
    sum[col[now]]--;
    vis[sum[col[now]]]++;
}
void add(int now)
{
    vis[sum[col[now]]]--;
    sum[col[now]]++;
    vis[sum[col[now]]]++;
}
int gtans(){for(int i=1;;i++)if(vis[i]==0)return i;}
int main()
{
    scanf("%d%d",&n,&m);
    block=ceil(pow(n,2.0/3));
    for(int i=1;i<=n;i++)pos[i]=(i-1)/block+1;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&col[i]);
        val[++len]=col[i];las[i]=col[i];
    }
    for(int i=1;i<=m;i++)
    {
        int op,u,v;
        scanf("%d%d%d",&op,&u,&v);
        if(op==1)
        {
            alen++;
            A[alen].l=u;A[alen].r=v;A[alen].t=chlen;
            A[alen].op=i-chlen;
        }
        else
        {
            chlen++;ch[chlen].p=u;ch[chlen].c=v;
            ch[chlen].las=las[u];las[u]=v;
            val[++len]=v;
        }
    }
    sort(val+1,val+1+len);
    len=unique(val+1,val+1+len)-val-1;
    for(int i=1;i<=len;i++)q[val[i]]=i;
    for(int i=1;i<=chlen;i++)ch[i].las=q[ch[i].las],ch[i].c=q[ch[i].c];
    for(int i=1;i<=n;i++)col[i]=q[col[i]];
    sort(A+1,A+1+alen,cmp);
    l=A[1].l,r=A[1].r,t=A[1].t;
    for(int i=1;i<=A[1].t;i++)col[ch[i].p]=ch[i].c;
    for(int i=A[1].l;i<=A[1].r;i++)
    {
        vis[sum[col[i]]]--;
        sum[col[i]]++;
        vis[sum[col[i]]]++;
    }
    for(int i=1;;i++)if(vis[i]==0){answer[A[1].op]=i;break;}
    for(int i=2;i<=alen;i++)
    {
        while(t<A[i].t)t++,upd_col(ch[t].p,ch[t].c);
        while(t>A[i].t)upd_col(ch[t].p,ch[t].las),t--;
        while(l<A[i].l)del(l++);
        while(l>A[i].l)add(--l);
        while(r<A[i].r)add(++r);
        while(r>A[i].r)del(r--);
        answer[A[i].op]=gtans();
        //for(int j=l;j<=r;j++)printf("%d ",col[j]);
    }
    for(int i=1;i<=alen;i++)printf("%d\n",answer[i]);
    return 0;
}

Codeforces 946D

/*
翻译:
定义一个星期n(n<=500)天,一天m(m<=500)个小时。给定课表,你想翘课,但最多只能翘K(K<=500)节课
定义一天在学校的时间为(该天最后一节课时间-该天第一节课时间+1)
你想要这个星期呆在学校的时间尽量短,求这个最短时间 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
char ch[510][510];
int sum[510][510];//第i天 翘j节课 
int f[510][510];//前i天 翘j节课 
int n,m,K,a[510],s[510],gt[510];
int pre[510];
int main()
{
    scanf("%d%d%d",&n,&m,&K);
    for(int i=1;i<=n;i++)
    {
        int cnt=0;
        scanf("%s",ch[i]+1);
        for(int j=1;j<=m;j++)a[j]=ch[i][j]-'0';
        for(int j=1;j<=m;j++){if(a[j]==1)gt[++cnt]=j,s[i]++;}
        if(cnt!=0)sum[i][0]=m-(gt[cnt]-gt[1]+1);
        else {sum[i][0]=m;continue;}
        for(int j=1;j<=s[i];j++)//翘多少节课 
        {
            if(j==s[i]){sum[i][j]=m;break;}
            int u=s[i]-j;//上多少节课 
            for(int k=1;k<=cnt-u+1;k++)
                sum[i][j]=max(sum[i][j],m-(gt[k+u-1]-gt[k]+1));
        }
    }
    f[0][0]=0;
    for(int i=1;i<=n;i++)
        for(int j=0;j<=K;j++)
            for(int k=0;k<=min(K,s[i]);k++)
            {
                if(j>=k)f[i][j]=max(f[i-1][j-k]+sum[i][k],f[i][j]);
            }
    printf("%d\n",n*m-f[n][K]);
    return 0;
}

Codeforces 946E

/*
翻译:
定义一个数为美丽数,当且仅当这个数长度为偶数,且他的某一个排列可以组成一个回文数
给出n(n<=2*10^100000),求小于n的最大美丽数 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
char ch[210000];
int a[210000],g[15],len;
int f[210000][10];
void sol()
{
    for(int i=len;i>=1;i--)
        for(int j=a[i]-1;j>=0;j--)
        {
            if(i==1 && j==0)break;
            int cnt=0,maxx=0;
            for(int k=0;k<=9;k++)
            {
                int op=0;if(k==j)op=1;
                if(f[i-1][k]^op==1)cnt++,maxx=k;
            }
            if(len-i<cnt)continue;
            for(int k=1;k<=i-1;k++)printf("%d",a[k]);
            printf("%d",j);
            for(int k=i+1;k<=len-cnt;k++)printf("9");
            int t=maxx;
            for(int k=len-cnt+1;k<=len;k++)
            {
                int op=0;if(t==j)op=1;else op=0;
                while(f[i-1][t]^op!=1){t--;if(t==j)op=1;else op=0;}
                printf("%d",t);t--;
            }
            printf("\n");
            return ;
        }
    for(int i=1;i<len-2;i++)printf("9");
    printf("\n");
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        memset(g,0,sizeof(g));
        scanf("%s",ch+1);len=strlen(ch+1);
        for(int i=1;i<=len;i++)a[i]=ch[i]-'0',g[a[i]]++;
        if(len%2==1)
        {
            for(int i=1;i<len;i++)printf("9");
            printf("\n");continue;
        }
        if((g[1]==1 && g[0]==len-1 && a[1]==1) || (g[1]==2 && g[0]==len-2 && a[1]==1 && a[len]==1))
        {
            for(int i=1;i<len-1;i++)printf("9");
            printf("\n");continue;
        }
        for(int i=0;i<=9;i++)f[0][i]=0;//0 偶数次
        for(int i=1;i<=len;i++)
            for(int j=0;j<=9;j++)
            {
                if(a[i]==j)f[i][j]=f[i-1][j]^1;
                else f[i][j]=f[i-1][j];
            }
        sol();
    }
    return 0;
}

Codeforces 946F

/*
翻译: 
定义f[i]=f[i-1]+f[i-2],+表示拼接的意思,即为f[i-1]与f[i-2]拼接起来组成f[i]
给出一个子串(长度<=100),求这个子串在fn(n<=100)的**子序列**中出现了多少次
答案对1e9+7取模
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
LL f[110][110][110];
LL lenth[110];//添加2^lenth[i]次方个数 
char ch[110];int n,m;
int main()
{
    scanf("%d%d",&n,&m);
    scanf("%s",ch+1);
    for(int i=1;i<=n;i++)f[ch[i]-'0'][i][i]=1;
    lenth[0]=lenth[1]=2;
    for(int i=2;i<=m;i++)lenth[i]=(lenth[i-1]*lenth[i-2])%mod;
    for(int i=2;i<=m;i++)
        for(int l=1;l<=n;l++)
            for(int r=l;r<=n;r++)
            {
                LL opx,opy;
                if(l==1)opx=lenth[i-1];else opx=1;
                if(r==n)opy=lenth[i-2];else opy=1;
                f[i][l][r]=(f[i][l][r]+(opx*f[i-2][l][r]+opy*f[i-1][l][r])%mod)%mod;
                for(int k=l;k<r;k++)
                    f[i][l][r]=(f[i][l][r]+f[i-1][l][k]*f[i-2][k+1][r])%mod;
            }
    printf("%lld\n",f[m][1][n]);
    return 0;
}

Codeforces 946G

/*
翻译:
给出一个长度为n(n<=10^5)的序列,要求最少的次数,使得序列变为一个删去一个数后严格上升的序列 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int f[2][210000];//没删  删 
int n,pos,ans;
int main()
{
    scanf("%d",&n);
    memset(f,63,sizeof(f));
    f[0][0]=-1e9;
    for(int i=1;i<=n;i++)
    {
        int x;scanf("%d",&x);
        int t=upper_bound(f[1]+1,f[1]+1+n,x-i+1)-f[1];
        f[1][t]=x-i+1;ans=max(ans,t);
        f[1][pos]=min(f[1][pos],f[0][pos]);ans=max(ans,pos);
        t=upper_bound(f[0]+1,f[0]+1+n,x-i)-f[0];
        f[0][pos=t]=x-i;
    }
    printf("%d\n",max(0,n-ans-1));
    return 0;
}

Codeforces 950B

/*
翻译:
给出两个数字串a,b,长度分别为n,m(n,m<=10^6)
求之多能把a,b分成多少部分,使得每一部分分别相等 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int a[1100000],b[1100000];
int n,m;
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=m;i++)scanf("%d",&b[i]);
    int i=0,j=0,sx=0,sy=0,ans=0;
    while(i+1<=n && j+1<=m)
    {
        i++;j++;
        sx+=a[i];sy+=b[j];
        while(sx!=sy)
        {
            if(sx<sy)sx+=a[++i];
            else sy+=b[++j];
        }
        ans++;sx=sy=0;
    }
    printf("%d\n",ans);
    return 0;
}

Codeforces 954A

/*
给定一段长度为n(n<=100)的字符串,R与U可以组合在一起,求组合在一起后最短字符串长度 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
char ch[110];
int main()
{
    int n;
    scanf("%d",&n);
    scanf("%s",ch+1);
    int i=1,cnt=0;
    while(i<=n)
    {
        if((ch[i]=='R' && ch[i+1]=='U') || (ch[i]=='U' && ch[i+1]=='R'))cnt++,i+=2;
        else cnt++,i+=1;
    }
    printf("%d\n",cnt);
    return 0;
}

Codeforces 954B

/*
翻译:
给定一个字符串,每次可以输入1个字符(低端操作)或进行之多一次高端操作
高端操作:复制当前字符串并插入至当前字符串末尾
求可以弄出这个字符串的最小总操作数 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
char ch[110];
int n;
int main()
{
    scanf("%d",&n);
    scanf("%s",ch+1);
    int ans=n;
    for(int i=1;i<=n;i++)
    {
        bool bk=false;
        for(int j=i+1;j<=i+i;j++)if(ch[j]!=ch[j-i]){bk=true;break;}
        if(bk==false)ans=min(ans,n-2*i+1+i);
    }
    printf("%d\n",ans);
    return 0;
}

Codeforces 954C

/*
翻译:
定义一个矩阵u*v由1~u*v组成,位置(i,j)填值(i-1)*v+j。每个格子可以向上下左右走(边界你懂得)
给出一段路线,判断这条路线是否可以在某一个矩阵中走出。不能输出NO,能则输出YES以及某个矩阵的u,v 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
int a[210000];
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
        if(i==1)continue;
        if(a[i]==a[i-1]){printf("NO\n");return 0;}
    }
    if(n==1)
    {
        printf("YES\n1 %d\n",a[1]);
        return 0;
    }
    int x,y,t=1,sx=-1,sy=-1;
    for(int i=2;i<=n;i++)if(abs(a[i]-a[i-1])!=1){sy=abs(a[i]-a[i-1]);break;}
    if(sy==-1)
    {
        int maxx=0;
        for(int i=1;i<=n;i++)maxx=max(maxx,a[i]);
        printf("YES\n1 %d\n",maxx);
        return 0;
    }
    x=(a[1]-1)/sy+1;y=(a[1]-1)%sy+1;
    sx=max(sx,x);
    bool bk=false;
    while(t<=n)
    {
        t++;if(t>n)break;
        if(a[t]==a[t-1]+1)
        {
            if(sy==-1 || y<sy)y++;
            else{bk=true;break;}
        }
        else if(a[t]==a[t-1]-1)
        {
            if(y==1){bk=true;break;}
            else y--;
        }
        else
        {
            if(a[t]>a[t-1])
            {
                int tmp=a[t]-a[t-1];
                if(sy==-1 || sy==tmp)sy=tmp;
                else {bk=true;break;}
                x++;
            }
            else
            {
                int tmp=a[t-1]-a[t];
                if(sy==-1 || sy==tmp)sy=tmp;
                else {bk=true;break;}
                x--;
                if(x==0){bk=true;break;}
            }
        }
        sx=max(sx,x);
    }
    if(bk==true || (sx>1e9 || sy>1e9))printf("NO\n");
    else printf("YES\n%d %d\n",sx,sy);
    return 0;
}

Codeforces 954D

/*
翻译:
给出一张图,点数n(n<=1000),边数m(m<=1000)。
给出两个点s,t,要在图内新增一条边并保证s->t的最短路径长度不改变
求这样的边有多少条 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
struct node
{
    int x,y,next;
}a[2100];int len,last[1100];
void ins(int x,int y)
{
    len++;
    a[len].x=x;a[len].y=y;
    a[len].next=last[x];last[x]=len;
}
int n,m,stx,sty;
bool v[1100];
int d[2][1100],list[1100],head,tail,st;
void spfa(int op)
{
    memset(v,false,sizeof(v));v[st]=true;
    memset(d[op],63,sizeof(d[op]));d[op][st]=0;
    list[1]=st;head=1;tail=2;
    while(head!=tail)
    {
        int x=list[head];
        for(int k=last[x];k;k=a[k].next)
        {
            int y=a[k].y;
            if(d[op][y]>d[op][x]+1)
            {
                d[op][y]=d[op][x]+1;
                if(v[y]==false)
                {
                    v[y]=true;
                    list[tail++]=y;
                    if(tail==n+1)tail=1;
                }
            }
        }
        head++;if(head==n+1)head=1;
        v[x]=false;
    }
}
bool mp[1100][1100];
int main()
{
    scanf("%d%d%d%d",&n,&m,&stx,&sty);
    memset(mp,false,sizeof(mp));len=0;memset(last,0,sizeof(last));
    for(int i=1;i<=m;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);mp[x][y]=mp[y][x]=true;
        ins(x,y);ins(y,x);
    }
    st=stx;spfa(0);
    st=sty;spfa(1);
    int ans=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)if(i!=j && mp[i][j]==false)
        {
            mp[i][j]=mp[j][i]=true;
            if(d[0][i]+d[1][j]+1>=d[0][sty] && d[0][j]+d[1][i]+1>=d[0][sty])ans++;
        }
    printf("%d\n",ans);
    return 0;
}

Codeforces 954E

/*
翻译:
给定n(n<=2*10^5)个水龙头,第i个水龙头有最大出水量a[i](a[i]<=10^6),且给定一个温度值t[i](t[i]<=10^6)。
定义一次出水得到的温度为Sigma(a[i]*t[i])/Sigama(a[i]),给定一次出水得到的温度,求最大总出水量。
如果得不到该温度,输出0 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
int n,T;
struct node
{
    LL a,t;
}P[1110000];
bool cmp(node n1,node n2){return n1.t<n2.t;}
int main()
{
    scanf("%d%d",&n,&T);
    for(int i=1;i<=n;i++)scanf("%lld",&P[i].a);
    for(int i=1;i<=n;i++)scanf("%lld",&P[i].t);
    LL sx=0,sy=0,ax=0,ay=0;
    for(int i=1;i<=n;i++)
    {
        if(P[i].t>T)sx+=P[i].a*(P[i].t-T),ax+=P[i].a;
        else if(P[i].t<T)sy+=P[i].a*(T-P[i].t),ay+=P[i].a;
    }
    double ans=0;LL sum=0;
    if(sx<sy)//负的多 
    {
        ans=(double)ax;sum=sx;
        sort(P+1,P+1+n,cmp);
        int tmp=n;
        for(int i=1;i<=n;i++)if(P[i].t>=T){tmp=i-1;break;}
        for(int i=tmp;i>=1;i--)
        {
            if(sum-P[i].a*(T-P[i].t)>0)sum-=P[i].a*(T-P[i].t),ans+=(double)P[i].a;
            else
            {
                ans+=(double)sum/(T-P[i].t);
                sum=0;
                break;
            }
        }
        for(int i=1;i<=n;i++)if(P[i].t==T)ans+=(double)P[i].a;
        if(sum==0)printf("%.15lf\n",ans);
        else printf("0\n");
    }
    else
    {
        ans=(double)ay;sum=sy;
        sort(P+1,P+1+n,cmp);
        int tmp=1;
        for(int i=n;i>=1;i--)if(P[i].t<=T){tmp=i+1;break;}
        for(int i=tmp;i<=n;i++)
        {
            if(sum-P[i].a*(P[i].t-T)>0)sum-=P[i].a*(P[i].t-T),ans+=(double)P[i].a;
            else
            {
                ans+=(double)sum/(P[i].t-T);
                sum=0;
                break;
            }
        }
        for(int i=1;i<=n;i++)if(P[i].t==T)ans+=(double)P[i].a;
        if(sum==0)printf("%.15lf\n",ans);
        else printf("0\n");
    }
    return 0;
}

Codeforces 954F

/*
翻译:
给定一个3行m(m<=10^18)列的矩阵,从格子(i,j)可以移到(i,j+1)与(i-1(i>1),j+1),(i+1(i<3),j+1)
矩阵内会存在n个位于a[i]行,坐标l[i]~r[i]的障碍物,障碍物不能通行
求从格子(2,1)移动至(2,m)的方案数,答案对1e9+7取模 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const LL mod=1e9+7;
struct node
{
    LL l,r;int a;
}P[11000];
LL s[21000];
int t,c[5][41000],pre[5];
int n;LL m;
struct matrix
{
    LL m[5][5];
    matrix(){memset(m,0,sizeof(m));}
    void cr(){m[1][1]=m[1][2]=m[2][1]=m[2][2]=m[2][3]=m[3][2]=m[3][3]=1;m[1][3]=m[3][1]=0;}
}tmp;
matrix mul(matrix u,matrix v,int n,int m,int p)
{
    matrix ret;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            for(int k=1;k<=p;k++)
                ret.m[i][k]=(ret.m[i][k]+u.m[i][j]*v.m[j][k])%mod;
    return ret;
}
matrix pow_mod(matrix u,LL b)
{
    matrix ans;
    if(b==0)return u;
    for(int i=1;i<=3;i++)ans.m[i][i]=1;
    while(b)
    {
        if(b%2==1)ans=mul(ans,u,3,3,3);
        u=mul(u,u,3,3,3);b/=2;
    }
    return ans;
}
int main()
{
    t=0;
    scanf("%d%lld",&n,&m);
    for(int i=1;i<=n;i++)
    {
        scanf("%d%lld%lld",&P[i].a,&P[i].l,&P[i].r);
        s[++t]=P[i].l-1;s[++t]=P[i].r;
    }
    s[++t]=1;s[++t]=m;
    sort(s+1,s+1+t);
    t=unique(s+1,s+1+t)-s-1;
    memset(c,0,sizeof(c));
    for(int i=1;i<=n;i++)
    {
        int l=lower_bound(s+1,s+1+t,P[i].l-1)-s;
        int r=lower_bound(s+1,s+1+t,P[i].r)-s;
        c[P[i].a][l]++;c[P[i].a][r]--;
    }
    matrix ans;
    ans.m[1][1]=ans.m[1][3]=0;ans.m[1][2]=1;
    memset(pre,0,sizeof(pre));
    for(int u=1;u<t;u++)
    {
        tmp.cr();
        for(int j=1;j<=3;j++)
        {
            pre[j]+=c[j][u];
            if(pre[j])tmp.m[1][j]=tmp.m[2][j]=tmp.m[3][j]=0;
        }
        tmp=pow_mod(tmp,s[u+1]-s[u]);
        ans=mul(ans,tmp,1,3,3);
    }
    printf("%lld\n",ans.m[1][2]);
    return 0;
}

Codeforces 954G

/*
翻译:
给出一个长度为n的序列,给出值r,k,定义一个sum[i]表示i-r~i+r的和,共有值为k的数可以加入序列中的数里,求min(sum[i])的最大值
如给出长度为5的序列5 4 3 4 9,给定r=0,k=6
那么序列可以变为6 6 5 5 9,得出最优解min(sum[i])=5 
1<=r<=n<=500000,k<=10^18
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
LL k,a[510000],b[510000];
int n,r;
bool chk(LL p)
{
    LL cnt=k,sum=0;
    for(int i=1;i<=n;i++)b[i]=a[i];
    for(int i=1;i<=1+r;i++)sum+=b[i];
    int i=1;
    while(i<=n)
    {
        if(sum<p)
        {
            LL u=p-sum;if(u>cnt)return false;
            b[min(n,i+r)]+=u;cnt-=u;sum=p;
        }
        if(i-r>=1)sum-=b[i-r];
        if(i+1+r<=n)sum+=b[i+1+r];
        i++;
    }
    return true;
}
int main()
{
    scanf("%d%d%I64d",&n,&r,&k);
    for(int i=1;i<=n;i++)scanf("%I64d",&a[i]);
    LL l=0,r=(1LL<<63-1LL),ans;
    while(l<=r)
    {
        LL mid=(l+r)/2;
        if(chk(mid))ans=mid,l=mid+1;
        else r=mid-1;
    }
    printf("%I64d\n",ans);
    return 0;
}

Codeforces 955A

/*
翻译:
给猫喂食,初始饥饿值为H,每分钟增加饥饿值D。商店中每块面包售价cost,补充饥饿值N点。当时间大于等于20:00时售价打八折,求问能把猫喂饱的最少价格 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int hh,mm;
int H,D,N;
double cost;
int main()
{
    scanf("%d%d",&hh,&mm);
    scanf("%d%d%lf%d",&H,&D,&cost,&N);
    double cx,cy;
    double T;
    if(H%N==0)T=(H/N);
    else T=(H/N)+1;
    if(hh<20)cx=cost*T;
    else cx=cost*0.8*T;
    int u=(60*(20-hh-1)+60-mm)*D+H;
    if(u%N==0)T=(u/N);
    else T=(u/N)+1;
    if(hh<20)cy=cost*0.8*T;
    printf("%.4lf\n",min(cx,cy));
    return 0;
}

Codeforces 955B

/*
翻译: 
给出一个串,要求判断这个串能否被拆分成两个部分,这两个部分可以被分成两种不同字母组成的串
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int tmp[110000],u[110000];
char ch[110000];
bool cmp(int n1,int n2){return n1>n2;}
int main()
{
    scanf("%s",ch+1);int len=strlen(ch+1);
    if(len<4){printf("No\n");return 0;}
    for(int i=1;i<=len;i++)tmp[i]=ch[i]-'a'+1;
    sort(tmp+1,tmp+1+len);
    int T=0;
    for(int i=2;i<=len;i++)if(tmp[i]!=tmp[i-1])T++;
    if(T>3 || T==0){printf("No\n");return 0;}
    if(T==3 || T==2){printf("Yes\n");return 0;}
    //不同字符共 2个 
    int maxx=0;
    for(int i=1;i<=len;i++)u[tmp[i]]++,maxx=max(maxx,tmp[i]);
    sort(u+1,u+1+maxx,cmp);
    if(u[1]==1 || u[2]==1)printf("No\n");
    else printf("Yes\n");
    return 0;
}

Codeforces 957A

/*
翻译:
给出一个可能未填满的串以及三种字符,相邻的两位不能填同样的字符,要求能否求出至少两种方案使得满足以上要求 
*/
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
char ch[110];
int main()
{
    int n;
    scanf("%d",&n);
    scanf("%s",ch+1);
    bool bk=true;bool bkk=false;
    for(int i=1;i<n;i++)if(ch[i]==ch[i+1] && ch[i]!='?'){bk=false;break;}
    if(bk==false){printf("No\n");return 0;}
    for(int i=1;i<=n;i++)if(ch[i]=='?')bkk=true;
    if(bkk==false){printf("No\n");return 0;}
    for(int i=1;i<n;i++)if(ch[i]==ch[i+1] && ch[i]=='?'){bk=false;break;}
    if(bk==false){printf("Yes\n");return 0;}
    for(int i=1;i<=n;i++)if(ch[i]=='?' && (ch[i-1]==ch[i+1] || i==1 || i==n)){bk=false;break;}
    if(bk==false)printf("Yes\n");
    else printf("No\n");
    return 0;
}
多agv系统调度的MATLAB仿真 从起点出发,到货物点领取货物最后到卸货点,以完成任务总时间最短为目标进行单目标优化,约束条件为,任务不冲突,路径不冲突,要能实现路径规避 ,4-6台agv一起工作。左右货架间隔可通过1个agv,上下货架间隔可通过两个agv,通道为双向行驶通道。一台agv只能带一个货物,优化目标为完成任务总的时间最短,agv的速度是匀速,转弯也不会减速,取货物时间为固定值。上面的图里面货物看为正方形跟agv一样的长度大小,agv试做是跟货物一样大小的正方形agv的速度是每秒1个车身。多台agv一起完成... 阅读详情

相关推荐

海思HiMPP开发避坑指南:MMZ内存与系统内存傻傻分不清?一个例子讲透

本文深入解析海思HiMPP开发中MMZ内存与系统内存的关键差异与应用场景,帮助开发者避免常见的内存混淆问题。通过实际案例和性能对比,详细介绍了MMZ内存的特性和优化策略,提升多媒体处理效率。

weixin_30772105的博客 468

Codeforces 水题训练(一)

A. Theatre Square #include&lt;cstdio&gt; int main(){ int n,m,a; long long ans,l,w,i,j; scanf("%d%d%d",&amp;n,&amp;m,&amp;a); if(n%a==0) l=n/a; else l=n/a+1; if(m%a==0) w=m/a; else w=m/a+1; ...

天真有邪的博客 605

【MATLAB强化学习工具箱】学习笔记--在Simulink环境中训练智能体Create Simulink Environment and Train Agent

Simulink中便于搭建各类动力学与控制模型,通过将原有的控制器替换为AI控制器,可以方便使用已有模型,提供增量效果。 本节的重点是如何引入Simulink模型作为env,其他的内容在之前的文章中已有说明。 以水箱模型watertank为例,如下图所示: 采用PI控制器,控制效果如下所示: 将此PI控制器替换为神经网络控制器后,系统架构如下图所示: 具体替换策略如下所示: (1)删去PID控制器; (2)增加RL Agent模块; (3)观测器模块: 观测向量为:,其中...

bear_miao的博客 1万+

【Codeforces】1400分以下水题总结

在参加了几个月的codeforces的比赛与补题之后,由于水平有限,终于快达到1400左右的水平了。我也从这几月的经历中了解到自己在代码能力思维能力上的欠缺,想要学习更高级的算法,做一个更资深的分奴,我认为还是要打好基础,抓好细节,此博客就是为了总结和归纳一些自己的收获。 我相信肯定有些人肯定和我有相同的经历,由于比赛中时间和分数带来的心理压力,往往没法再那些签到题,水题上花太多的时间思考最优的解法。就像平时打codeforces,对我来说div2的AB题一般是可以快速求解的,我可能会因为更快的作出题目而用

shroud777的博客 3304

OmniQuant:全方位校准实现大语言模型高效量化与移动端部署

模型量化是一种通过降低模型权重和激活值的数值精度来压缩模型大小、减少内存占用和计算开销的核心技术。其原理在于将高精度浮点数映射到低精度整数表示,从而在保持模型性能的同时,显著提升存储和计算效率。这项技术的价值在于,它使得大规模语言模型能够在消费级硬件和资源受限的移动设备上运行,极大地拓宽了AI应用场景。OmniQuant作为一项前沿的量化技术,通过引入可学习权重裁剪和可学习等价变换机制,实现了对权重分布不均匀和激活值异常值问题的协同优化,从而在极低的比特数下仍能保持优异的模型性能。本文深入探讨了OmniQu

weixin_30719711的博客 485

LTspice元器件库导入与路径管理:符号、模型、子电路全解析

在电子电路仿真中,元器件库通常由符号、模型和子电路三层构成:符号定义引脚外观,模型描述电气行为,子电路封装多端子网络。理解三者职责边界,是解决 LTspice 元器件库导入报错的关键。许多导入失败并非软件问题,而是文件类型错配、路径引用不清或引脚顺序不一致。掌握 `.include` 指令、用户库搜索路径和自制符号绑定模型,可以提升第三方模型复用效率,降低跨项目迁移成本。该思路适用于运放、MOS 管、二极管等器件建模,尤其在 UA741 等经典运放导入场景中,需要先核对 `.subckt` 引脚顺序,再选择

weixin_29182481的博客 181

【开坑】codeforces水题泛做

关于一些水题,思维题,套路dp菜得不行,于是点了个dp-tag,开了这个坑 目前困于水平只限制了1k4到1k8分数段的题,按过题人数降序,1k6+就很虐我了估计放开上限到2k+就受不了了QAQ 由于cf的tag机制,混了一些奇怪的东西不太像dp的题进来,能练手的也尽量写了 总之,为了队友,为了湘潭邀请赛和女生赛,赶紧提高到能独立完成gym3x的程度吧(还是太菜了QAQ 45...

aoy29758的博客 318

快速了解GPU分布通信技术:PCIe、NVLink与NVSwitch

PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准,广泛用于连接计算机的各种硬件设备。PCIe4.0是目前较为先进的版本,提供了高达64GB/s的带宽。InfiniBand是一种用于高性能计算的高速互连技术,通过交换机在节点之间直接创建一个专用的受保护通道。InfiniBand适配器通过PCIe接口连接到CPU,另一端通过InfiniBand网络端口连接到InfiniBand子网。

全世界的博客 7543

Codeforces水题集合[14/未完待续]

Codeforces Round #371 (Div. 2) A. Meeting of Old Friends |B. Filya and Homework A. Meeting of Old Friends  模拟 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;algorithm&...

weixin_33981932的博客 383

使用Python与OpenCV实现基于霍夫变换的圆形缺陷检测与定位详细教程

本文详细探讨了如何使用Python和OpenCV库,通过图像边缘检测和霍夫变换实现圆形对象的检测与缺陷定位。我们不仅介绍了算法的基本原理,还通过具体的代码示例展示了如何在实际应用中实现这些技术。对于工业检测和医学影像分析,本文的方法提供了高效且易于实现的解决方案。随着图像处理技术的不断发展,未来我们可以期待更多新算法和新技术的应用,如深度学习与传统方法的结合,以及多传感器融合技术的引入,这将进一步提升缺陷检测与定位的效率和准确性。

qq_38334677的博客 1297

NVIDIA Isaac Lab 入门教程(一)

Isaac Lab 是一个用于机器人学习的统一模块化框架,旨在简化机器人研究中的常见工作流程(如 RL、从演示中学习和运动规划)。它建立在英伟达 Isaac Sim 的基础上,利用最新的仿真功能实现逼真的场景和快速高效的仿真。该框架的核心目标是Isaac Lab 的主要功能包括:由 PhysX 提供的快速准确的物理模拟、用于矢量化渲染的平铺渲染 API、用于提高鲁棒性和适应性的域随机化,以及对在云中运行的支持。有关该框架的更多信息,请参阅论文[MYY+23]。

机器人控制与仿真应用 8218

CodeForces水题

CodeForces754A 题意: 给一个数组,让你变成1-n,输出变换区间,要求原区间和不为0. 思路: 如果原数组不为0,那就是YES; 如果为0,则从1开始扫过去,碰到不为0时,分两个区间[1,k],[k+1,n] #include<bits/stdc++.h> using namespace std; int a[110]; int main() { ...

weixin_30916125的博客 171

【Pytorch实战教程】基于RML2018的融合网络分类 | LSTM网络和ResNet网络融合 | 含数据集的处理

这段代码是从原始数据中读取所选择的数据,画出星座图,并将星座图保存本地,然后将IQ数据保存成mat文件,将图片数据读取之后保存为npy文件,方便后续融合网络使用。

若北辰 928

刷了几千道算法题,这些我私藏的刷题网站都在这里了!

遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活… 然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝不能自己独享,经过激烈的颅内斗争,我决定把我私藏的十几个 T 的,阿不,十几个刷题网...

Rocky0429 16万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

CodeForces 数学、思维题、图论、刷题记录、题单等

CodeForces 数学、思维题、图论、刷题记录、题单等

青少年趣味编程 4000

NTscan扫描工具

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

超好用的ACM刷题网站,你用过几个?

这里写自定义目录标题超好用的ACM刷题网站,你用过几个?1.hdu2.codeforces3.计蒜客4.落谷5.Virtual Judge 超好用的ACM刷题网站,你用过几个? 一入ACM深似海,从此天天虐成狗。。。 在大佬成堆的世界里踽踽独行QWQ 对于新手来说,刷题可以让你的编程能力飞速提升。当有了一定的积累后,你会发现自己的编程能力已经甩别人一条街了。 废话不多说,上货! 1.hdu 网址...

qq_43929617的博客 3万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Codeforces科学刷题指南

简要介绍如何科学地刷算法题,来提高自己解决问题的能力,并利用爬虫抓取Codeforces的题库,来分析题目难度以及算法分类的关系 无论做什么事,多尝试、找套路、然后刻意练习都是至关重要的。对信息科学竞赛(Olympiad in Informatics)爱好者来说,找套路的关键就是多刷题。然而题海...

越看越喜欢啊 2万+

刷题网站集合

1、leetcode 英文网址:https://leetcode.com/ 中文网址:https://leetcode-cn.com/ 估计 leetcode(力扣)大家都很熟悉了,都被推荐烂了,很多国内外的程序员在上面刷题,难度从 Easy、Medium 至 Hard 都有,据说很多面试官都会从中挑选各种题目,号称大厂的筛码工。 我很早就知道 leetcode,但是直到准备复试闲来无事的时候才在它上面刷了点儿题找感觉,发现上面的题型覆盖很广,像线段树、滑动数组、博弈论、扫描线等都应有具有,但是好像有的测试

代码是程序员的语言,博客是思想的桥梁,连接你我,共享智慧之光。 7531

Topcoder & Codeforces 刷题记录

希望保持每周一次……至少是虚拟比赛的节奏 因为我发现了我不真的比赛根本不想写题 希望各大刷题软件提供“朕已阅”tag Codeforces 1164 Round #559 div 2 我一开始十五分钟没登进去,然后等我登进去发现,比赛没有延时……只有我没登进去………… 看到已经一千多人提交了A我的心情就是orz 然后写了三题第四题写不来。感觉是构造但还是写不来。然后就越想越困………… 第二天服...

Birdcage 886

各大OJ刷题平台汇总

本文介绍了国内外知名的在线编程刷题平台,包括力扣(LeetCode)、洛谷、C语言网、Codeforces、牛客、杭电OJ和ICPC等。这些平台各有特点:力扣支持多语言且有付费服务;洛谷适合新手且有比赛奖励;C语言网适合入门;Codeforces适合高手但访问较慢;牛客与大公司合作提供面试资源;杭电OJ题库丰富但全英文;ICPC则是全球性大学生竞赛。文章建议新手从力扣和洛谷入手,逐步提升算法能力,同时强调刷题需结合经验总结,掌握核心算法才是关键。

沧海一粟 13万+

刷了几千道算法题,我私藏的刷题网站都在这里了

作者 |Rocky0429来源 | Python空间(ID: Devtogether)遥想当年,机缘巧合入了 ACM 的坑,周边巨擘林立,从此过上了"天天被虐似死狗"的生活...然而我是谁,我可是死狗中的战斗鸡,智力不够那刷题来凑,开始了夜以继日哼哧哼哧刷题的日子,从此"读题与提交齐飞, AC 与 WA 一色 ",我惊喜的发现被题虐既刺激又有快感,那一刻我泪流满面。这么好的事儿作为一个正直的人绝...

AI科技大本营 3543

20240424codeforces刷题题解

240424刷题题解 Walk on Matrix CodeForces - 1332D 思路 构造题,每个dpi,jdp_{i,j}dpi,j​​​都是由其左上方向中的按位与最大值决定的。 我们需要从使得贪心解与正确解的差值为kkk。 为了方便获得kkk,可以考虑构造一个贪心解为000的矩阵。 写出例二的二进制表示 观察可知左边界上的数只能由其上方的数决定(上边界同理)。 由按位与的性质可知,2n−12^{n}-12n−1即1111111…1111111\ldots1111111…这种形式的数按位与任

Lazy_ChessPlayer的博客 1235

如何高效刷题

比如掌握某个算法(如贪心、二分查找),或在比赛中稳定解决某个难度级别的题目(如 Div.2 的 B 题)。:在掌握基础后,尝试更高难度的题目(如 Codeforces 1400-1800 分)。:先刷难度较低的题目(如 Codeforces 800-1200 分),逐步提高难度。:根据目标选择相关知识点(如动态规划、图论、贪心等),集中刷题。:在解决题目后,对比自己的思路和题解的思路,找出差距。:如果自己的解法时间复杂度较高,学习题解中的优化方法。:在比赛中无法解决某些题目是正常的,重要的是从中学习。

Eternitypower的博客 2593

Codeforces刷题记录

Codeforces刷题记录

〜( ̄△ ̄〜) yy 825

Python刷题网站怎么选?这5个高含金量平台你必须知道

Python程序员节刷题网站怎么选?本文推荐5个高含金量平台,涵盖算法训练、面试真题与实战项目,助你高效提升编程能力。适合备考大厂、备战程序员节技术挑战,精选平台支持在线调试与学习路径规划,值得收藏。

FuncInk的博客 838

【Codeforces 1288B】水题

题目链接:https://codeforces.ml/contest/1288/problem/A 这篇博客主要是为了通过这道水题来总结归纳更多的技巧和细节,这里我就直接引用官方的题意解释和题解了: 这题给我带来的思考就是如何能求1~n之间那些每一位都是9的数,例如9,99,99999; 最暴力的做法应该是从1~n枚举每一个数,并暴力拆解,如果每位都是9,计数器+1; bool check(int n){ while(n){ if(n%10!=9) return false; n/=10; }

shroud777的博客 523
上一篇: [bzoj4260][Tire]Codechef REBXOR
下一篇: [bzoj4419][乱搞]发微博
Rose_max
博客等级 码龄10年 97粉丝 610原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值